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

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

Issue 2802373002: Add ForceSigninVerifier. (Closed)
Patch Set: rogers' 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
« no previous file with comments | « chrome/browser/signin/force_signin_verifier.cc ('k') | chrome/browser/signin/signin_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 IsDelayTaskPosted() { return GetOneShotTimerForTesting()->IsRunning(); }
22
23 int FailureCount() { return GetBackoffEntryForTesting()->failure_count(); }
24
25 OAuth2TokenService::Request* request() { return GetRequestForTesting(); }
26
27 MOCK_METHOD0(ShowDialog, void(void));
28 };
29
30 class ForceSigninVerifierTest : public ::testing::Test {
31 public:
32 void SetUp() override {
33 verifier_ = base::MakeUnique<MockForceSigninVerifier>(&profile_);
34 }
35
36 void TearDown() override { verifier_.reset(); }
37
38 std::unique_ptr<MockForceSigninVerifier> verifier_;
39 content::TestBrowserThreadBundle bundle_;
40 TestingProfile profile_;
41
42 GoogleServiceAuthError persistent_error_ = GoogleServiceAuthError(
43 GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS);
44 GoogleServiceAuthError transient_error_ =
45 GoogleServiceAuthError(GoogleServiceAuthError::State::CONNECTION_FAILED);
46 };
47
48 TEST_F(ForceSigninVerifierTest, OnGetTokenSuccess) {
49 ASSERT_EQ(nullptr, verifier_->request());
50
51 verifier_->SendTestRequest();
52
53 ASSERT_NE(nullptr, verifier_->request());
54 ASSERT_FALSE(verifier_->HasTokenBeenVerified());
55 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
56 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(0);
57
58 verifier_->OnGetTokenSuccess(verifier_->request(), "", base::Time::Now());
59 ASSERT_EQ(nullptr, verifier_->request());
60 ASSERT_TRUE(verifier_->HasTokenBeenVerified());
61 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
62 ASSERT_EQ(0, verifier_->FailureCount());
63 }
64
65 TEST_F(ForceSigninVerifierTest, OnGetTokenPersistentFailure) {
66 ASSERT_EQ(nullptr, verifier_->request());
67
68 verifier_->SendTestRequest();
69
70 ASSERT_NE(nullptr, verifier_->request());
71 ASSERT_FALSE(verifier_->HasTokenBeenVerified());
72 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
73 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(1);
74
75 verifier_->OnGetTokenFailure(verifier_->request(), persistent_error_);
76 ASSERT_EQ(nullptr, verifier_->request());
77 ASSERT_TRUE(verifier_->HasTokenBeenVerified());
78 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
79 ASSERT_EQ(0, verifier_->FailureCount());
80 }
81
82 TEST_F(ForceSigninVerifierTest, OnGetTokenTransientFailure) {
83 ASSERT_EQ(nullptr, verifier_->request());
84
85 verifier_->SendTestRequest();
86 ASSERT_NE(nullptr, verifier_->request());
87 ASSERT_FALSE(verifier_->HasTokenBeenVerified());
88 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
89 EXPECT_CALL(*verifier_.get(), ShowDialog()).Times(0);
90
91 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
92 ASSERT_EQ(nullptr, verifier_->request());
93 ASSERT_FALSE(verifier_->HasTokenBeenVerified());
94 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
95 ASSERT_EQ(1, verifier_->FailureCount());
96 }
97
98 TEST_F(ForceSigninVerifierTest, OnLostConnection) {
99 verifier_->SendTestRequest();
100 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
101 ASSERT_EQ(1, verifier_->FailureCount());
102 ASSERT_EQ(nullptr, verifier_->request());
103 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
104
105 verifier_->OnNetworkChanged(
106 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE);
107
108 ASSERT_EQ(0, verifier_->FailureCount());
109 ASSERT_EQ(nullptr, verifier_->request());
110 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
111 }
112
113 TEST_F(ForceSigninVerifierTest, OnReconnected) {
114 verifier_->SendTestRequest();
115 verifier_->OnGetTokenFailure(verifier_->request(), transient_error_);
116 ASSERT_EQ(1, verifier_->FailureCount());
117 ASSERT_EQ(nullptr, verifier_->request());
118 ASSERT_TRUE(verifier_->IsDelayTaskPosted());
119
120 verifier_->OnNetworkChanged(
121 net::NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI);
122
123 ASSERT_EQ(0, verifier_->FailureCount());
124 ASSERT_NE(nullptr, verifier_->request());
125 ASSERT_FALSE(verifier_->IsDelayTaskPosted());
126 }
OLDNEW
« no previous file with comments | « chrome/browser/signin/force_signin_verifier.cc ('k') | chrome/browser/signin/signin_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698