supervised_user_shared_settings_update_unittest.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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 "base/bind.h" 6#include "base/memory/scoped_ptr.h" 7#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h" 8#include "chrome/browser/supervised_user/supervised_user_shared_settings_update.h" 9#include "chrome/test/base/testing_profile.h" 10#include "sync/api/sync_change.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13class SupervisedUserSharedSettingsUpdateTest : public testing::Test { 14 public: 15 SupervisedUserSharedSettingsUpdateTest() : service_(profile_.GetPrefs()) {} 16 virtual ~SupervisedUserSharedSettingsUpdateTest() {} 17 18 void OnSettingUpdated(bool success) { 19 result_.reset(new bool(success)); 20 } 21 22 protected: 23 TestingProfile profile_; 24 SupervisedUserSharedSettingsService service_; 25 scoped_ptr<bool> result_; 26}; 27 28TEST_F(SupervisedUserSharedSettingsUpdateTest, Success) { 29 SupervisedUserSharedSettingsUpdate update( 30 &service_, 31 "abcdef", 32 "name", 33 scoped_ptr<base::Value>(new base::StringValue("Hans Moleman")), 34 base::Bind(&SupervisedUserSharedSettingsUpdateTest::OnSettingUpdated, 35 base::Unretained(this))); 36 syncer::SyncChangeList changes; 37 changes.push_back(syncer::SyncChange( 38 FROM_HERE, 39 syncer::SyncChange::ACTION_UPDATE, 40 SupervisedUserSharedSettingsService::CreateSyncDataForSetting( 41 "abcdef", "name", base::StringValue("Hans Moleman"), true))); 42 syncer::SyncError error = service_.ProcessSyncChanges(FROM_HERE, changes); 43 EXPECT_FALSE(error.IsSet()) << error.ToString(); 44 ASSERT_TRUE(result_); 45 EXPECT_TRUE(*result_); 46} 47 48TEST_F(SupervisedUserSharedSettingsUpdateTest, Failure) { 49 SupervisedUserSharedSettingsUpdate update( 50 &service_, 51 "abcdef", 52 "name", 53 scoped_ptr<base::Value>(new base::StringValue("Hans Moleman")), 54 base::Bind(&SupervisedUserSharedSettingsUpdateTest::OnSettingUpdated, 55 base::Unretained(this))); 56 57 // Syncing down a different change will cause the update to fail. 58 syncer::SyncChangeList changes; 59 changes.push_back(syncer::SyncChange( 60 FROM_HERE, 61 syncer::SyncChange::ACTION_UPDATE, 62 SupervisedUserSharedSettingsService::CreateSyncDataForSetting( 63 "abcdef", 64 "name", 65 base::StringValue("Barney Gumble"), 66 true))); 67 syncer::SyncError error = service_.ProcessSyncChanges(FROM_HERE, changes); 68 EXPECT_FALSE(error.IsSet()) << error.ToString(); 69 ASSERT_TRUE(result_); 70 EXPECT_FALSE(*result_); 71} 72 73TEST_F(SupervisedUserSharedSettingsUpdateTest, Cancel) { 74 { 75 SupervisedUserSharedSettingsUpdate update( 76 &service_, 77 "abcdef", 78 "name", 79 scoped_ptr<base::Value>(new base::StringValue("Hans Moleman")), 80 base::Bind(&SupervisedUserSharedSettingsUpdateTest::OnSettingUpdated, 81 base::Unretained(this))); 82 ASSERT_FALSE(result_); 83 } 84 ASSERT_FALSE(result_); 85} 86