| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <stddef.h> |
| |
| #include <string> |
| |
| #include "base/macros.h" |
| #include "google_apis/gaia/fake_oauth2_token_service_delegate.h" |
| #include "google_apis/gaia/gaia_urls.h" |
| #include "google_apis/gaia/google_service_auth_error.h" |
| #include "google_apis/gaia/oauth2_token_service_delegate.h" |
| #include "services/network/test/test_utils.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| // The default implementation of |
| // OAuth2TokenServiceDelegate::InvalidateTokensForMultilogin is used on mobile |
| // where refresh tokens are not accessible. This test checks that refresh tokens |
| // are not affected on INVALID_TOKENS Multilogin error. |
| TEST(OAuth2TokenServiceDelegateTest, InvalidateTokensForMultilogin) { |
| class TestOAuth2TokenServiceObserver : public OAuth2TokenServiceObserver { |
| public: |
| MOCK_METHOD2(OnAuthErrorChanged, |
| void(const CoreAccountId&, const GoogleServiceAuthError&)); |
| }; |
| |
| FakeOAuth2TokenServiceDelegate delegate; |
| |
| TestOAuth2TokenServiceObserver observer; |
| delegate.AddObserver(&observer); |
| // Check that OnAuthErrorChanged is not fired from |
| // InvalidateTokensForMultilogin and refresh tokens are not set in error. |
| EXPECT_CALL( |
| observer, |
| OnAuthErrorChanged(::testing::_, |
| GoogleServiceAuthError( |
| GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS))) |
| .Times(0); |
| |
| const CoreAccountId account_id1("account_id1"); |
| const CoreAccountId account_id2("account_id2"); |
| |
| delegate.UpdateCredentials(account_id1, "refresh_token1"); |
| delegate.UpdateCredentials(account_id2, "refresh_token2"); |
| |
| delegate.InvalidateTokenForMultilogin(account_id1); |
| |
| EXPECT_EQ(delegate.GetAuthError(account_id1).state(), |
| GoogleServiceAuthError::NONE); |
| EXPECT_EQ(delegate.GetAuthError(account_id2).state(), |
| GoogleServiceAuthError::NONE); |
| |
| delegate.RemoveObserver(&observer); |
| } |