Index: remoting/host/policy_hack/policy_watcher_unittest.cc |
diff --git a/remoting/host/policy_hack/policy_watcher_unittest.cc b/remoting/host/policy_hack/policy_watcher_unittest.cc |
index e4b855427a41b6bf88c10fb872c1c8f19d7b411d..5f05cf5dcb12d6246178aa5e72601273cb024078 100644 |
--- a/remoting/host/policy_hack/policy_watcher_unittest.cc |
+++ b/remoting/host/policy_hack/policy_watcher_unittest.cc |
@@ -7,10 +7,11 @@ |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
#include "base/synchronization/waitable_event.h" |
+#include "components/policy/core/common/fake_async_policy_loader.h" |
#include "policy/policy_constants.h" |
#include "remoting/host/dns_blackhole_checker.h" |
-#include "remoting/host/policy_hack/fake_policy_watcher.h" |
#include "remoting/host/policy_hack/mock_policy_callback.h" |
+#include "remoting/host/policy_hack/policy_service_watcher.h" |
#include "remoting/host/policy_hack/policy_watcher.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -30,7 +31,14 @@ class PolicyWatcherTest : public testing::Test { |
policy_error_callback_ = base::Bind( |
&MockPolicyCallback::OnPolicyError, |
base::Unretained(&mock_policy_callback_)); |
- policy_watcher_.reset(new FakePolicyWatcher(message_loop_proxy_)); |
+ |
+ scoped_ptr<policy::FakeAsyncPolicyLoader> policy_loader( |
+ new policy::FakeAsyncPolicyLoader(message_loop_proxy_)); |
+ // retaining a pointer to keep control over policy contents. |
+ policy_loader_ = policy_loader.get(); |
+ policy_watcher_ = PolicyServiceWatcher::CreateFromPolicyLoader( |
+ message_loop_proxy_, policy_loader.Pass()); |
Łukasz Anforowicz
2015/01/22 00:12:28
I am not happy with handing over a scoped_ptr<Fake
Mattias Nissler (ping if slow)
2015/01/22 16:05:08
I think what you have is fair. If you really feel
Łukasz Anforowicz
2015/01/22 18:28:06
Thanks. I'll leave it as-is. Moving the ownershi
|
+ |
nat_true_.SetBoolean(policy::key::kRemoteAccessHostFirewallTraversal, true); |
nat_false_.SetBoolean(policy::key::kRemoteAccessHostFirewallTraversal, |
false); |
@@ -123,6 +131,19 @@ class PolicyWatcherTest : public testing::Test { |
base::RunLoop().RunUntilIdle(); |
} |
+ void SetPolicies(const base::DictionaryValue& dict) { |
+ policy_loader_->ClearPolicies(); |
+ policy_loader_->AddPolicies( |
+ policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string()), |
+ dict, policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_MACHINE); |
+ policy_loader_->PostReloadOnBackgroundThread(true /* force reload asap */); |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
+ void SignalTransientErrorForTest() { |
+ policy_watcher_->SignalTransientPolicyError(); |
+ } |
+ |
MOCK_METHOD0(PostPolicyWatcherShutdown, void()); |
static const char* kHostDomain; |
@@ -132,7 +153,8 @@ class PolicyWatcherTest : public testing::Test { |
MockPolicyCallback mock_policy_callback_; |
PolicyWatcher::PolicyUpdatedCallback policy_updated_callback_; |
PolicyWatcher::PolicyErrorCallback policy_error_callback_; |
- scoped_ptr<FakePolicyWatcher> policy_watcher_; |
+ policy::FakeAsyncPolicyLoader* policy_loader_; |
+ scoped_ptr<PolicyWatcher> policy_watcher_; |
base::DictionaryValue empty_; |
base::DictionaryValue nat_true_; |
base::DictionaryValue nat_false_; |
@@ -188,239 +210,354 @@ class PolicyWatcherTest : public testing::Test { |
const char* PolicyWatcherTest::kHostDomain = "google.com"; |
const char* PolicyWatcherTest::kPortRange = "12400-12409"; |
-MATCHER_P(IsPolicies, dict, "") { |
- return arg->Equals(dict); |
+using ::testing::Matcher; |
+using ::testing::MatcherInterface; |
+using ::testing::MatchResultListener; |
+ |
+class DictionaryValueEqMatcher |
Łukasz Anforowicz
2015/01/22 00:12:28
I've added a quick-and-dirty DictionaryValueEqMatc
Mattias Nissler (ping if slow)
2015/01/22 16:05:08
I'm not sure there's justification enough to add a
Łukasz Anforowicz
2015/01/22 18:28:06
Doh... yes - this is much easier. Thanks.
|
+ : public MatcherInterface<const base::DictionaryValue*> { |
+ public: |
+ explicit DictionaryValueEqMatcher(const base::DictionaryValue& expected_dict) |
+ : expected_dict_(expected_dict.DeepCopy()) {} |
+ |
+ virtual bool MatchAndExplain(const base::DictionaryValue* actual_dict, |
+ MatchResultListener* listener) const { |
+ if (actual_dict == nullptr) { |
+ *listener << "actual dictionary is null"; |
+ return false; |
+ } |
+ |
+ for (base::DictionaryValue::Iterator i(*actual_dict); !i.IsAtEnd(); |
+ i.Advance()) { |
+ if (!MatchAndExplainPair(i, *expected_dict_, "actual", "expected", |
+ listener)) { |
+ return false; |
+ } |
+ } |
+ |
+ for (base::DictionaryValue::Iterator i(*expected_dict_); !i.IsAtEnd(); |
+ i.Advance()) { |
+ if (!MatchAndExplainPair(i, *actual_dict, "expected", "actual", |
+ listener)) { |
+ return false; |
+ } |
+ } |
+ |
+ // Double-check the code above correctly calculates dictionary equality. |
+ CHECK(actual_dict->Equals(expected_dict_.get())); |
+ |
+ return true; |
+ } |
+ |
+ virtual void DescribeTo(::std::ostream* os) const { |
+ *os << "dictionary equality check"; |
+ } |
+ |
+ virtual void DescribeNegationTo(::std::ostream* os) const { |
+ *os << "dictionary inequality check"; |
+ } |
+ |
+ private: |
+ virtual bool MatchAndExplainPair(const base::DictionaryValue::Iterator& iter, |
+ const base::DictionaryValue& other_dict, |
+ const std::string& iter_name, |
+ const std::string& other_name, |
+ MatchResultListener* listener) const { |
+ const std::string& key = iter.key(); |
+ if (!other_dict.HasKey(key)) { |
+ *listener << "key '" << key << "' is present in " << iter_name |
+ << ", but not in " << other_name << " dictionary."; |
+ return false; |
+ } |
+ |
+ const base::Value* other_value; |
+ CHECK(other_dict.Get(key, &other_value)); |
+ |
+ if (other_value->GetType() != iter.value().GetType()) { |
+ *listener << "value of '" << key << "' key " |
+ << "is a " << other_value->GetType() << " in " << other_name |
+ << " but is a " << iter.value().GetType() << " in " << iter_name |
+ << " dictionary."; |
+ return false; |
+ } |
+ |
+ if (!other_value->Equals(&iter.value())) { |
+ switch (iter.value().GetType()) { |
+ case base::Value::Type::TYPE_BOOLEAN: { |
+ bool other_bool; |
+ bool iter_bool; |
+ CHECK(iter.value().GetAsBoolean(&iter_bool)); |
+ CHECK(other_value->GetAsBoolean(&other_bool)); |
+ *listener << "value of '" << key << "' key " |
+ << "equals " << other_bool << " in " << other_name |
+ << " but equals " << iter_bool << " in " << iter_name |
+ << " dictionary"; |
+ break; |
+ } |
+ case base::Value::Type::TYPE_STRING: { |
+ std::string other_string; |
+ std::string iter_string; |
+ CHECK(iter.value().GetAsString(&iter_string)); |
+ CHECK(other_value->GetAsString(&other_string)); |
+ *listener << "value of '" << key << "' key " |
+ << "equals '" << other_string << "' in " << other_name |
+ << " but equals '" << iter_string << "' in " << iter_name |
+ << " dictionary"; |
+ break; |
+ } |
+ default: { |
+ *listener << "value of '" << key << "' key " |
+ << "is different in " << other_name << " and in " |
+ << iter_name << " dictionary"; |
+ break; |
+ } |
+ } |
+ return false; |
+ } |
+ |
+ return true; |
+ } |
+ |
+ scoped_ptr<base::DictionaryValue> expected_dict_; |
+}; |
+ |
+inline Matcher<const base::DictionaryValue*> DictionaryValueEq( |
+ const base::DictionaryValue& expected_dict) { |
+ return MakeMatcher(new DictionaryValueEqMatcher(expected_dict)); |
} |
TEST_F(PolicyWatcherTest, None) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatTrue) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
+ SetPolicies(nat_true_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&nat_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatFalse) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_others_default_))); |
+ SetPolicies(nat_false_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&nat_false_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatOne) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_others_default_))); |
+ SetPolicies(nat_one_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&nat_one_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, DomainEmpty) { |
- EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&domain_empty_others_default_))); |
+ EXPECT_CALL( |
+ mock_policy_callback_, |
+ OnPolicyUpdatePtr(DictionaryValueEq(domain_empty_others_default_))); |
+ SetPolicies(domain_empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&domain_empty_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, DomainFull) { |
- EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&domain_full_others_default_))); |
+ EXPECT_CALL( |
+ mock_policy_callback_, |
+ OnPolicyUpdatePtr(DictionaryValueEq(domain_full_others_default_))); |
+ SetPolicies(domain_full_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&domain_full_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatNoneThenTrue) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&nat_true_); |
+ SetPolicies(nat_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatNoneThenTrueThenTrue) { |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&nat_true_); |
- policy_watcher_->SetPolicies(&nat_true_); |
+ SetPolicies(nat_true_); |
+ SetPolicies(nat_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatNoneThenTrueThenTrueThenFalse) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&nat_true_); |
- policy_watcher_->SetPolicies(&nat_true_); |
- policy_watcher_->SetPolicies(&nat_false_); |
+ SetPolicies(nat_true_); |
+ SetPolicies(nat_true_); |
+ SetPolicies(nat_false_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatNoneThenFalse) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&nat_false_); |
+ SetPolicies(nat_false_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, NatNoneThenFalseThenTrue) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&nat_false_); |
- policy_watcher_->SetPolicies(&nat_true_); |
+ SetPolicies(nat_false_); |
+ SetPolicies(nat_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, ChangeOneRepeatedlyThenTwo) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies( |
- &nat_true_domain_empty_others_default_))); |
+ OnPolicyUpdatePtr( |
+ DictionaryValueEq(nat_true_domain_empty_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&domain_full_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(domain_full_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_false_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&domain_empty_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(domain_empty_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_domain_full_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_domain_full_))); |
+ SetPolicies(nat_true_domain_empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&nat_true_domain_empty_); |
- policy_watcher_->SetPolicies(&nat_true_domain_full_); |
- policy_watcher_->SetPolicies(&nat_false_domain_full_); |
- policy_watcher_->SetPolicies(&nat_false_domain_empty_); |
- policy_watcher_->SetPolicies(&nat_true_domain_full_); |
+ SetPolicies(nat_true_domain_full_); |
+ SetPolicies(nat_false_domain_full_); |
+ SetPolicies(nat_false_domain_empty_); |
+ SetPolicies(nat_true_domain_full_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, FilterUnknownPolicies) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&unknown_policies_); |
- policy_watcher_->SetPolicies(&empty_); |
+ SetPolicies(unknown_policies_); |
+ SetPolicies(empty_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, DebugOverrideNatPolicy) { |
#if !defined(NDEBUG) |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_false_overridden_others_default_))); |
+ OnPolicyUpdatePtr( |
+ DictionaryValueEq(nat_false_overridden_others_default_))); |
#else |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
#endif |
+ SetPolicies(nat_true_and_overridden_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&nat_true_and_overridden_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, PairingFalseThenTrue) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&pairing_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(pairing_false_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&pairing_true_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(pairing_true_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&pairing_false_); |
- policy_watcher_->SetPolicies(&pairing_true_); |
+ SetPolicies(pairing_false_); |
+ SetPolicies(pairing_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, GnubbyAuth) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&gnubby_auth_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(gnubby_auth_false_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&gnubby_auth_true_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(gnubby_auth_true_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&gnubby_auth_false_); |
- policy_watcher_->SetPolicies(&gnubby_auth_true_); |
+ SetPolicies(gnubby_auth_false_); |
+ SetPolicies(gnubby_auth_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, Relay) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&relay_false_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(relay_false_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&relay_true_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(relay_true_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&relay_false_); |
- policy_watcher_->SetPolicies(&relay_true_); |
+ SetPolicies(relay_false_); |
+ SetPolicies(relay_true_); |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, UdpPortRange) { |
testing::InSequence sequence; |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(nat_true_others_default_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&port_range_full_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(port_range_full_))); |
EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&port_range_empty_))); |
+ OnPolicyUpdatePtr(DictionaryValueEq(port_range_empty_))); |
+ SetPolicies(empty_); |
StartWatching(); |
- policy_watcher_->SetPolicies(&empty_); |
- policy_watcher_->SetPolicies(&port_range_full_); |
- policy_watcher_->SetPolicies(&port_range_empty_); |
+ SetPolicies(port_range_full_); |
+ SetPolicies(port_range_empty_); |
StopWatching(); |
} |
@@ -430,7 +567,7 @@ TEST_F(PolicyWatcherTest, SingleTransientErrorDoesntTriggerErrorCallback) { |
EXPECT_CALL(mock_policy_callback_, OnPolicyErrorPtr()).Times(0); |
StartWatching(); |
- policy_watcher_->SignalTransientErrorForTest(); |
+ SignalTransientErrorForTest(); |
StopWatching(); |
} |
@@ -439,24 +576,23 @@ TEST_F(PolicyWatcherTest, MultipleTransientErrorsTriggerErrorCallback) { |
StartWatching(); |
for (int i = 0; i < kMaxTransientErrorRetries; i++) { |
- policy_watcher_->SignalTransientErrorForTest(); |
+ SignalTransientErrorForTest(); |
} |
StopWatching(); |
} |
TEST_F(PolicyWatcherTest, PolicyUpdateResetsTransientErrorsCounter) { |
testing::InSequence s; |
- EXPECT_CALL(mock_policy_callback_, |
- OnPolicyUpdatePtr(IsPolicies(&nat_true_others_default_))); |
+ EXPECT_CALL(mock_policy_callback_, OnPolicyUpdatePtr(testing::_)); |
EXPECT_CALL(mock_policy_callback_, OnPolicyErrorPtr()).Times(0); |
StartWatching(); |
for (int i = 0; i < (kMaxTransientErrorRetries - 1); i++) { |
- policy_watcher_->SignalTransientErrorForTest(); |
+ SignalTransientErrorForTest(); |
} |
- policy_watcher_->SetPolicies(&nat_true_); |
+ SetPolicies(nat_true_); |
for (int i = 0; i < (kMaxTransientErrorRetries - 1); i++) { |
- policy_watcher_->SignalTransientErrorForTest(); |
+ SignalTransientErrorForTest(); |
} |
StopWatching(); |
} |
@@ -530,8 +666,5 @@ TEST_F(PolicyWatcherTest, TestRealChromotingPolicy) { |
#endif |
-// TODO(lukasza): We should consider adding a test against a |
-// MockConfigurationPolicyProvider. |
- |
} // namespace policy_hack |
} // namespace remoting |