diff options
author | csharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-11 13:48:20 +0000 |
---|---|---|
committer | csharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-11 13:48:20 +0000 |
commit | 5db9adad6560d8097712114ebee730be072d97f9 (patch) | |
tree | 87d2a6f637d16ea49d441ec79c378087284a9d7f /chrome/browser/extensions/app_sync_data_unittest.cc | |
parent | 12aea7f4b5963426318368b50d1813f5ea159b2e (diff) | |
download | chromium_src-5db9adad6560d8097712114ebee730be072d97f9.zip chromium_src-5db9adad6560d8097712114ebee730be072d97f9.tar.gz chromium_src-5db9adad6560d8097712114ebee730be072d97f9.tar.bz2 |
Create New AppSyncData Class
Remove the application specific functionality from ExtensionSyncData and move it into its own new class.
BUG=107729
TEST=All ExtensionSyncData and AppSyncData unit tests pass
Review URL: http://codereview.chromium.org/9701076
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131760 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/app_sync_data_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/app_sync_data_unittest.cc | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/chrome/browser/extensions/app_sync_data_unittest.cc b/chrome/browser/extensions/app_sync_data_unittest.cc new file mode 100644 index 0000000..0a86964 --- /dev/null +++ b/chrome/browser/extensions/app_sync_data_unittest.cc @@ -0,0 +1,119 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/extensions/app_sync_data.h" + +#include "sync/protocol/app_specifics.pb.h" +#include "sync/protocol/sync.pb.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace extensions { + +namespace { + +const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop"; +const char kName[] = "MyExtension"; +const char kValidVersion[] = "0.0.0.0"; +const char kValidUpdateUrl[] = + "http://clients2.google.com/service/update2/crx"; +const char kOAuthClientId[] = "1234abcd"; + +} // namespace + +class AppSyncDataTest : public testing::Test { + public: + AppSyncDataTest() {} + virtual ~AppSyncDataTest() {} + + void SetRequiredExtensionValues( + sync_pb::ExtensionSpecifics* extension_specifics) { + extension_specifics->set_id(kValidId); + extension_specifics->set_update_url(kValidUpdateUrl); + extension_specifics->set_version(kValidVersion); + extension_specifics->set_enabled(false); + extension_specifics->set_incognito_enabled(true); + extension_specifics->set_name(kName); + } +}; + +TEST_F(AppSyncDataTest, SyncDataToExtensionSyncDataForApp) { + sync_pb::EntitySpecifics entity; + sync_pb::AppSpecifics* app_specifics = entity.mutable_app(); + app_specifics->set_app_launch_ordinal( + StringOrdinal::CreateInitialOrdinal().ToString()); + app_specifics->set_page_ordinal( + StringOrdinal::CreateInitialOrdinal().ToString()); + sync_pb::AppNotificationSettings* notif_settings = + app_specifics->mutable_notification_settings(); + notif_settings->set_oauth_client_id(kOAuthClientId); + notif_settings->set_disabled(true); + + SetRequiredExtensionValues(app_specifics->mutable_extension()); + + SyncData sync_data = + SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); + + AppSyncData app_sync_data(sync_data); + EXPECT_EQ(app_specifics->app_launch_ordinal(), + app_sync_data.app_launch_ordinal().ToString()); + EXPECT_EQ(app_specifics->page_ordinal(), + app_sync_data.page_ordinal().ToString()); + EXPECT_EQ(notif_settings->oauth_client_id(), + app_sync_data.notifications_client_id()); + EXPECT_EQ(notif_settings->disabled(), + app_sync_data.notifications_disabled()); +} + + + +TEST_F(AppSyncDataTest, ExtensionSyncDataToSyncDataForApp) { + sync_pb::EntitySpecifics entity; + sync_pb::AppSpecifics* input_specifics = entity.mutable_app(); + input_specifics->set_app_launch_ordinal( + StringOrdinal::CreateInitialOrdinal().ToString()); + input_specifics->set_page_ordinal( + StringOrdinal::CreateInitialOrdinal().ToString()); + sync_pb::AppNotificationSettings* notif_settings = + input_specifics->mutable_notification_settings(); + notif_settings->set_oauth_client_id(kOAuthClientId); + notif_settings->set_disabled(true); + + SetRequiredExtensionValues(input_specifics->mutable_extension()); + + SyncData sync_data = + SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); + AppSyncData app_sync_data(sync_data); + + SyncData output_sync_data = app_sync_data.GetSyncData(); + EXPECT_TRUE(sync_data.GetSpecifics().has_app()); + const sync_pb::AppSpecifics& output_specifics = + output_sync_data.GetSpecifics().app(); + EXPECT_EQ(input_specifics->SerializeAsString(), + output_specifics.SerializeAsString()); +} + +// Ensures that invalid StringOrdinals don't break ExtensionSyncData. +TEST_F(AppSyncDataTest, ExtensionSyncDataInvalidOrdinal) { + sync_pb::EntitySpecifics entity; + sync_pb::AppSpecifics* app_specifics = entity.mutable_app(); + // Set the ordinals as invalid. + app_specifics->set_app_launch_ordinal(""); + app_specifics->set_page_ordinal(""); + + sync_pb::AppNotificationSettings* notif_settings = + app_specifics->mutable_notification_settings(); + notif_settings->set_oauth_client_id(kOAuthClientId); + notif_settings->set_disabled(true); + + SetRequiredExtensionValues(app_specifics->mutable_extension()); + + SyncData sync_data = + SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); + + // There should be no issue loading the sync data. + AppSyncData app_sync_data(sync_data); + app_sync_data.GetSyncData(); +} + +} // namespace extensions |