| Index: components/gcm_driver/gcm_client_impl_unittest.cc
|
| diff --git a/components/gcm_driver/gcm_client_impl_unittest.cc b/components/gcm_driver/gcm_client_impl_unittest.cc
|
| index 8257f1cfc567ad056a0bbda5354b0149df87ed92..9605cf0f29ea2036e8d5404f8748ac2f5f322865 100644
|
| --- a/components/gcm_driver/gcm_client_impl_unittest.cc
|
| +++ b/components/gcm_driver/gcm_client_impl_unittest.cc
|
| @@ -240,6 +240,8 @@ class GCMClientImplTest : public testing::Test,
|
|
|
| virtual void SetUp() override;
|
|
|
| + void SetUpUrlFetcherFactory();
|
| +
|
| void BuildGCMClient(base::TimeDelta clock_step);
|
| void InitializeGCMClient();
|
| void StartGCMClient();
|
| @@ -278,7 +280,8 @@ class GCMClientImplTest : public testing::Test,
|
| const gcm::GCMClient::SendErrorDetails& send_error_details) override;
|
| void OnSendAcknowledged(const std::string& app_id,
|
| const std::string& message_id) override;
|
| - void OnGCMReady(const std::vector<AccountMapping>& account_mappings) override;
|
| + void OnGCMReady(const std::vector<AccountMapping>& account_mappings,
|
| + const base::Time& last_token_fetch_time) override;
|
| void OnActivityRecorded() override {}
|
| void OnConnected(const net::IPEndPoint& ip_endpoint) override {}
|
| void OnDisconnected() override {}
|
| @@ -301,6 +304,8 @@ class GCMClientImplTest : public testing::Test,
|
| last_registration_id_.clear();
|
| last_message_id_.clear();
|
| last_result_ = GCMClient::UNKNOWN_ERROR;
|
| + last_account_mappings_.clear();
|
| + last_token_fetch_time_ = base::Time();
|
| }
|
|
|
| LastEvent last_event() const { return last_event_; }
|
| @@ -316,6 +321,12 @@ class GCMClientImplTest : public testing::Test,
|
| const GCMClient::SendErrorDetails& last_error_details() const {
|
| return last_error_details_;
|
| }
|
| + const base::Time& last_token_fetch_time() const {
|
| + return last_token_fetch_time_;
|
| + }
|
| + const std::vector<AccountMapping>& last_account_mappings() {
|
| + return last_account_mappings_;
|
| + }
|
|
|
| const GServicesSettings& gservices_settings() const {
|
| return gcm_client_->gservices_settings_;
|
| @@ -342,6 +353,8 @@ class GCMClientImplTest : public testing::Test,
|
| GCMClient::Result last_result_;
|
| GCMClient::IncomingMessage last_message_;
|
| GCMClient::SendErrorDetails last_error_details_;
|
| + base::Time last_token_fetch_time_;
|
| + std::vector<AccountMapping> last_account_mappings_;
|
|
|
| scoped_ptr<GCMClientImpl> gcm_client_;
|
|
|
| @@ -370,13 +383,17 @@ void GCMClientImplTest::SetUp() {
|
| BuildGCMClient(base::TimeDelta());
|
| InitializeGCMClient();
|
| StartGCMClient();
|
| - url_fetcher_factory_.set_remove_fetcher_on_delete(true);
|
| + SetUpUrlFetcherFactory();
|
| CompleteCheckin(kDeviceAndroidId,
|
| kDeviceSecurityToken,
|
| std::string(),
|
| std::map<std::string, std::string>());
|
| }
|
|
|
| +void GCMClientImplTest::SetUpUrlFetcherFactory() {
|
| + url_fetcher_factory_.set_remove_fetcher_on_delete(true);
|
| +}
|
| +
|
| void GCMClientImplTest::PumpLoop() {
|
| run_loop_->Run();
|
| run_loop_.reset(new base::RunLoop());
|
| @@ -514,11 +531,12 @@ void GCMClientImplTest::ReceiveOnMessageSentToMCS(
|
| }
|
|
|
| void GCMClientImplTest::OnGCMReady(
|
| - const std::vector<AccountMapping>& account_mappings) {
|
| + const std::vector<AccountMapping>& account_mappings,
|
| + const base::Time& last_token_fetch_time) {
|
| last_event_ = LOADING_COMPLETED;
|
| + last_account_mappings_ = account_mappings;
|
| + last_token_fetch_time_ = last_token_fetch_time;
|
| QuitLoop();
|
| - // TODO(fgorski): Add scenario verifying contents of account_mappings, when
|
| - // the list is not empty.
|
| }
|
|
|
| void GCMClientImplTest::OnMessageReceived(
|
| @@ -1000,6 +1018,8 @@ public:
|
| virtual ~GCMClientImplStartAndStopTest();
|
|
|
| virtual void SetUp() override;
|
| +
|
| + void DefaultCompleteCheckin();
|
| };
|
|
|
| GCMClientImplStartAndStopTest::GCMClientImplStartAndStopTest() {
|
| @@ -1016,6 +1036,15 @@ void GCMClientImplStartAndStopTest::SetUp() {
|
| InitializeGCMClient();
|
| }
|
|
|
| +void GCMClientImplStartAndStopTest::DefaultCompleteCheckin() {
|
| + SetUpUrlFetcherFactory();
|
| + CompleteCheckin(kDeviceAndroidId,
|
| + kDeviceSecurityToken,
|
| + std::string(),
|
| + std::map<std::string, std::string>());
|
| + PumpLoopUntilIdle();
|
| +}
|
| +
|
| TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestart) {
|
| // Start the GCM and wait until it is ready.
|
| gcm_client()->Start();
|
| @@ -1047,4 +1076,41 @@ TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestartImmediately) {
|
| PumpLoopUntilIdle();
|
| }
|
|
|
| +// Test for known account mappings and last token fetching time being passed
|
| +// to OnGCMReady.
|
| +TEST_F(GCMClientImplStartAndStopTest, OnGCMReadyAccountsAndTokenFetchingTime) {
|
| + // Start the GCM and wait until it is ready.
|
| + gcm_client()->Start();
|
| + PumpLoopUntilIdle();
|
| + DefaultCompleteCheckin();
|
| +
|
| + base::Time expected_time = base::Time::Now();
|
| + gcm_client()->SetLastTokenFetchTime(expected_time);
|
| + AccountMapping expected_mapping;
|
| + expected_mapping.account_id = "accId";
|
| + expected_mapping.email = "email@gmail.com";
|
| + expected_mapping.status = AccountMapping::MAPPED;
|
| + expected_mapping.status_change_timestamp = expected_time;
|
| + gcm_client()->UpdateAccountMapping(expected_mapping);
|
| + PumpLoopUntilIdle();
|
| +
|
| + // Stop the GCM.
|
| + gcm_client()->Stop();
|
| + PumpLoopUntilIdle();
|
| +
|
| + // Restart the GCM.
|
| + gcm_client()->Start();
|
| + PumpLoopUntilIdle();
|
| +
|
| + EXPECT_EQ(LOADING_COMPLETED, last_event());
|
| + EXPECT_EQ(expected_time, last_token_fetch_time());
|
| + ASSERT_EQ(1UL, last_account_mappings().size());
|
| + const AccountMapping& actual_mapping = last_account_mappings()[0];
|
| + EXPECT_EQ(expected_mapping.account_id, actual_mapping.account_id);
|
| + EXPECT_EQ(expected_mapping.email, actual_mapping.email);
|
| + EXPECT_EQ(expected_mapping.status, actual_mapping.status);
|
| + EXPECT_EQ(expected_mapping.status_change_timestamp,
|
| + actual_mapping.status_change_timestamp);
|
| +}
|
| +
|
| } // namespace gcm
|
|
|