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

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

Issue 299943003: Refactor ProfileOAuth2TokenServiceRequest into OAuth2TokenServiceRequest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Allow ProfileOAuth2TokenServiceRequestTest to free UI thread resources. Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 #include "chrome/browser/signin/profile_oauth2_token_service_request.h" 4 #include "chrome/browser/signin/profile_oauth2_token_service_request.h"
5 5
6 #include <set> 6 #include <set>
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 const OAuth2TokenService::Request* request, 61 const OAuth2TokenService::Request* request,
62 const GoogleServiceAuthError& error) { 62 const GoogleServiceAuthError& error) {
63 last_error_ = error; 63 last_error_ = error;
64 ++number_of_errors_; 64 ++number_of_errors_;
65 } 65 }
66 66
67 class ProfileOAuth2TokenServiceRequestTest : public testing::Test { 67 class ProfileOAuth2TokenServiceRequestTest : public testing::Test {
68 public: 68 public:
69 virtual void SetUp() OVERRIDE; 69 virtual void SetUp() OVERRIDE;
70 70
71 virtual void TearDown() OVERRIDE;
72
71 protected: 73 protected:
72 base::MessageLoop ui_loop_; 74 base::MessageLoop ui_loop_;
73 scoped_ptr<content::TestBrowserThread> ui_thread_; 75 scoped_ptr<content::TestBrowserThread> ui_thread_;
74 76
75 scoped_ptr<Profile> profile_; 77 scoped_ptr<Profile> profile_;
76 TestingOAuth2TokenServiceConsumer consumer_; 78 TestingOAuth2TokenServiceConsumer consumer_;
77 FakeProfileOAuth2TokenService* oauth2_service_; 79 FakeProfileOAuth2TokenService* oauth2_service_;
78 80
79 scoped_ptr<ProfileOAuth2TokenServiceRequest> request_; 81 scoped_ptr<ProfileOAuth2TokenServiceRequest> request_;
80 }; 82 };
81 83
82 void ProfileOAuth2TokenServiceRequestTest::SetUp() { 84 void ProfileOAuth2TokenServiceRequestTest::SetUp() {
83 ui_thread_.reset(new content::TestBrowserThread(content::BrowserThread::UI, 85 ui_thread_.reset(new content::TestBrowserThread(content::BrowserThread::UI,
84 &ui_loop_)); 86 &ui_loop_));
85 TestingProfile::Builder builder; 87 TestingProfile::Builder builder;
86 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(), 88 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
87 &BuildFakeProfileOAuth2TokenService); 89 &BuildFakeProfileOAuth2TokenService);
88 profile_ = builder.Build(); 90 profile_ = builder.Build();
89 91
90 oauth2_service_ = (FakeProfileOAuth2TokenService*) 92 oauth2_service_ = (FakeProfileOAuth2TokenService*)
91 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()); 93 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get());
92 } 94 }
93 95
96 void ProfileOAuth2TokenServiceRequestTest::TearDown() {
97 // Destroy the request and run the message loop one last time to ensure that
98 // resources that must be destroyed in the UI thread get cleaned up.
99 request_.reset();
100 ui_loop_.RunUntilIdle();
101 }
102
94 TEST_F(ProfileOAuth2TokenServiceRequestTest, 103 TEST_F(ProfileOAuth2TokenServiceRequestTest,
95 Failure) { 104 Failure) {
96 scoped_ptr<ProfileOAuth2TokenServiceRequest> request( 105 scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
97 ProfileOAuth2TokenServiceRequest::CreateAndStart( 106 ProfileOAuth2TokenServiceRequest::CreateAndStart(
98 profile_.get(), 107 profile_.get(),
99 std::string(), 108 kAccountId,
100 OAuth2TokenService::ScopeSet(), 109 OAuth2TokenService::ScopeSet(),
101 &consumer_)); 110 &consumer_));
111 // Run to ensure the request has been made.
112 ui_loop_.RunUntilIdle();
102 oauth2_service_->IssueErrorForAllPendingRequests( 113 oauth2_service_->IssueErrorForAllPendingRequests(
103 GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE)); 114 GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE));
104 ui_loop_.RunUntilIdle(); 115 ui_loop_.RunUntilIdle();
105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 116 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
106 EXPECT_EQ(1, consumer_.number_of_errors_); 117 EXPECT_EQ(1, consumer_.number_of_errors_);
107 } 118 }
108 119
109 TEST_F(ProfileOAuth2TokenServiceRequestTest, Success) { 120 TEST_F(ProfileOAuth2TokenServiceRequestTest, Success) {
110 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken); 121 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
111 scoped_ptr<ProfileOAuth2TokenServiceRequest> request( 122 scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
112 ProfileOAuth2TokenServiceRequest::CreateAndStart( 123 ProfileOAuth2TokenServiceRequest::CreateAndStart(
113 profile_.get(), 124 profile_.get(),
114 kAccountId, 125 kAccountId,
115 OAuth2TokenService::ScopeSet(), 126 OAuth2TokenService::ScopeSet(),
116 &consumer_)); 127 &consumer_));
128 // Run to ensure the request has been made.
129 ui_loop_.RunUntilIdle();
117 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken, 130 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
118 base::Time::Max()); 131 base::Time::Max());
119 ui_loop_.RunUntilIdle(); 132 ui_loop_.RunUntilIdle();
120 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 133 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
121 EXPECT_EQ(kAccessToken, consumer_.last_token_); 134 EXPECT_EQ(kAccessToken, consumer_.last_token_);
122 EXPECT_EQ(0, consumer_.number_of_errors_); 135 EXPECT_EQ(0, consumer_.number_of_errors_);
123 } 136 }
124 137
125 TEST_F(ProfileOAuth2TokenServiceRequestTest, 138 TEST_F(ProfileOAuth2TokenServiceRequestTest,
126 RequestDeletionBeforeServiceComplete) { 139 RequestDeletionBeforeServiceComplete) {
127 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken); 140 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
128 scoped_ptr<ProfileOAuth2TokenServiceRequest> request( 141 scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
129 ProfileOAuth2TokenServiceRequest::CreateAndStart( 142 ProfileOAuth2TokenServiceRequest::CreateAndStart(
130 profile_.get(), 143 profile_.get(),
131 kAccountId, 144 kAccountId,
132 OAuth2TokenService::ScopeSet(), 145 OAuth2TokenService::ScopeSet(),
133 &consumer_)); 146 &consumer_));
147 // Run to ensure the request has been made.
148 ui_loop_.RunUntilIdle();
134 request.reset(); 149 request.reset();
135 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken, 150 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
136 base::Time::Max()); 151 base::Time::Max());
137 ui_loop_.RunUntilIdle(); 152 ui_loop_.RunUntilIdle();
138 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); 153 EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
139 EXPECT_EQ(0, consumer_.number_of_errors_); 154 EXPECT_EQ(0, consumer_.number_of_errors_);
140 } 155 }
141 156
142 TEST_F(ProfileOAuth2TokenServiceRequestTest, 157 TEST_F(ProfileOAuth2TokenServiceRequestTest,
143 RequestDeletionAfterServiceComplete) { 158 RequestDeletionAfterServiceComplete) {
144 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken); 159 oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
145 scoped_ptr<ProfileOAuth2TokenServiceRequest> request( 160 scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
146 ProfileOAuth2TokenServiceRequest::CreateAndStart( 161 ProfileOAuth2TokenServiceRequest::CreateAndStart(
147 profile_.get(), 162 profile_.get(),
148 kAccountId, 163 kAccountId,
149 OAuth2TokenService::ScopeSet(), 164 OAuth2TokenService::ScopeSet(),
150 &consumer_)); 165 &consumer_));
166 // Run to ensure the request has been made.
167 ui_loop_.RunUntilIdle();
151 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken, 168 oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
152 base::Time::Max()); 169 base::Time::Max());
153 ui_loop_.RunUntilIdle(); 170 ui_loop_.RunUntilIdle();
154 request.reset(); 171 request.reset();
155 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); 172 EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
156 EXPECT_EQ(0, consumer_.number_of_errors_); 173 EXPECT_EQ(0, consumer_.number_of_errors_);
157 } 174 }
158 175
159 } // namespace 176 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698