15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string>
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/prefs/pref_service.h"
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_constants.h"
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_pref_mapping_service.h"
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_pref_mapping_service_factory.h"
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/common/pref_names.h"
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)const char kFakeSupervisedUserId[] = "fakeID";
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SupervisedUserPrefMappingServiceTest : public ::testing::Test {
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected:
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SupervisedUserPrefMappingServiceTest() {
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    profile_.GetPrefs()->SetString(prefs::kSupervisedUserId,
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                   kFakeSupervisedUserId);
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    shared_settings_service_ =
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext(
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            &profile_);
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    mapping_service_ =
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        SupervisedUserPrefMappingServiceFactory::GetForBrowserContext(
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            &profile_);
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~SupervisedUserPrefMappingServiceTest() {}
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // testing::Test overrides:
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void SetUp() OVERRIDE {
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    mapping_service_->Init();
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void TearDown() OVERRIDE {
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    mapping_service_->Shutdown();
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    shared_settings_service_->Shutdown();
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TestingProfile profile_;
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  SupervisedUserSharedSettingsService* shared_settings_service_;
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SupervisedUserPrefMappingService* mapping_service_;
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(SupervisedUserPrefMappingServiceTest, CheckPrefUpdate) {
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(shared_settings_service_->GetValue(
50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  kFakeSupervisedUserId,
51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  supervised_users::kChromeAvatarIndex) == NULL);
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  profile_.GetPrefs()->SetInteger(prefs::kProfileAvatarIndex, 4);
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  const base::Value* value = shared_settings_service_->GetValue(
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      kFakeSupervisedUserId, supervised_users::kChromeAvatarIndex);
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  int avatar_index;
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  value->GetAsInteger(&avatar_index);
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(avatar_index, 4);
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(SupervisedUserPrefMappingServiceTest, CheckSharedSettingUpdate) {
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(profile_.GetPrefs()->GetInteger(prefs::kProfileAvatarIndex), -1);
62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  shared_settings_service_->SetValue(kFakeSupervisedUserId,
63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     supervised_users::kChromeAvatarIndex,
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                     base::FundamentalValue(1));
65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  mapping_service_->OnSharedSettingChanged(
66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      kFakeSupervisedUserId,
67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      supervised_users::kChromeAvatarIndex);
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(profile_.GetPrefs()->GetInteger(prefs::kProfileAvatarIndex), 1);
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
70