1// Copyright 2014 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 <string>
6
7#include "base/prefs/pref_service.h"
8#include "chrome/browser/supervised_user/supervised_user_constants.h"
9#include "chrome/browser/supervised_user/supervised_user_pref_mapping_service.h"
10#include "chrome/browser/supervised_user/supervised_user_pref_mapping_service_factory.h"
11#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
12#include "chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h"
13#include "chrome/common/pref_names.h"
14#include "chrome/test/base/testing_profile.h"
15#include "testing/gtest/include/gtest/gtest.h"
16
17const char kFakeSupervisedUserId[] = "fakeID";
18
19class SupervisedUserPrefMappingServiceTest : public ::testing::Test {
20 protected:
21  SupervisedUserPrefMappingServiceTest() {
22    profile_.GetPrefs()->SetString(prefs::kSupervisedUserId,
23                                   kFakeSupervisedUserId);
24    shared_settings_service_ =
25        SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext(
26            &profile_);
27    mapping_service_ =
28        SupervisedUserPrefMappingServiceFactory::GetForBrowserContext(
29            &profile_);
30  }
31  virtual ~SupervisedUserPrefMappingServiceTest() {}
32
33  // testing::Test overrides:
34  virtual void SetUp() OVERRIDE {
35    mapping_service_->Init();
36  }
37
38  virtual void TearDown() OVERRIDE {
39    mapping_service_->Shutdown();
40    shared_settings_service_->Shutdown();
41  }
42
43  TestingProfile profile_;
44  SupervisedUserSharedSettingsService* shared_settings_service_;
45  SupervisedUserPrefMappingService* mapping_service_;
46};
47
48TEST_F(SupervisedUserPrefMappingServiceTest, CheckPrefUpdate) {
49  EXPECT_TRUE(shared_settings_service_->GetValue(
50                  kFakeSupervisedUserId,
51                  supervised_users::kChromeAvatarIndex) == NULL);
52  profile_.GetPrefs()->SetInteger(prefs::kProfileAvatarIndex, 4);
53  const base::Value* value = shared_settings_service_->GetValue(
54      kFakeSupervisedUserId, supervised_users::kChromeAvatarIndex);
55  int avatar_index;
56  value->GetAsInteger(&avatar_index);
57  EXPECT_EQ(avatar_index, 4);
58}
59
60TEST_F(SupervisedUserPrefMappingServiceTest, CheckSharedSettingUpdate) {
61  EXPECT_EQ(profile_.GetPrefs()->GetInteger(prefs::kProfileAvatarIndex), -1);
62  shared_settings_service_->SetValue(kFakeSupervisedUserId,
63                                     supervised_users::kChromeAvatarIndex,
64                                     base::FundamentalValue(1));
65  mapping_service_->OnSharedSettingChanged(
66      kFakeSupervisedUserId,
67      supervised_users::kChromeAvatarIndex);
68  EXPECT_EQ(profile_.GetPrefs()->GetInteger(prefs::kProfileAvatarIndex), 1);
69}
70