Index: sync/notifier/chrome_invalidation_client_unittest.cc |
diff --git a/sync/notifier/chrome_invalidation_client_unittest.cc b/sync/notifier/chrome_invalidation_client_unittest.cc |
index 92f697f12a2d2690f05dea5dfd46f57f13ae668a..0c7d92f823eba3c881e52db0785097560523589b 100644 |
--- a/sync/notifier/chrome_invalidation_client_unittest.cc |
+++ b/sync/notifier/chrome_invalidation_client_unittest.cc |
@@ -20,6 +20,7 @@ |
namespace sync_notifier { |
using ::testing::_; |
+using ::testing::InSequence; |
using ::testing::Return; |
using ::testing::StrictMock; |
@@ -44,7 +45,7 @@ class MockInvalidationClient : public invalidation::InvalidationClient { |
class MockListener : public ChromeInvalidationClient::Listener { |
public: |
MOCK_METHOD1(OnInvalidate, void(const syncable::ModelTypePayloadMap&)); |
- MOCK_METHOD1(OnSessionStatusChanged, void(bool)); |
+ MOCK_METHOD1(OnSyncNotifierStateChange, void(SyncNotifierState)); |
}; |
} // namespace |
@@ -52,9 +53,8 @@ class MockListener : public ChromeInvalidationClient::Listener { |
class ChromeInvalidationClientTest : public testing::Test { |
protected: |
ChromeInvalidationClientTest() |
- : client_( |
- scoped_ptr<notifier::PushClient>( |
- new notifier::FakePushClient())) {} |
+ : fake_push_client_(new notifier::FakePushClient()), |
+ client_(scoped_ptr<notifier::PushClient>(fake_push_client_)) {} |
virtual void SetUp() { |
client_.Start(kClientId, kClientInfo, kState, |
@@ -116,6 +116,7 @@ class ChromeInvalidationClientTest : public testing::Test { |
StrictMock<MockInvalidationStateTracker> |
mock_invalidation_state_tracker_; |
StrictMock<MockInvalidationClient> mock_invalidation_client_; |
+ notifier::FakePushClient* const fake_push_client_; |
ChromeInvalidationClient client_; |
}; |
@@ -159,12 +160,6 @@ TEST_F(ChromeInvalidationClientTest, InvalidateWithPayload) { |
FireInvalidate("PREFERENCE", 1, "payload"); |
} |
-TEST_F(ChromeInvalidationClientTest, WriteState) { |
- EXPECT_CALL(mock_invalidation_state_tracker_, |
- SetInvalidationState(kNewState)); |
- client_.WriteState(kNewState); |
-} |
- |
TEST_F(ChromeInvalidationClientTest, InvalidateVersion) { |
using ::testing::Mock; |
@@ -266,6 +261,82 @@ TEST_F(ChromeInvalidationClientTest, RegisterTypes) { |
FireInvalidateAll(); |
} |
-// TODO(akalin): Flesh out unit tests. |
+TEST_F(ChromeInvalidationClientTest, WriteState) { |
+ EXPECT_CALL(mock_invalidation_state_tracker_, |
+ SetInvalidationState(kNewState)); |
+ client_.WriteState(kNewState); |
+} |
+ |
+TEST_F(ChromeInvalidationClientTest, StateChangesNotReady) { |
+ InSequence dummy; |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_OFF)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(CREDENTIALS_REJECTED)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_OFF)); |
+ |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_OFF); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::CREDENTIALS_REJECTED); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_ON); |
+} |
+ |
+TEST_F(ChromeInvalidationClientTest, StateChangesReady) { |
+ InSequence dummy; |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_OFF)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_ON)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_OFF)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(CREDENTIALS_REJECTED)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_ON)); |
+ |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_ON); |
+ client_.Ready(NULL); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_OFF); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::CREDENTIALS_REJECTED); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_ON); |
+} |
+ |
+TEST_F(ChromeInvalidationClientTest, StateChangesAuthError) { |
+ InSequence dummy; |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_OFF)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_ON)); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(CREDENTIALS_REJECTED)).Times(4); |
+ EXPECT_CALL(mock_listener_, |
+ OnSyncNotifierStateChange(NOTIFICATIONS_ON)); |
+ |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_ON); |
+ client_.Ready(NULL); |
+ |
+ client_.InformError( |
+ NULL, |
+ invalidation::ErrorInfo( |
+ invalidation::ErrorReason::AUTH_FAILURE, |
+ false /* is_transient */, |
+ "auth error", |
+ invalidation::ErrorContext())); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_OFF); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::CREDENTIALS_REJECTED); |
+ fake_push_client_->SimulatePushClientStateChange( |
+ notifier::NOTIFICATIONS_ON); |
+ client_.Ready(NULL); |
+} |
} // namespace sync_notifier |