: factory_(NULL),
token_available_count_(0),
token_revoked_count_(0),
- tokens_loaded_count_(0) {}
+ tokens_loaded_count_(0),
+ start_batch_changes_(0),
+ end_batch_changes_(0) {}
virtual void SetUp() OVERRIDE {
#if defined(OS_MACOSX)
}
virtual void OnRefreshTokensLoaded() OVERRIDE { ++tokens_loaded_count_; }
+ virtual void OnStartBatchChanges() OVERRIDE {
+ ++start_batch_changes_;
+ }
+
+ virtual void OnEndBatchChanges() OVERRIDE {
+ ++end_batch_changes_;
+ }
+
void ResetObserverCounts() {
token_available_count_ = 0;
token_revoked_count_ = 0;
tokens_loaded_count_ = 0;
+ start_batch_changes_ = 0;
+ end_batch_changes_ = 0;
}
void ExpectNoNotifications() {
int token_available_count_;
int token_revoked_count_;
int tokens_loaded_count_;
+ int start_batch_changes_;
+ int end_batch_changes_;
};
TEST_F(MutableProfileOAuth2TokenServiceTest, PersistenceDBUpgrade) {
// Legacy tokens get discarded, but the old refresh token is kept.
EXPECT_EQ(1, tokens_loaded_count_);
EXPECT_EQ(1, token_available_count_);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable(main_account_id));
EXPECT_EQ(1U, oauth2_service_.refresh_tokens().size());
EXPECT_EQ(main_refresh_token,
// token is present it is not overwritten.
EXPECT_EQ(2, token_available_count_);
EXPECT_EQ(1, tokens_loaded_count_);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
EXPECT_TRUE(oauth2_service_.RefreshTokenIsAvailable(main_account_id));
// TODO(fgorski): cover both using RefreshTokenIsAvailable() and then get the
// tokens using GetRefreshToken()
oauth2_service_.refresh_tokens()[other_account_id]->refresh_token());
oauth2_service_.RevokeAllCredentials();
+ EXPECT_EQ(2, start_batch_changes_);
+ EXPECT_EQ(2, end_batch_changes_);
}
TEST_F(MutableProfileOAuth2TokenServiceTest, PersistenceRevokeCredentials) {
oauth2_service_.UpdateCredentials(account_id_1, refresh_token_1);
oauth2_service_.UpdateCredentials(account_id_2, refresh_token_2);
+ EXPECT_EQ(2, start_batch_changes_);
+ EXPECT_EQ(2, end_batch_changes_);
// TODO(fgorski): Enable below when implemented:
// EXPECT_TRUE(oauth2_servive_->RefreshTokenIsAvailable(account_id_1));
ResetObserverCounts();
oauth2_service_.RevokeCredentials(account_id_1);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
ExpectOneTokenRevokedNotification();
// TODO(fgorski): Enable below when implemented:
EXPECT_EQ(0, token_available_count_);
EXPECT_EQ(1, token_revoked_count_);
EXPECT_EQ(0, tokens_loaded_count_);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
ResetObserverCounts();
}
// Perform a load from an empty DB.
oauth2_service_.LoadCredentials("account_id");
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
ExpectOneTokensLoadedNotification();
// LoadCredentials() guarantees that the account given to it as argument
// is in the refresh_token map.
oauth2_service_.UpdateCredentials("account_id", "refresh_token");
oauth2_service_.UpdateCredentials("account_id2", "refresh_token2");
oauth2_service_.refresh_tokens().clear();
+ EXPECT_EQ(2, start_batch_changes_);
+ EXPECT_EQ(2, end_batch_changes_);
ResetObserverCounts();
oauth2_service_.LoadCredentials("account_id");
EXPECT_EQ(2, token_available_count_);
EXPECT_EQ(0, token_revoked_count_);
EXPECT_EQ(1, tokens_loaded_count_);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
ResetObserverCounts();
// TODO(fgorski): Enable below when implemented:
EXPECT_EQ(0, token_available_count_);
EXPECT_EQ(2, token_revoked_count_);
EXPECT_EQ(0, tokens_loaded_count_);
+ EXPECT_EQ(1, start_batch_changes_);
+ EXPECT_EQ(1, end_batch_changes_);
ResetObserverCounts();
}