Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/browser/policy/asynchronous_policy_loader.h" | 8 #include "chrome/browser/policy/asynchronous_policy_loader.h" |
| 9 #include "chrome/browser/policy/asynchronous_policy_provider.h" | 9 #include "chrome/browser/policy/asynchronous_policy_provider.h" |
| 10 #include "chrome/browser/policy/asynchronous_policy_test_base.h" | 10 #include "chrome/browser/policy/asynchronous_policy_test_base.h" |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 36 scoped_ptr<PolicyBundle> bundle_; | 36 scoped_ptr<PolicyBundle> bundle_; |
| 37 | 37 |
| 38 private: | 38 private: |
| 39 void UpdateCallback(scoped_ptr<PolicyBundle> bundle) { | 39 void UpdateCallback(scoped_ptr<PolicyBundle> bundle) { |
| 40 bundle_.swap(bundle); | 40 bundle_.swap(bundle); |
| 41 } | 41 } |
| 42 | 42 |
| 43 DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoaderTest); | 43 DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoaderTest); |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 ACTION(CreateTestPolicyMap) { | 46 ACTION(CreateTestPolicyBundle) { |
| 47 return new PolicyMap(); | 47 return new PolicyBundle(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 ACTION_P(CreateSequencedTestPolicyMap, number) { | 50 ACTION_P(CreateSequencedTestPolicyBundle, number) { |
| 51 PolicyMap* test_policy_map = new PolicyMap(); | 51 PolicyBundle* bundle = new PolicyBundle(); |
| 52 test_policy_map->Set("id", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 52 bundle->Get(POLICY_DOMAIN_CHROME, "") |
| 53 Value::CreateIntegerValue(++(*number))); | 53 .Set("id", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 54 return test_policy_map; | 54 base::Value::CreateIntegerValue(++(*number))); |
| 55 return bundle; | |
| 55 } | 56 } |
| 56 | 57 |
| 57 TEST_F(AsynchronousPolicyLoaderTest, InitialLoad) { | 58 TEST_F(AsynchronousPolicyLoaderTest, InitialLoad) { |
| 58 PolicyMap template_policy; | 59 PolicyBundle template_bundle; |
| 59 template_policy.Set("test", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 60 template_bundle.Get(POLICY_DOMAIN_CHROME, "") |
| 60 Value::CreateIntegerValue(123)); | 61 .Set("test", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 61 PolicyMap* result = new PolicyMap(); | 62 base::Value::CreateIntegerValue(123)); |
| 62 result->CopyFrom(template_policy); | 63 template_bundle.Get(POLICY_DOMAIN_EXTENSIONS, "extension-id") |
| 64 .Set("test", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
| 65 base::Value::CreateIntegerValue(123)); | |
| 66 PolicyBundle* result = new PolicyBundle(); | |
| 67 result->CopyFrom(template_bundle); | |
| 63 ProviderDelegateMock* delegate = new ProviderDelegateMock(); | 68 ProviderDelegateMock* delegate = new ProviderDelegateMock(); |
| 64 EXPECT_CALL(*delegate, Load()).WillOnce(Return(result)); | 69 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(result)); |
|
Mattias Nissler (ping if slow)
2012/05/14 16:55:59
It feels brittle to pass a pointer that's to-be-ow
Joao da Silva
2012/05/15 13:07:05
I wanted to keep MockLoad() similar to the functio
| |
| 65 scoped_refptr<AsynchronousPolicyLoader> loader = | 70 scoped_refptr<AsynchronousPolicyLoader> loader = |
| 66 new AsynchronousPolicyLoader(delegate, 10); | 71 new AsynchronousPolicyLoader(delegate, 10); |
| 67 EXPECT_FALSE(bundle_.get()); | 72 EXPECT_FALSE(bundle_.get()); |
| 68 loader->Init(update_callback_); | 73 loader->Init(update_callback_); |
| 69 ASSERT_TRUE(bundle_.get()); | 74 ASSERT_TRUE(bundle_.get()); |
| 70 const PolicyMap& chrome_policy = | 75 EXPECT_TRUE(bundle_->Equals(template_bundle)); |
| 71 bundle_->Get(POLICY_DOMAIN_CHROME, std::string()); | |
| 72 EXPECT_TRUE(chrome_policy.Equals(template_policy)); | |
| 73 } | 76 } |
| 74 | 77 |
| 75 // Verify that the fallback policy requests are made. | 78 // Verify that the fallback policy requests are made. |
| 76 TEST_F(AsynchronousPolicyLoaderTest, InitialLoadWithFallback) { | 79 TEST_F(AsynchronousPolicyLoaderTest, InitialLoadWithFallback) { |
| 77 int policy_number = 0; | 80 int policy_number = 0; |
| 78 InSequence s; | 81 InSequence s; |
| 79 ProviderDelegateMock* delegate = new ProviderDelegateMock(); | 82 ProviderDelegateMock* delegate = new ProviderDelegateMock(); |
| 80 EXPECT_CALL(*delegate, Load()).WillOnce( | 83 EXPECT_CALL(*delegate, MockLoad()).WillOnce( |
| 81 CreateSequencedTestPolicyMap(&policy_number)); | 84 CreateSequencedTestPolicyBundle(&policy_number)); |
| 82 EXPECT_CALL(*delegate, Load()).WillOnce( | 85 EXPECT_CALL(*delegate, MockLoad()).WillOnce( |
| 83 CreateSequencedTestPolicyMap(&policy_number)); | 86 CreateSequencedTestPolicyBundle(&policy_number)); |
| 84 scoped_refptr<AsynchronousPolicyLoader> loader = | 87 scoped_refptr<AsynchronousPolicyLoader> loader = |
| 85 new AsynchronousPolicyLoader(delegate, 10); | 88 new AsynchronousPolicyLoader(delegate, 10); |
| 86 loader->Init(update_callback_); | 89 loader->Init(update_callback_); |
| 87 loop_.RunAllPending(); | 90 loop_.RunAllPending(); |
| 88 loader->Reload(true); | 91 loader->Reload(true); |
| 89 loop_.RunAllPending(); | 92 loop_.RunAllPending(); |
| 90 | 93 |
| 91 const PolicyMap& chrome_policy = | 94 const PolicyMap& chrome_policy = |
| 92 bundle_->Get(POLICY_DOMAIN_CHROME, std::string()); | 95 bundle_->Get(POLICY_DOMAIN_CHROME, std::string()); |
| 93 base::FundamentalValue expected(policy_number); | 96 base::FundamentalValue expected(policy_number); |
| 94 EXPECT_TRUE(Value::Equals(&expected, chrome_policy.GetValue("id"))); | 97 EXPECT_TRUE(base::Value::Equals(&expected, chrome_policy.GetValue("id"))); |
| 95 EXPECT_EQ(1U, chrome_policy.size()); | 98 EXPECT_EQ(1U, chrome_policy.size()); |
| 96 } | 99 } |
| 97 | 100 |
| 98 // Ensure that calling stop on the loader stops subsequent reloads from | 101 // Ensure that calling stop on the loader stops subsequent reloads from |
| 99 // happening. | 102 // happening. |
| 100 TEST_F(AsynchronousPolicyLoaderTest, Stop) { | 103 TEST_F(AsynchronousPolicyLoaderTest, Stop) { |
| 101 ProviderDelegateMock* delegate = new ProviderDelegateMock(); | 104 ProviderDelegateMock* delegate = new ProviderDelegateMock(); |
| 102 ON_CALL(*delegate, Load()).WillByDefault(CreateTestPolicyMap()); | 105 ON_CALL(*delegate, MockLoad()).WillByDefault(CreateTestPolicyBundle()); |
| 103 EXPECT_CALL(*delegate, Load()).Times(1); | 106 EXPECT_CALL(*delegate, MockLoad()).Times(1); |
| 104 scoped_refptr<AsynchronousPolicyLoader> loader = | 107 scoped_refptr<AsynchronousPolicyLoader> loader = |
| 105 new AsynchronousPolicyLoader(delegate, 10); | 108 new AsynchronousPolicyLoader(delegate, 10); |
| 106 loader->Init(update_callback_); | 109 loader->Init(update_callback_); |
| 107 loop_.RunAllPending(); | 110 loop_.RunAllPending(); |
| 108 loader->Stop(); | 111 loader->Stop(); |
| 109 loop_.RunAllPending(); | 112 loop_.RunAllPending(); |
| 110 loader->Reload(true); | 113 loader->Reload(true); |
| 111 loop_.RunAllPending(); | 114 loop_.RunAllPending(); |
| 112 } | 115 } |
| 113 | 116 |
| 114 // Verifies that the provider is notified upon policy reload. | 117 // Verifies that the provider is notified upon policy reload. |
| 115 TEST_F(AsynchronousPolicyLoaderTest, ProviderNotificationOnPolicyChange) { | 118 TEST_F(AsynchronousPolicyLoaderTest, ProviderNotificationOnPolicyChange) { |
| 116 InSequence s; | 119 InSequence s; |
| 117 MockConfigurationPolicyObserver observer; | 120 MockConfigurationPolicyObserver observer; |
| 118 int policy_number_1 = 0; | 121 int policy_number_1 = 0; |
| 119 int policy_number_2 = 0; | 122 int policy_number_2 = 0; |
| 120 | 123 |
| 121 ProviderDelegateMock* delegate = new ProviderDelegateMock(); | 124 ProviderDelegateMock* delegate = new ProviderDelegateMock(); |
| 122 EXPECT_CALL(*delegate, Load()).WillOnce( | 125 EXPECT_CALL(*delegate, MockLoad()).WillOnce( |
| 123 CreateSequencedTestPolicyMap(&policy_number_1)); | 126 CreateSequencedTestPolicyBundle(&policy_number_1)); |
| 124 | 127 |
| 125 scoped_refptr<AsynchronousPolicyLoader> loader = | 128 scoped_refptr<AsynchronousPolicyLoader> loader = |
| 126 new AsynchronousPolicyLoader(delegate, 10); | 129 new AsynchronousPolicyLoader(delegate, 10); |
| 127 AsynchronousPolicyProvider provider(NULL, loader); | 130 AsynchronousPolicyProvider provider(NULL, loader); |
| 128 // |registrar| must be declared last so that it is destroyed first. | 131 // |registrar| must be declared last so that it is destroyed first. |
| 129 ConfigurationPolicyObserverRegistrar registrar; | 132 ConfigurationPolicyObserverRegistrar registrar; |
| 130 registrar.Init(&provider, &observer); | 133 registrar.Init(&provider, &observer); |
| 131 Mock::VerifyAndClearExpectations(delegate); | 134 Mock::VerifyAndClearExpectations(delegate); |
| 132 | 135 |
| 133 EXPECT_CALL(*delegate, Load()).WillOnce( | 136 EXPECT_CALL(*delegate, MockLoad()).WillOnce( |
| 134 CreateSequencedTestPolicyMap(&policy_number_2)); | 137 CreateSequencedTestPolicyBundle(&policy_number_2)); |
| 135 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1); | 138 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1); |
| 136 provider.RefreshPolicies(); | 139 provider.RefreshPolicies(); |
| 137 loop_.RunAllPending(); | 140 loop_.RunAllPending(); |
| 138 Mock::VerifyAndClearExpectations(delegate); | 141 Mock::VerifyAndClearExpectations(delegate); |
| 139 Mock::VerifyAndClearExpectations(&observer); | 142 Mock::VerifyAndClearExpectations(&observer); |
| 140 | 143 |
| 141 EXPECT_CALL(*delegate, Load()).WillOnce( | 144 EXPECT_CALL(*delegate, MockLoad()).WillOnce( |
| 142 CreateSequencedTestPolicyMap(&policy_number_1)); | 145 CreateSequencedTestPolicyBundle(&policy_number_1)); |
| 143 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1); | 146 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1); |
| 144 provider.RefreshPolicies(); | 147 provider.RefreshPolicies(); |
| 145 loop_.RunAllPending(); | 148 loop_.RunAllPending(); |
| 146 Mock::VerifyAndClearExpectations(delegate); | 149 Mock::VerifyAndClearExpectations(delegate); |
| 147 Mock::VerifyAndClearExpectations(&observer); | 150 Mock::VerifyAndClearExpectations(&observer); |
| 148 } | 151 } |
| 149 | 152 |
| 150 } // namespace policy | 153 } // namespace policy |
| OLD | NEW |