1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/extensions/extension_sync_data.h" 6 7#include "base/files/file_path.h" 8#include "base/memory/scoped_ptr.h" 9#include "base/version.h" 10#include "sync/protocol/extension_specifics.pb.h" 11#include "sync/protocol/sync.pb.h" 12#include "testing/gtest/include/gtest/gtest.h" 13#include "url/gurl.h" 14 15namespace { 16 17#if defined(OS_WIN) 18const base::FilePath::CharType kExtensionFilePath[] = 19 FILE_PATH_LITERAL("c:\\foo"); 20#elif defined(OS_POSIX) 21const base::FilePath::CharType kExtensionFilePath[] = FILE_PATH_LITERAL("/foo"); 22#endif 23 24const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop"; 25const char kValidVersion[] = "0.0.0.0"; 26const char kVersion1[] = "1.0.0.1"; 27const char kVersion2[] = "1.0.1.0"; 28const char kVersion3[] = "1.1.0.0"; 29const char kValidUpdateUrl1[] = 30 "http://clients2.google.com/service/update2/crx"; 31const char kValidUpdateUrl2[] = 32 "https://clients2.google.com/service/update2/crx"; 33const char kName[] = "MyExtension"; 34const char kName2[] = "MyExtension2"; 35 36class ExtensionSyncDataTest : public testing::Test { 37}; 38 39TEST_F(ExtensionSyncDataTest, SyncDataToExtensionSyncDataForExtension) { 40 sync_pb::EntitySpecifics entity; 41 sync_pb::ExtensionSpecifics* extension_specifics = entity.mutable_extension(); 42 extension_specifics->set_id(kValidId); 43 extension_specifics->set_update_url(kValidUpdateUrl2); 44 extension_specifics->set_enabled(false); 45 extension_specifics->set_incognito_enabled(true); 46 extension_specifics->set_version(kVersion1); 47 extension_specifics->set_name(kName); 48 syncer::SyncData sync_data = 49 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); 50 51 extensions::ExtensionSyncData extension_sync_data(sync_data); 52 EXPECT_EQ(extension_specifics->id(), extension_sync_data.id()); 53 EXPECT_EQ(extension_specifics->version(), 54 extension_sync_data.version().GetString()); 55 EXPECT_EQ(extension_specifics->update_url(), 56 extension_sync_data.update_url().spec()); 57 EXPECT_EQ(extension_specifics->enabled(), extension_sync_data.enabled()); 58 EXPECT_EQ(extension_specifics->incognito_enabled(), 59 extension_sync_data.incognito_enabled()); 60 EXPECT_EQ(extension_specifics->name(), extension_sync_data.name()); 61 EXPECT_FALSE(extension_sync_data.uninstalled()); 62} 63 64TEST_F(ExtensionSyncDataTest, ExtensionSyncDataToSyncDataForExtension) { 65 sync_pb::EntitySpecifics entity; 66 sync_pb::ExtensionSpecifics* input_extension = entity.mutable_extension(); 67 input_extension->set_id(kValidId); 68 input_extension->set_update_url(kValidUpdateUrl2); 69 input_extension->set_enabled(true); 70 input_extension->set_incognito_enabled(false); 71 input_extension->set_version(kVersion1); 72 input_extension->set_name(kName); 73 syncer::SyncData sync_data = 74 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); 75 extensions::ExtensionSyncData extension_sync_data(sync_data); 76 77 syncer::SyncData output_sync_data = extension_sync_data.GetSyncData(); 78 const sync_pb::ExtensionSpecifics& output_specifics = 79 output_sync_data.GetSpecifics().extension(); 80 EXPECT_EQ(extension_sync_data.id(), output_specifics.id()); 81 EXPECT_EQ(extension_sync_data.update_url().spec(), 82 output_specifics.update_url()); 83 EXPECT_EQ(extension_sync_data.enabled(), output_specifics.enabled()); 84 EXPECT_EQ(extension_sync_data.incognito_enabled(), 85 output_specifics.incognito_enabled()); 86 EXPECT_EQ(extension_sync_data.version().GetString(), 87 output_specifics.version()); 88 EXPECT_EQ(extension_sync_data.name(), output_specifics.name()); 89} 90 91} // namespace 92