| 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/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/synchronization/waitable_event.h" | 9 #include "base/synchronization/waitable_event.h" |
| 10 #include "remoting/host/dns_blackhole_checker.h" | 10 #include "remoting/host/dns_blackhole_checker.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 nat_true_and_overridden_.SetBoolean(PolicyWatcher::kNatPolicyName, true); | 68 nat_true_and_overridden_.SetBoolean(PolicyWatcher::kNatPolicyName, true); |
| 69 nat_true_and_overridden_.SetString( | 69 nat_true_and_overridden_.SetString( |
| 70 PolicyWatcher::kHostDebugOverridePoliciesName, | 70 PolicyWatcher::kHostDebugOverridePoliciesName, |
| 71 kOverrideNatTraversalToFalse); | 71 kOverrideNatTraversalToFalse); |
| 72 pairing_true_.SetBoolean(PolicyWatcher::kHostAllowClientPairing, true); | 72 pairing_true_.SetBoolean(PolicyWatcher::kHostAllowClientPairing, true); |
| 73 pairing_false_.SetBoolean(PolicyWatcher::kHostAllowClientPairing, false); | 73 pairing_false_.SetBoolean(PolicyWatcher::kHostAllowClientPairing, false); |
| 74 gnubby_auth_true_.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, | 74 gnubby_auth_true_.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, |
| 75 true); | 75 true); |
| 76 gnubby_auth_false_.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, | 76 gnubby_auth_false_.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, |
| 77 false); | 77 false); |
| 78 relay_true_.SetBoolean(PolicyWatcher::kRelayPolicyName, true); | |
| 79 relay_false_.SetBoolean(PolicyWatcher::kRelayPolicyName, false); | |
| 80 port_range_full_.SetString(PolicyWatcher::kUdpPortRangePolicyName, | |
| 81 kPortRange); | |
| 82 port_range_empty_.SetString(PolicyWatcher::kUdpPortRangePolicyName, | |
| 83 std::string()); | |
| 84 | |
| 85 #if !defined(NDEBUG) | 78 #if !defined(NDEBUG) |
| 86 SetDefaults(nat_false_overridden_others_default_); | 79 SetDefaults(nat_false_overridden_others_default_); |
| 87 nat_false_overridden_others_default_.SetBoolean( | 80 nat_false_overridden_others_default_.SetBoolean( |
| 88 PolicyWatcher::kNatPolicyName, false); | 81 PolicyWatcher::kNatPolicyName, false); |
| 89 nat_false_overridden_others_default_.SetString( | 82 nat_false_overridden_others_default_.SetString( |
| 90 PolicyWatcher::kHostDebugOverridePoliciesName, | 83 PolicyWatcher::kHostDebugOverridePoliciesName, |
| 91 kOverrideNatTraversalToFalse); | 84 kOverrideNatTraversalToFalse); |
| 92 #endif | 85 #endif |
| 93 } | 86 } |
| 94 | 87 |
| 95 protected: | 88 protected: |
| 96 void StartWatching() { | 89 void StartWatching() { |
| 97 policy_watcher_->StartWatching(policy_callback_); | 90 policy_watcher_->StartWatching(policy_callback_); |
| 98 base::RunLoop().RunUntilIdle(); | 91 base::RunLoop().RunUntilIdle(); |
| 99 } | 92 } |
| 100 | 93 |
| 101 void StopWatching() { | 94 void StopWatching() { |
| 102 base::WaitableEvent stop_event(false, false); | 95 base::WaitableEvent stop_event(false, false); |
| 103 policy_watcher_->StopWatching(&stop_event); | 96 policy_watcher_->StopWatching(&stop_event); |
| 104 base::RunLoop().RunUntilIdle(); | 97 base::RunLoop().RunUntilIdle(); |
| 105 EXPECT_EQ(true, stop_event.IsSignaled()); | 98 EXPECT_EQ(true, stop_event.IsSignaled()); |
| 106 } | 99 } |
| 107 | 100 |
| 108 static const char* kHostDomain; | 101 static const char* kHostDomain; |
| 109 static const char* kPortRange; | |
| 110 base::MessageLoop message_loop_; | 102 base::MessageLoop message_loop_; |
| 111 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; | 103 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; |
| 112 MockPolicyCallback mock_policy_callback_; | 104 MockPolicyCallback mock_policy_callback_; |
| 113 PolicyWatcher::PolicyCallback policy_callback_; | 105 PolicyWatcher::PolicyCallback policy_callback_; |
| 114 scoped_ptr<FakePolicyWatcher> policy_watcher_; | 106 scoped_ptr<FakePolicyWatcher> policy_watcher_; |
| 115 base::DictionaryValue empty_; | 107 base::DictionaryValue empty_; |
| 116 base::DictionaryValue nat_true_; | 108 base::DictionaryValue nat_true_; |
| 117 base::DictionaryValue nat_false_; | 109 base::DictionaryValue nat_false_; |
| 118 base::DictionaryValue nat_one_; | 110 base::DictionaryValue nat_one_; |
| 119 base::DictionaryValue domain_empty_; | 111 base::DictionaryValue domain_empty_; |
| 120 base::DictionaryValue domain_full_; | 112 base::DictionaryValue domain_full_; |
| 121 base::DictionaryValue nat_true_others_default_; | 113 base::DictionaryValue nat_true_others_default_; |
| 122 base::DictionaryValue nat_false_others_default_; | 114 base::DictionaryValue nat_false_others_default_; |
| 123 base::DictionaryValue domain_empty_others_default_; | 115 base::DictionaryValue domain_empty_others_default_; |
| 124 base::DictionaryValue domain_full_others_default_; | 116 base::DictionaryValue domain_full_others_default_; |
| 125 base::DictionaryValue nat_true_domain_empty_; | 117 base::DictionaryValue nat_true_domain_empty_; |
| 126 base::DictionaryValue nat_true_domain_full_; | 118 base::DictionaryValue nat_true_domain_full_; |
| 127 base::DictionaryValue nat_false_domain_empty_; | 119 base::DictionaryValue nat_false_domain_empty_; |
| 128 base::DictionaryValue nat_false_domain_full_; | 120 base::DictionaryValue nat_false_domain_full_; |
| 129 base::DictionaryValue nat_true_domain_empty_others_default_; | 121 base::DictionaryValue nat_true_domain_empty_others_default_; |
| 130 base::DictionaryValue unknown_policies_; | 122 base::DictionaryValue unknown_policies_; |
| 131 base::DictionaryValue nat_true_and_overridden_; | 123 base::DictionaryValue nat_true_and_overridden_; |
| 132 base::DictionaryValue nat_false_overridden_others_default_; | 124 base::DictionaryValue nat_false_overridden_others_default_; |
| 133 base::DictionaryValue pairing_true_; | 125 base::DictionaryValue pairing_true_; |
| 134 base::DictionaryValue pairing_false_; | 126 base::DictionaryValue pairing_false_; |
| 135 base::DictionaryValue gnubby_auth_true_; | 127 base::DictionaryValue gnubby_auth_true_; |
| 136 base::DictionaryValue gnubby_auth_false_; | 128 base::DictionaryValue gnubby_auth_false_; |
| 137 base::DictionaryValue relay_true_; | |
| 138 base::DictionaryValue relay_false_; | |
| 139 base::DictionaryValue port_range_full_; | |
| 140 base::DictionaryValue port_range_empty_; | |
| 141 | 129 |
| 142 private: | 130 private: |
| 143 void SetDefaults(base::DictionaryValue& dict) { | 131 void SetDefaults(base::DictionaryValue& dict) { |
| 144 dict.SetBoolean(PolicyWatcher::kNatPolicyName, true); | 132 dict.SetBoolean(PolicyWatcher::kNatPolicyName, true); |
| 145 dict.SetBoolean(PolicyWatcher::kRelayPolicyName, true); | |
| 146 dict.SetString(PolicyWatcher::kUdpPortRangePolicyName, ""); | |
| 147 dict.SetBoolean(PolicyWatcher::kHostRequireTwoFactorPolicyName, false); | 133 dict.SetBoolean(PolicyWatcher::kHostRequireTwoFactorPolicyName, false); |
| 148 dict.SetString(PolicyWatcher::kHostDomainPolicyName, std::string()); | 134 dict.SetString(PolicyWatcher::kHostDomainPolicyName, std::string()); |
| 149 dict.SetBoolean(PolicyWatcher::kHostMatchUsernamePolicyName, false); | 135 dict.SetBoolean(PolicyWatcher::kHostMatchUsernamePolicyName, false); |
| 150 dict.SetString(PolicyWatcher::kHostTalkGadgetPrefixPolicyName, | 136 dict.SetString(PolicyWatcher::kHostTalkGadgetPrefixPolicyName, |
| 151 kDefaultHostTalkGadgetPrefix); | 137 kDefaultHostTalkGadgetPrefix); |
| 152 dict.SetBoolean(PolicyWatcher::kHostRequireCurtainPolicyName, false); | 138 dict.SetBoolean(PolicyWatcher::kHostRequireCurtainPolicyName, false); |
| 153 dict.SetString(PolicyWatcher::kHostTokenUrlPolicyName, std::string()); | 139 dict.SetString(PolicyWatcher::kHostTokenUrlPolicyName, std::string()); |
| 154 dict.SetString(PolicyWatcher::kHostTokenValidationUrlPolicyName, | 140 dict.SetString(PolicyWatcher::kHostTokenValidationUrlPolicyName, |
| 155 std::string()); | 141 std::string()); |
| 156 dict.SetString(PolicyWatcher::kHostTokenValidationCertIssuerPolicyName, | 142 dict.SetString(PolicyWatcher::kHostTokenValidationCertIssuerPolicyName, |
| 157 std::string()); | 143 std::string()); |
| 158 dict.SetBoolean(PolicyWatcher::kHostAllowClientPairing, true); | 144 dict.SetBoolean(PolicyWatcher::kHostAllowClientPairing, true); |
| 159 dict.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, true); | 145 dict.SetBoolean(PolicyWatcher::kHostAllowGnubbyAuthPolicyName, true); |
| 160 #if !defined(NDEBUG) | 146 #if !defined(NDEBUG) |
| 161 dict.SetString(PolicyWatcher::kHostDebugOverridePoliciesName, ""); | 147 dict.SetString(PolicyWatcher::kHostDebugOverridePoliciesName, ""); |
| 162 #endif | 148 #endif |
| 163 } | 149 } |
| 164 }; | 150 }; |
| 165 | 151 |
| 166 const char* PolicyWatcherTest::kHostDomain = "google.com"; | 152 const char* PolicyWatcherTest::kHostDomain = "google.com"; |
| 167 const char* PolicyWatcherTest::kPortRange = "12400-12409"; | |
| 168 | 153 |
| 169 MATCHER_P(IsPolicies, dict, "") { | 154 MATCHER_P(IsPolicies, dict, "") { |
| 170 return arg->Equals(dict); | 155 return arg->Equals(dict); |
| 171 } | 156 } |
| 172 | 157 |
| 173 TEST_F(PolicyWatcherTest, None) { | 158 TEST_F(PolicyWatcherTest, None) { |
| 174 EXPECT_CALL(mock_policy_callback_, | 159 EXPECT_CALL(mock_policy_callback_, |
| 175 OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); | 160 OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
| 176 | 161 |
| 177 StartWatching(); | 162 StartWatching(); |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 EXPECT_CALL(mock_policy_callback_, | 348 EXPECT_CALL(mock_policy_callback_, |
| 364 OnPolicyUpdatePtr(IsPolicies(&gnubby_auth_true_))); | 349 OnPolicyUpdatePtr(IsPolicies(&gnubby_auth_true_))); |
| 365 | 350 |
| 366 StartWatching(); | 351 StartWatching(); |
| 367 policy_watcher_->SetPolicies(&empty_); | 352 policy_watcher_->SetPolicies(&empty_); |
| 368 policy_watcher_->SetPolicies(&gnubby_auth_false_); | 353 policy_watcher_->SetPolicies(&gnubby_auth_false_); |
| 369 policy_watcher_->SetPolicies(&gnubby_auth_true_); | 354 policy_watcher_->SetPolicies(&gnubby_auth_true_); |
| 370 StopWatching(); | 355 StopWatching(); |
| 371 } | 356 } |
| 372 | 357 |
| 373 TEST_F(PolicyWatcherTest, Relay) { | |
| 374 testing::InSequence sequence; | |
| 375 EXPECT_CALL(mock_policy_callback_, | |
| 376 OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); | |
| 377 EXPECT_CALL(mock_policy_callback_, | |
| 378 OnPolicyUpdatePtr(IsPolicies(&relay_false_))); | |
| 379 EXPECT_CALL(mock_policy_callback_, | |
| 380 OnPolicyUpdatePtr(IsPolicies(&relay_true_))); | |
| 381 | |
| 382 StartWatching(); | |
| 383 policy_watcher_->SetPolicies(&empty_); | |
| 384 policy_watcher_->SetPolicies(&relay_false_); | |
| 385 policy_watcher_->SetPolicies(&relay_true_); | |
| 386 StopWatching(); | |
| 387 } | |
| 388 | |
| 389 TEST_F(PolicyWatcherTest, UdpPortRange) { | |
| 390 testing::InSequence sequence; | |
| 391 EXPECT_CALL(mock_policy_callback_, | |
| 392 OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); | |
| 393 EXPECT_CALL(mock_policy_callback_, | |
| 394 OnPolicyUpdatePtr(IsPolicies(&port_range_full_))); | |
| 395 EXPECT_CALL(mock_policy_callback_, | |
| 396 OnPolicyUpdatePtr(IsPolicies(&port_range_empty_))); | |
| 397 | |
| 398 StartWatching(); | |
| 399 policy_watcher_->SetPolicies(&empty_); | |
| 400 policy_watcher_->SetPolicies(&port_range_full_); | |
| 401 policy_watcher_->SetPolicies(&port_range_empty_); | |
| 402 StopWatching(); | |
| 403 } | |
| 404 | |
| 405 } // namespace policy_hack | 358 } // namespace policy_hack |
| 406 } // namespace remoting | 359 } // namespace remoting |
| OLD | NEW |