| Index: sync/internal_api/sync_manager_impl_unittest.cc
|
| ===================================================================
|
| --- sync/internal_api/sync_manager_impl_unittest.cc (revision 208727)
|
| +++ sync/internal_api/sync_manager_impl_unittest.cc (working copy)
|
| @@ -46,6 +46,7 @@
|
| #include "sync/js/js_reply_handler.h"
|
| #include "sync/js/js_test_util.h"
|
| #include "sync/notifier/fake_invalidation_handler.h"
|
| +#include "sync/notifier/fake_invalidator.h"
|
| #include "sync/notifier/invalidation_handler.h"
|
| #include "sync/notifier/invalidator.h"
|
| #include "sync/protocol/bookmark_specifics.pb.h"
|
| @@ -788,12 +789,14 @@
|
| };
|
|
|
| SyncManagerTest()
|
| - : sync_manager_("Test sync manager") {
|
| + : fake_invalidator_(NULL),
|
| + sync_manager_("Test sync manager") {
|
| switches_.encryption_method =
|
| InternalComponentsFactory::ENCRYPTION_KEYSTORE;
|
| }
|
|
|
| virtual ~SyncManagerTest() {
|
| + EXPECT_FALSE(fake_invalidator_);
|
| }
|
|
|
| // Test implementation.
|
| @@ -804,6 +807,8 @@
|
| credentials.email = "foo@bar.com";
|
| credentials.sync_token = "sometoken";
|
|
|
| + fake_invalidator_ = new FakeInvalidator();
|
| +
|
| sync_manager_.AddObserver(&manager_observer_);
|
| EXPECT_CALL(manager_observer_, OnInitializationComplete(_, _, _, _)).
|
| WillOnce(SaveArg<0>(&js_backend_));
|
| @@ -826,6 +831,7 @@
|
| &extensions_activity_monitor_,
|
| this,
|
| credentials,
|
| + scoped_ptr<Invalidator>(fake_invalidator_),
|
| "fake_invalidator_client_id",
|
| std::string(),
|
| std::string(), // bootstrap tokens
|
| @@ -845,11 +851,17 @@
|
| sync_manager_.GetUserShare(), i->first);
|
| }
|
| PumpLoop();
|
| +
|
| + EXPECT_TRUE(fake_invalidator_->IsHandlerRegistered(&sync_manager_));
|
| }
|
|
|
| void TearDown() {
|
| sync_manager_.RemoveObserver(&manager_observer_);
|
| sync_manager_.ShutdownOnSyncThread();
|
| + // We can't assert that |sync_manager_| isn't registered with
|
| + // |fake_invalidator_| anymore because |fake_invalidator_| is now
|
| + // destroyed.
|
| + fake_invalidator_ = NULL;
|
| PumpLoop();
|
| }
|
|
|
| @@ -1015,6 +1027,7 @@
|
| protected:
|
| FakeEncryptor encryptor_;
|
| TestUnrecoverableErrorHandler handler_;
|
| + FakeInvalidator* fake_invalidator_;
|
| SyncManagerImpl sync_manager_;
|
| WeakHandle<JsBackend> js_backend_;
|
| StrictMock<SyncManagerObserverMock> manager_observer_;
|
| @@ -1022,6 +1035,29 @@
|
| InternalComponentsFactory::Switches switches_;
|
| };
|
|
|
| +TEST_F(SyncManagerTest, UpdateEnabledTypes) {
|
| + ModelSafeRoutingInfo routes;
|
| + GetModelSafeRoutingInfo(&routes);
|
| + const ModelTypeSet enabled_types = GetRoutingInfoTypes(routes);
|
| + sync_manager_.UpdateEnabledTypes(enabled_types);
|
| + EXPECT_EQ(ModelTypeSetToObjectIdSet(enabled_types),
|
| + fake_invalidator_->GetRegisteredIds(&sync_manager_));
|
| +}
|
| +
|
| +TEST_F(SyncManagerTest, RegisterInvalidationHandler) {
|
| + FakeInvalidationHandler fake_handler;
|
| + sync_manager_.RegisterInvalidationHandler(&fake_handler);
|
| + EXPECT_TRUE(fake_invalidator_->IsHandlerRegistered(&fake_handler));
|
| +
|
| + const ObjectIdSet& ids =
|
| + ModelTypeSetToObjectIdSet(ModelTypeSet(BOOKMARKS, PREFERENCES));
|
| + sync_manager_.UpdateRegisteredInvalidationIds(&fake_handler, ids);
|
| + EXPECT_EQ(ids, fake_invalidator_->GetRegisteredIds(&fake_handler));
|
| +
|
| + sync_manager_.UnregisterInvalidationHandler(&fake_handler);
|
| + EXPECT_FALSE(fake_invalidator_->IsHandlerRegistered(&fake_handler));
|
| +}
|
| +
|
| TEST_F(SyncManagerTest, ProcessJsMessage) {
|
| const JsArgList kNoArgs;
|
|
|
| @@ -1326,6 +1362,14 @@
|
| base::DictionaryValue auth_error_details;
|
| auth_error_details.SetString("status", "CONNECTION_AUTH_ERROR");
|
|
|
| + EXPECT_CALL(manager_observer_,
|
| + OnConnectionStatusChange(CONNECTION_AUTH_ERROR));
|
| +
|
| + EXPECT_CALL(
|
| + event_handler,
|
| + HandleJsEvent("onConnectionStatusChange",
|
| + HasDetailsAsDictionary(auth_error_details)));
|
| +
|
| EXPECT_CALL(event_handler,
|
| HandleJsEvent("onNotificationStateChange",
|
| HasDetailsAsDictionary(enabled_details)));
|
| @@ -1366,6 +1410,22 @@
|
| PumpLoop();
|
| }
|
|
|
| +// Simulate the invalidator's credentials being rejected. That should
|
| +// also clear the sync token.
|
| +TEST_F(SyncManagerTest, OnInvalidatorStateChangeCredentialsRejected) {
|
| + EXPECT_CALL(manager_observer_,
|
| + OnConnectionStatusChange(CONNECTION_AUTH_ERROR));
|
| +
|
| + EXPECT_FALSE(sync_manager_.GetHasInvalidAuthTokenForTest());
|
| +
|
| + SimulateInvalidatorStateChangeForTest(INVALIDATION_CREDENTIALS_REJECTED);
|
| +
|
| + EXPECT_TRUE(sync_manager_.GetHasInvalidAuthTokenForTest());
|
| +
|
| + // Should trigger the replies.
|
| + PumpLoop();
|
| +}
|
| +
|
| TEST_F(SyncManagerTest, OnIncomingNotification) {
|
| StrictMock<MockJsEventHandler> event_handler;
|
|
|
|
|