15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_sync_data.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/version.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/extension_specifics.pb.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/protocol/sync.pb.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop";
1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)const char kVersion[] = "1.0.0.1";
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)const char kValidUpdateUrl[] =
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "https://clients2.google.com/service/update2/crx";
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kName[] = "MyExtension";
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionSyncDataTest : public testing::Test {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ExtensionSyncDataTest, SyncDataToExtensionSyncDataForExtension) {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::EntitySpecifics entity;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::ExtensionSpecifics* extension_specifics = entity.mutable_extension();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extension_specifics->set_id(kValidId);
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  extension_specifics->set_update_url(kValidUpdateUrl);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extension_specifics->set_enabled(false);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extension_specifics->set_incognito_enabled(true);
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  extension_specifics->set_version(kVersion);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extension_specifics->set_name(kName);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  syncer::SyncData sync_data =
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extensions::ExtensionSyncData extension_sync_data(sync_data);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->id(), extension_sync_data.id());
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->version(),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            extension_sync_data.version().GetString());
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->update_url(),
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            extension_sync_data.update_url().spec());
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->enabled(), extension_sync_data.enabled());
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->incognito_enabled(),
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            extension_sync_data.incognito_enabled());
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_specifics->name(), extension_sync_data.name());
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(extension_sync_data.uninstalled());
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ExtensionSyncDataTest, ExtensionSyncDataToSyncDataForExtension) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::EntitySpecifics entity;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::ExtensionSpecifics* input_extension = entity.mutable_extension();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  input_extension->set_id(kValidId);
5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  input_extension->set_update_url(kValidUpdateUrl);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  input_extension->set_enabled(true);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  input_extension->set_incognito_enabled(false);
5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  input_extension->set_version(kVersion);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  input_extension->set_name(kName);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  syncer::SyncData sync_data =
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extensions::ExtensionSyncData extension_sync_data(sync_data);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  syncer::SyncData output_sync_data = extension_sync_data.GetSyncData();
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const sync_pb::ExtensionSpecifics& output_specifics =
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output_sync_data.GetSpecifics().extension();
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.id(), output_specifics.id());
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.update_url().spec(),
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            output_specifics.update_url());
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.enabled(), output_specifics.enabled());
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.incognito_enabled(),
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            output_specifics.incognito_enabled());
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.version().GetString(),
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            output_specifics.version());
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(extension_sync_data.name(), output_specifics.name());
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
79