Index: chrome/browser/chromeos/login/signed_settings_unittest.cc |
diff --git a/chrome/browser/chromeos/login/signed_settings_unittest.cc b/chrome/browser/chromeos/login/signed_settings_unittest.cc |
index 36896cdacef042b60bf1e127f3cad9c56707aca0..28c210dab0dac798700a11bd9081d68ca1535319 100644 |
--- a/chrome/browser/chromeos/login/signed_settings_unittest.cc |
+++ b/chrome/browser/chromeos/login/signed_settings_unittest.cc |
@@ -4,10 +4,7 @@ |
#include "chrome/browser/chromeos/login/signed_settings.h" |
-#include "base/file_util.h" |
#include "base/logging.h" |
-#include "base/scoped_temp_dir.h" |
-#include "base/stringprintf.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
#include "chrome/browser/chromeos/cros/mock_library_loader.h" |
#include "chrome/browser/chromeos/cros_settings_names.h" |
@@ -19,7 +16,6 @@ |
#include "chrome/browser/policy/proto/chrome_device_policy.pb.h" |
#include "chrome/browser/policy/proto/device_management_backend.pb.h" |
#include "content/test/test_browser_thread.h" |
-#include "crypto/rsa_private_key.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -83,19 +79,6 @@ class NormalDelegate : public DummyDelegate<T> { |
} |
}; |
-// Specialized version for Value objects because these compare differently. |
-class PolicyDelegate : public DummyDelegate<const base::Value*> { |
- public: |
- explicit PolicyDelegate(const base::Value* to_expect) |
- : DummyDelegate<const base::Value*>(to_expect) {} |
- virtual ~PolicyDelegate() {} |
- protected: |
- virtual void compare_expected(const base::Value* to_compare) { |
- // without this-> this won't build. |
- EXPECT_TRUE(this->expected_->Equals(to_compare)); |
- } |
-}; |
- |
class ProtoDelegate : public DummyDelegate<const em::PolicyFetchResponse&> { |
public: |
explicit ProtoDelegate(const em::PolicyFetchResponse& e) |
@@ -116,9 +99,7 @@ class ProtoDelegate : public DummyDelegate<const em::PolicyFetchResponse&> { |
class SignedSettingsTest : public testing::Test { |
public: |
SignedSettingsTest() |
- : fake_email_("fakey@example.com"), |
- fake_domain_("*@example.com"), |
- fake_prop_(kAccountsPrefAllowGuest), |
+ : fake_prop_(kAccountsPrefAllowGuest), |
fake_signature_("false"), |
fake_value_(false), |
fake_value_signature_( |
@@ -148,57 +129,6 @@ class SignedSettingsTest : public testing::Test { |
s->set_service(m); |
} |
- em::PolicyData BuildPolicyData(std::vector<std::string> whitelist) { |
- em::PolicyData to_return; |
- em::ChromeDeviceSettingsProto pol; |
- em::GuestModeEnabledProto* allow = pol.mutable_guest_mode_enabled(); |
- allow->set_guest_mode_enabled(false); |
- pol.mutable_device_proxy_settings()->set_proxy_mode("direct"); |
- |
- if (!whitelist.empty()) { |
- em::UserWhitelistProto* whitelist_proto = pol.mutable_user_whitelist(); |
- for (std::vector<std::string>::const_iterator it = whitelist.begin(); |
- it != whitelist.end(); |
- ++it) { |
- whitelist_proto->add_user_whitelist(*it); |
- } |
- } |
- |
- to_return.set_policy_type(SignedSettings::kDevicePolicyType); |
- to_return.set_policy_value(pol.SerializeAsString()); |
- return to_return; |
- } |
- |
- void SetAllowNewUsers(bool desired, em::PolicyData* poldata) { |
- em::ChromeDeviceSettingsProto pol; |
- pol.ParseFromString(poldata->policy_value()); |
- em::AllowNewUsersProto* allow = pol.mutable_allow_new_users(); |
- allow->set_allow_new_users(desired); |
- poldata->set_policy_value(pol.SerializeAsString()); |
- } |
- |
- void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) { |
- NormalDelegate<bool> d(false); |
- scoped_refptr<SignedSettings> s( |
- SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); |
- d.expect_failure(SignedSettings::MapKeyOpCode(return_code)); |
- |
- mock_service(s.get(), &m_); |
- EXPECT_CALL(m_, StartSigningAttempt(_, _)) |
- .Times(1); |
- EXPECT_CALL(m_, GetStatus(_)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)); |
- EXPECT_CALL(m_, has_cached_policy()) |
- .WillOnce(Return(true)); |
- em::PolicyData fake_pol; |
- EXPECT_CALL(m_, cached_policy()) |
- .WillOnce(ReturnRef(fake_pol)); |
- |
- s->Execute(); |
- s->OnKeyOpComplete(return_code, std::vector<uint8>()); |
- message_loop_.RunAllPending(); |
- } |
- |
void FailingStorePolicyOp(const OwnerManager::KeyOpCode return_code) { |
NormalDelegate<bool> d(false); |
d.expect_failure(SignedSettings::MapKeyOpCode(return_code)); |
@@ -220,6 +150,27 @@ class SignedSettingsTest : public testing::Test { |
message_loop_.RunAllPending(); |
} |
+ em::PolicyData BuildPolicyData(std::vector<std::string> whitelist) { |
+ em::PolicyData to_return; |
+ em::ChromeDeviceSettingsProto pol; |
+ em::GuestModeEnabledProto* allow = pol.mutable_guest_mode_enabled(); |
+ allow->set_guest_mode_enabled(false); |
+ pol.mutable_device_proxy_settings()->set_proxy_mode("direct"); |
+ |
+ if (!whitelist.empty()) { |
+ em::UserWhitelistProto* whitelist_proto = pol.mutable_user_whitelist(); |
+ for (std::vector<std::string>::const_iterator it = whitelist.begin(); |
+ it != whitelist.end(); |
+ ++it) { |
+ whitelist_proto->add_user_whitelist(*it); |
+ } |
+ } |
+ |
+ to_return.set_policy_type(chromeos::kDevicePolicyType); |
+ to_return.set_policy_value(pol.SerializeAsString()); |
+ return to_return; |
+ } |
+ |
em::PolicyFetchResponse BuildProto(const std::string& data, |
const std::string& sig, |
std::string* out_serialized) { |
@@ -232,44 +183,16 @@ class SignedSettingsTest : public testing::Test { |
return fake_policy; |
} |
- void DoRetrieveProperty(const std::string& name, |
- const base::Value* value, |
- em::PolicyData* fake_pol) { |
- PolicyDelegate d(value); |
- d.expect_success(); |
- scoped_refptr<SignedSettings> s( |
- SignedSettings::CreateRetrievePropertyOp(name, &d)); |
- mock_service(s.get(), &m_); |
- EXPECT_CALL(m_, GetStatus(_)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)); |
- EXPECT_CALL(m_, has_cached_policy()) |
- .WillOnce(Return(true)); |
- |
- EXPECT_CALL(m_, cached_policy()) |
- .WillOnce(ReturnRef(*fake_pol)); |
- |
- s->Execute(); |
- message_loop_.RunAllPending(); |
- } |
- |
- const std::string fake_email_; |
- const std::string fake_domain_; |
const std::string fake_prop_; |
const std::string fake_signature_; |
const base::FundamentalValue fake_value_; |
const std::vector<uint8> fake_value_signature_; |
MockOwnershipService m_; |
- ScopedTempDir tmpdir_; |
- FilePath tmpfile_; |
- |
MessageLoop message_loop_; |
content::TestBrowserThread ui_thread_; |
content::TestBrowserThread file_thread_; |
- std::vector<uint8> fake_public_key_; |
- scoped_ptr<crypto::RSAPrivateKey> fake_private_key_; |
- |
MockKeyUtils* mock_; |
MockInjector injector_; |
MockDBusThreadManager* mock_dbus_thread_manager_; |
@@ -279,156 +202,6 @@ class SignedSettingsTest : public testing::Test { |
ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); } |
ACTION_P(Store, success) { arg1.Run(success); } |
-ACTION_P(FinishKeyOp, s) { arg2->OnKeyOpComplete(OwnerManager::SUCCESS, s); } |
- |
-TEST_F(SignedSettingsTest, StoreProperty) { |
- NormalDelegate<bool> d(true); |
- d.expect_success(); |
- scoped_refptr<SignedSettings> s( |
- SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); |
- |
- mock_service(s.get(), &m_); |
- EXPECT_CALL(m_, StartSigningAttempt(_, _)) |
- .Times(1); |
- EXPECT_CALL(m_, GetStatus(_)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)); |
- EXPECT_CALL(m_, has_cached_policy()) |
- .WillOnce(Return(true)); |
- em::PolicyData in_pol = |
- BuildPolicyData(std::vector<std::string>(1, fake_email_)); |
- EXPECT_CALL(m_, cached_policy()) |
- .WillOnce(ReturnRef(in_pol)); |
- em::PolicyData out_pol; |
- EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>())) |
- .WillOnce(SaveArg<0>(&out_pol)); |
- |
- MockSessionManagerClient* client = |
- mock_dbus_thread_manager_->mock_session_manager_client(); |
- EXPECT_CALL(*client, StorePolicy(_, _)) |
- .WillOnce(Store(true)) |
- .RetiresOnSaturation(); |
- |
- s->Execute(); |
- s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>()); |
- message_loop_.RunAllPending(); |
- |
- ASSERT_TRUE(out_pol.has_policy_value()); |
- em::ChromeDeviceSettingsProto pol; |
- pol.ParseFromString(out_pol.policy_value()); |
- ASSERT_TRUE(pol.has_guest_mode_enabled()); |
- ASSERT_TRUE(pol.guest_mode_enabled().has_guest_mode_enabled()); |
- ASSERT_FALSE(pol.guest_mode_enabled().guest_mode_enabled()); |
-} |
- |
-TEST_F(SignedSettingsTest, StorePropertyNoKey) { |
- FailingStorePropertyOp(OwnerManager::KEY_UNAVAILABLE); |
-} |
- |
-TEST_F(SignedSettingsTest, StorePropertyFailed) { |
- FailingStorePropertyOp(OwnerManager::OPERATION_FAILED); |
-} |
- |
-TEST_F(SignedSettingsTest, RetrieveProperty) { |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- base::FundamentalValue fake_value(false); |
- DoRetrieveProperty(fake_prop_, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, RetrieveOwnerProperty) { |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- fake_pol.set_username(fake_email_); |
- base::StringValue fake_value(fake_email_); |
- DoRetrieveProperty(kDeviceOwner, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, ExplicitlyAllowNewUsers) { |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- SetAllowNewUsers(true, &fake_pol); |
- base::FundamentalValue fake_value(true); |
- DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, ExplicitlyDisallowNewUsers) { |
- std::vector<std::string> whitelist(1, fake_email_ + "m"); |
- em::PolicyData fake_pol = BuildPolicyData(whitelist); |
- SetAllowNewUsers(false, &fake_pol); |
- base::FundamentalValue fake_value(false); |
- DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, ImplicitlyDisallowNewUsers) { |
- std::vector<std::string> whitelist(1, fake_email_ + "m"); |
- em::PolicyData fake_pol = BuildPolicyData(whitelist); |
- base::FundamentalValue fake_value(false); |
- DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, AccidentallyDisallowNewUsers) { |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- SetAllowNewUsers(false, &fake_pol); |
- base::FundamentalValue fake_value(true); |
- DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol); |
-} |
- |
-TEST_F(SignedSettingsTest, RetrievePropertyNotFound) { |
- PolicyDelegate d(&fake_value_); |
- d.expect_failure(SignedSettings::NOT_FOUND); |
- scoped_refptr<SignedSettings> s( |
- SignedSettings::CreateRetrievePropertyOp("unknown_prop", &d)); |
- mock_service(s.get(), &m_); |
- EXPECT_CALL(m_, GetStatus(_)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)); |
- EXPECT_CALL(m_, has_cached_policy()) |
- .WillOnce(Return(true)); |
- |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- EXPECT_CALL(m_, cached_policy()) |
- .WillOnce(ReturnRef(fake_pol)); |
- |
- s->Execute(); |
- message_loop_.RunAllPending(); |
-} |
- |
-TEST_F(SignedSettingsTest, RetrievePolicyToRetrieveProperty) { |
- base::FundamentalValue fake_value(false); |
- PolicyDelegate d(&fake_value); |
- d.expect_success(); |
- scoped_refptr<SignedSettings> s( |
- SignedSettings::CreateRetrievePropertyOp(fake_prop_, &d)); |
- |
- em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>()); |
- std::string data = fake_pol.SerializeAsString(); |
- std::string signed_serialized; |
- em::PolicyFetchResponse signed_policy = BuildProto(data, |
- fake_signature_, |
- &signed_serialized); |
- MockSessionManagerClient* client = |
- mock_dbus_thread_manager_->mock_session_manager_client(); |
- EXPECT_CALL(*client, RetrievePolicy(_)) |
- .WillOnce(Retrieve(signed_serialized)) |
- .RetiresOnSaturation(); |
- |
- mock_service(s.get(), &m_); |
- |
- EXPECT_CALL(m_, GetStatus(_)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)) |
- .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN)); |
- EXPECT_CALL(m_, has_cached_policy()) |
- .WillOnce(Return(false)) |
- .WillOnce(Return(true)); |
- em::PolicyData out_pol; |
- EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>())) |
- .WillOnce(SaveArg<0>(&out_pol)); |
- EXPECT_CALL(m_, cached_policy()) |
- .WillOnce(ReturnRef(out_pol)); |
- |
- EXPECT_CALL(m_, StartVerifyAttempt(data, fake_value_signature_, _)) |
- .WillOnce(FinishKeyOp(fake_value_signature_)) |
- .RetiresOnSaturation(); |
- |
- s->Execute(); |
- message_loop_.RunAllPending(); |
-} |
TEST_F(SignedSettingsTest, SignAndStorePolicy) { |
NormalDelegate<bool> d(true); |
@@ -447,8 +220,6 @@ TEST_F(SignedSettingsTest, SignAndStorePolicy) { |
EXPECT_CALL(m_, StartSigningAttempt(StrEq(data_serialized), _)) |
.Times(1); |
em::PolicyData out_pol; |
- EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>())) |
- .WillOnce(SaveArg<0>(&out_pol)); |
// Ask for signature over unsigned policy. |
s->Execute(); |
@@ -488,8 +259,6 @@ TEST_F(SignedSettingsTest, StoreSignedPolicy) { |
mock_service(s.get(), &m_); |
em::PolicyData out_pol; |
- EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>())) |
- .WillOnce(SaveArg<0>(&out_pol)); |
s->Execute(); |
message_loop_.RunAllPending(); |
@@ -539,8 +308,6 @@ TEST_F(SignedSettingsTest, RetrievePolicy) { |
EXPECT_CALL(m_, StartVerifyAttempt(serialized, fake_value_signature_, _)) |
.Times(1); |
em::PolicyData out_pol; |
- EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>())) |
- .WillOnce(SaveArg<0>(&out_pol)); |
s->Execute(); |
message_loop_.RunAllPending(); |