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

Side by Side Diff: chrome/browser/signin/force_signin_verifier_unittest.cc

Issue 2802373002: Add ForceSigninVerifier. (Closed)
Patch Set: add comments Created 3 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/signin/force_signin_verifier.h"
6
7 #include "chrome/test/base/testing_profile.h"
8 #include "content/public/test/test_browser_thread_bundle.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 class MockForceSigninVerifier : public ForceSigninVerifier {
13 public:
14 explicit MockForceSigninVerifier(Profile* profile)
15 : ForceSigninVerifier(profile) {}
16
17 bool ShouldSendRequest() override { return true; }
18
19 void SendTestRequest() { SendRequest(); }
20
21 bool HasVerified() { return has_token_verified_; }
22
23 bool IsDelayTaskPosted() { return backoff_request_timer_.IsRunning(); }
24
25 int FailureCount() { return backoff_entry_.failure_count(); }
26
27 OAuth2TokenService::Request* request() { return access_token_request_.get(); }
28
29 MOCK_METHOD0(ShowDialog, void(void));
30 };
31
32 class ForceSigninVerifierTest : public ::testing::Test {
33 public:
34 void SetUp() override {
35 verifier_ = base::MakeUnique<MockForceSigninVerifier>(&profile_);
36 }
37
38 void TearDown() override { verifier_.reset(); }
39
40 std::unique_ptr<MockForceSigninVerifier> verifier_;
41 content::TestBrowserThreadBundle bundle_;
42 TestingProfile profile_;
43
44 GoogleServiceAuthError persistent_error_ = GoogleServiceAuthError(
45 GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS);
46 GoogleServiceAuthError transient_error_ =
47 GoogleServiceAuthError(GoogleServiceAuthError::State::CONNECTION_FAILED);
48 };
49
50 TEST_F(ForceSigninVerifierTest, OnGetTokenSuccess) {
51 ASSERT_EQ(nullptr, verifier_->request());
52
53 verifier_->SendTestRequest();
54
55 ASSERT_NE(nullptr, verifier_->request());
56 ASSERT_FALSE(verifier_->HasVerified());
57 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
58 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(0);
59
60 verifier_->OnGetTokenSuccess(verifier_->request(), "", base::Time::Now());
61 ASSERT_EQ(nullptr, verifier_->request());
62 ASSERT_TRUE(verifier_->HasVerified());
63 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
64 ASSERT_EQ(0, verifier_->FailureCount());
65 }
66
67 TEST_F(ForceSigninVerifierTest, OnGetTokenPersistentFailure) {
68 ASSERT_EQ(nullptr, verifier_->request());
69
70 verifier_->SendTestRequest();
71
72 ASSERT_NE(nullptr, verifier_->request());
73 ASSERT_FALSE(verifier_->HasVerified());
74 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
75 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(1);
76
77 verifier_->OnGetTokenFailure(verifier_->request(), persistent_error_);
78 ASSERT_EQ(nullptr, verifier_->request());
79 ASSERT_TRUE(verifier_->HasVerified());
80 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
81 ASSERT_EQ(0, verifier_->FailureCount());
82 }
83
84 TEST_F(ForceSigninVerifierTest, OnGetTokenTransientFailure) {
85 ASSERT_EQ(nullptr, verifier_->request());
86
87 verifier_->SendTestRequest();
88 ASSERT_NE(nullptr, verifier_->request());
89 ASSERT_FALSE(verifier_->HasVerified());
90 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
91 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(0);
92
93 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
94 ASSERT_EQ(nullptr, verifier_->request());
95 ASSERT_FALSE(verifier_->HasVerified());
96 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
97 ASSERT_EQ(1, verifier_->FailureCount());
98 }
99
100 TEST_F(ForceSigninVerifierTest, OnLostConnection) {
101 verifier_->SendTestRequest();
102 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
103 ASSERT_EQ(1, verifier_->FailureCount());
104 ASSERT_EQ(nullptr, verifier_->request());
105 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
106
107 verifier_->OnNetworkChanged(
108 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE);
109
110 ASSERT_EQ(0, verifier_->FailureCount());
111 ASSERT_EQ(nullptr, verifier_->request());
112 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
113 }
114
115 TEST_F(ForceSigninVerifierTest, OnReconnected) {
116 verifier_->SendTestRequest();
117 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
118 ASSERT_EQ(1, verifier_->FailureCount());
119 ASSERT_EQ(nullptr, verifier_->request());
120 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
121
122 verifier_->OnNetworkChanged(
123 net::NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI);
124
125 ASSERT_EQ(0, verifier_->FailureCount());
126 ASSERT_NE(nullptr, verifier_->request());
127 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
128 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698