Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(651)

Unified Diff: sync/notifier/chrome_invalidation_client_unittest.cc

Issue 10545170: [Sync] Propagate XMPP auth errors to SyncNotifierObservers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698