summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/app_sync_data_unittest.cc
diff options
context:
space:
mode:
authorcsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 13:48:20 +0000
committercsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 13:48:20 +0000
commit5db9adad6560d8097712114ebee730be072d97f9 (patch)
tree87d2a6f637d16ea49d441ec79c378087284a9d7f /chrome/browser/extensions/app_sync_data_unittest.cc
parent12aea7f4b5963426318368b50d1813f5ea159b2e (diff)
downloadchromium_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.cc119
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