Index: remoting/host/policy_watcher_unittest.cc |
diff --git a/remoting/host/policy_watcher_unittest.cc b/remoting/host/policy_watcher_unittest.cc |
index ccbdf6d8f46dc993d2bcc1188270a4120a3ebea2..4b70a6ad5b09acadae868a5b1512677c136c8e2b 100644 |
--- a/remoting/host/policy_watcher_unittest.cc |
+++ b/remoting/host/policy_watcher_unittest.cc |
@@ -74,13 +74,29 @@ class PolicyWatcherTest : public testing::Test { |
policy_watcher_ = PolicyWatcher::CreateFromPolicyLoaderForTesting( |
base::WrapUnique(policy_loader_)); |
+ base::ListValue host_domain; |
+ host_domain.AppendString(kHostDomain); |
+ base::ListValue client_domain; |
+ client_domain.AppendString(kClientDomain); |
+ base::ListValue multiple_host_domains; |
+ multiple_host_domains.AppendString("a.com"); |
+ multiple_host_domains.AppendString("b.com"); |
+ multiple_host_domains.AppendString("c.com"); |
+ base::ListValue multiple_client_domains; |
+ multiple_client_domains.AppendString("d.com"); |
+ multiple_client_domains.AppendString("e.com"); |
+ multiple_client_domains.AppendString("f.com"); |
+ |
nat_true_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, true); |
nat_false_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, false); |
nat_one_.SetInteger(key::kRemoteAccessHostFirewallTraversal, 1); |
nat_one_domain_full_.SetInteger(key::kRemoteAccessHostFirewallTraversal, 1); |
- nat_one_domain_full_.SetString(key::kRemoteAccessHostDomain, kHostDomain); |
- domain_empty_.SetString(key::kRemoteAccessHostDomain, std::string()); |
- domain_full_.SetString(key::kRemoteAccessHostDomain, kHostDomain); |
+ nat_one_domain_full_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
+ domain_empty_.Set(key::kRemoteAccessHostDomainList, |
+ base::MakeUnique<base::ListValue>()); |
+ domain_full_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
SetDefaults(nat_true_others_default_); |
nat_true_others_default_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, |
true); |
@@ -88,30 +104,32 @@ class PolicyWatcherTest : public testing::Test { |
nat_false_others_default_.SetBoolean( |
key::kRemoteAccessHostFirewallTraversal, false); |
SetDefaults(domain_empty_others_default_); |
- domain_empty_others_default_.SetString(key::kRemoteAccessHostDomain, |
- std::string()); |
+ domain_empty_others_default_.Set(key::kRemoteAccessHostDomainList, |
+ base::MakeUnique<base::ListValue>()); |
SetDefaults(domain_full_others_default_); |
- domain_full_others_default_.SetString(key::kRemoteAccessHostDomain, |
- kHostDomain); |
+ domain_full_others_default_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
nat_true_domain_empty_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, |
true); |
- nat_true_domain_empty_.SetString(key::kRemoteAccessHostDomain, |
- std::string()); |
+ nat_true_domain_empty_.Set(key::kRemoteAccessHostDomainList, |
+ base::MakeUnique<base::ListValue>()); |
nat_true_domain_full_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, |
true); |
- nat_true_domain_full_.SetString(key::kRemoteAccessHostDomain, kHostDomain); |
+ nat_true_domain_full_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
nat_false_domain_empty_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, |
false); |
- nat_false_domain_empty_.SetString(key::kRemoteAccessHostDomain, |
- std::string()); |
+ nat_false_domain_empty_.Set(key::kRemoteAccessHostDomainList, |
+ base::MakeUnique<base::ListValue>()); |
nat_false_domain_full_.SetBoolean(key::kRemoteAccessHostFirewallTraversal, |
false); |
- nat_false_domain_full_.SetString(key::kRemoteAccessHostDomain, kHostDomain); |
+ nat_false_domain_full_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
SetDefaults(nat_true_domain_empty_others_default_); |
nat_true_domain_empty_others_default_.SetBoolean( |
key::kRemoteAccessHostFirewallTraversal, true); |
- nat_true_domain_empty_others_default_.SetString( |
- key::kRemoteAccessHostDomain, std::string()); |
+ nat_true_domain_empty_others_default_.Set( |
+ key::kRemoteAccessHostDomainList, base::MakeUnique<base::ListValue>()); |
unknown_policies_.SetString("UnknownPolicyOne", std::string()); |
unknown_policies_.SetString("UnknownPolicyTwo", std::string()); |
unknown_policies_.SetBoolean("RemoteAccessHostUnknownPolicyThree", true); |
@@ -129,8 +147,8 @@ class PolicyWatcherTest : public testing::Test { |
port_range_malformed_.SetString(key::kRemoteAccessHostUdpPortRange, |
"malformed"); |
port_range_malformed_domain_full_.MergeDictionary(&port_range_malformed_); |
- port_range_malformed_domain_full_.SetString(key::kRemoteAccessHostDomain, |
- kHostDomain); |
+ port_range_malformed_domain_full_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
curtain_true_.SetBoolean(key::kRemoteAccessHostRequireCurtain, true); |
curtain_false_.SetBoolean(key::kRemoteAccessHostRequireCurtain, false); |
@@ -152,6 +170,37 @@ class PolicyWatcherTest : public testing::Test { |
key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, true); |
remote_assistance_uiaccess_false_.SetBoolean( |
key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, false); |
+ |
+ deprecated_policies_.SetString(key::kRemoteAccessHostDomain, kHostDomain); |
+ deprecated_policies_.SetString(key::kRemoteAccessHostClientDomain, |
+ kClientDomain); |
+ // Deprecated policies should get converted if new ones aren't present. |
+ SetDefaults(deprecated_policies_expected_); |
+ deprecated_policies_expected_.Set(key::kRemoteAccessHostDomainList, |
+ host_domain.CreateDeepCopy()); |
+ deprecated_policies_expected_.Set(key::kRemoteAccessHostClientDomainList, |
+ client_domain.CreateDeepCopy()); |
+ |
+ deprecated_and_new_policies_.SetString(key::kRemoteAccessHostDomain, |
+ kHostDomain); |
+ deprecated_and_new_policies_.SetString(key::kRemoteAccessHostClientDomain, |
+ kClientDomain); |
+ deprecated_and_new_policies_.Set(key::kRemoteAccessHostDomainList, |
+ multiple_host_domains.CreateDeepCopy()); |
+ deprecated_and_new_policies_.Set(key::kRemoteAccessHostClientDomainList, |
+ multiple_client_domains.CreateDeepCopy()); |
+ // Deprecated policies should just be dropped in new ones are present. |
+ SetDefaults(deprecated_and_new_policies_expected_); |
+ deprecated_and_new_policies_expected_.Set( |
+ key::kRemoteAccessHostDomainList, |
+ multiple_host_domains.CreateDeepCopy()); |
+ deprecated_and_new_policies_expected_.Set( |
+ key::kRemoteAccessHostClientDomainList, |
+ multiple_client_domains.CreateDeepCopy()); |
+ |
+ // Empty strings should be treated as not set. |
+ deprecated_empty_strings_.SetString(key::kRemoteAccessHostDomain, ""); |
+ deprecated_empty_strings_.SetString(key::kRemoteAccessHostClientDomain, ""); |
} |
void TearDown() override { |
@@ -197,6 +246,7 @@ class PolicyWatcherTest : public testing::Test { |
MOCK_METHOD0(PostPolicyWatcherShutdown, void()); |
static const char* kHostDomain; |
+ static const char* kClientDomain; |
static const char* kPortRange; |
base::MessageLoop message_loop_; |
MockPolicyCallback mock_policy_callback_; |
@@ -244,14 +294,21 @@ class PolicyWatcherTest : public testing::Test { |
base::DictionaryValue third_party_auth_cert_empty_; |
base::DictionaryValue remote_assistance_uiaccess_true_; |
base::DictionaryValue remote_assistance_uiaccess_false_; |
+ base::DictionaryValue deprecated_policies_; |
+ base::DictionaryValue deprecated_policies_expected_; |
+ base::DictionaryValue deprecated_and_new_policies_; |
+ base::DictionaryValue deprecated_and_new_policies_expected_; |
+ base::DictionaryValue deprecated_empty_strings_; |
private: |
void SetDefaults(base::DictionaryValue& dict) { |
dict.SetBoolean(key::kRemoteAccessHostFirewallTraversal, true); |
dict.SetBoolean(key::kRemoteAccessHostAllowRelayedConnection, true); |
dict.SetString(key::kRemoteAccessHostUdpPortRange, ""); |
- dict.SetString(key::kRemoteAccessHostClientDomain, std::string()); |
- dict.SetString(key::kRemoteAccessHostDomain, std::string()); |
+ dict.Set(key::kRemoteAccessHostClientDomainList, |
+ base::MakeUnique<base::ListValue>()); |
+ dict.Set(key::kRemoteAccessHostDomainList, |
+ base::MakeUnique<base::ListValue>()); |
dict.SetBoolean(key::kRemoteAccessHostMatchUsername, false); |
dict.SetString(key::kRemoteAccessHostTalkGadgetPrefix, |
kDefaultHostTalkGadgetPrefix); |
@@ -271,6 +328,7 @@ class PolicyWatcherTest : public testing::Test { |
}; |
const char* PolicyWatcherTest::kHostDomain = "google.com"; |
+const char* PolicyWatcherTest::kClientDomain = "client.com"; |
const char* PolicyWatcherTest::kPortRange = "12400-12409"; |
TEST_F(PolicyWatcherTest, None) { |
@@ -659,6 +717,11 @@ TEST_F(PolicyWatcherTest, PolicySchemaAndPolicyWatcherShouldBeInSync) { |
// policies, so we have to skip them here. |
continue; |
} |
+ if (key == policy::key::kRemoteAccessHostDomain || |
+ key == policy::key::kRemoteAccessHostClientDomain) { |
+ // These policies are deprecated and get removed during normalization |
+ continue; |
+ } |
actual_schema[key] = it.schema().type(); |
} |
@@ -684,4 +747,26 @@ TEST_F(PolicyWatcherTest, SchemaTypeCheck) { |
EXPECT_EQ(boolean_schema.type(), base::Value::Type::BOOLEAN); |
} |
+TEST_F(PolicyWatcherTest, DeprecatedOnly) { |
+ EXPECT_CALL(mock_policy_callback_, |
+ OnPolicyUpdatePtr(IsPolicies(&deprecated_policies_expected_))); |
+ SetPolicies(deprecated_policies_); |
+ StartWatching(); |
+} |
+ |
+TEST_F(PolicyWatcherTest, DeprecatedAndNew) { |
+ EXPECT_CALL( |
+ mock_policy_callback_, |
+ OnPolicyUpdatePtr(IsPolicies(&deprecated_and_new_policies_expected_))); |
+ SetPolicies(deprecated_and_new_policies_); |
+ StartWatching(); |
+} |
+ |
+TEST_F(PolicyWatcherTest, DeprecatedEmpty) { |
+ EXPECT_CALL(mock_policy_callback_, |
+ OnPolicyUpdatePtr(IsPolicies(&GetDefaultValues()))); |
+ SetPolicies(deprecated_empty_strings_); |
+ StartWatching(); |
+} |
+ |
} // namespace remoting |