OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "google_apis/gaia/gaia_constants.h" | 9 #include "google_apis/gaia/gaia_constants.h" |
10 #include "google_apis/gaia/google_service_auth_error.h" | 10 #include "google_apis/gaia/google_service_auth_error.h" |
11 #include "google_apis/gaia/oauth2_access_token_consumer.h" | 11 #include "google_apis/gaia/oauth2_access_token_consumer.h" |
12 #include "google_apis/gaia/oauth2_access_token_fetcher.h" | |
13 #include "google_apis/gaia/oauth2_token_service.h" | 12 #include "google_apis/gaia/oauth2_token_service.h" |
14 #include "google_apis/gaia/oauth2_token_service_test_util.h" | 13 #include "google_apis/gaia/oauth2_token_service_test_util.h" |
15 #include "net/http/http_status_code.h" | 14 #include "net/http/http_status_code.h" |
16 #include "net/url_request/test_url_fetcher_factory.h" | 15 #include "net/url_request/test_url_fetcher_factory.h" |
17 #include "net/url_request/url_fetcher_delegate.h" | 16 #include "net/url_request/url_fetcher_delegate.h" |
18 #include "net/url_request/url_request_test_util.h" | 17 #include "net/url_request/url_request_test_util.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
20 | 19 |
21 // A testing consumer that retries on error. | 20 // A testing consumer that retries on error. |
22 class RetryingTestingOAuth2TokenServiceConsumer | 21 class RetryingTestingOAuth2TokenServiceConsumer |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 public: | 71 public: |
73 virtual void SetUp() OVERRIDE { | 72 virtual void SetUp() OVERRIDE { |
74 oauth2_service_.reset( | 73 oauth2_service_.reset( |
75 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( | 74 new TestOAuth2TokenService(new net::TestURLRequestContextGetter( |
76 message_loop_.message_loop_proxy()))); | 75 message_loop_.message_loop_proxy()))); |
77 } | 76 } |
78 | 77 |
79 virtual void TearDown() OVERRIDE { | 78 virtual void TearDown() OVERRIDE { |
80 // Makes sure that all the clean up tasks are run. | 79 // Makes sure that all the clean up tasks are run. |
81 base::RunLoop().RunUntilIdle(); | 80 base::RunLoop().RunUntilIdle(); |
82 OAuth2AccessTokenFetcher::ResetLastFetcherIdForTest(); | |
83 } | 81 } |
84 | 82 |
85 protected: | 83 protected: |
86 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. | 84 base::MessageLoopForIO message_loop_; // net:: stuff needs IO message loop. |
87 net::TestURLFetcherFactory factory_; | 85 net::TestURLFetcherFactory factory_; |
88 scoped_ptr<TestOAuth2TokenService> oauth2_service_; | 86 scoped_ptr<TestOAuth2TokenService> oauth2_service_; |
89 TestingOAuth2TokenServiceConsumer consumer_; | 87 TestingOAuth2TokenServiceConsumer consumer_; |
90 }; | 88 }; |
91 | 89 |
92 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { | 90 TEST_F(OAuth2TokenServiceTest, NoOAuth2RefreshToken) { |
93 scoped_ptr<OAuth2TokenService::Request> request( | 91 scoped_ptr<OAuth2TokenService::Request> request( |
94 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 92 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
95 base::RunLoop().RunUntilIdle(); | 93 base::RunLoop().RunUntilIdle(); |
96 | 94 |
97 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 95 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
98 EXPECT_EQ(1, consumer_.number_of_errors_); | 96 EXPECT_EQ(1, consumer_.number_of_errors_); |
99 } | 97 } |
100 | 98 |
101 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { | 99 TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) { |
102 oauth2_service_->set_refresh_token("refreshToken"); | 100 oauth2_service_->set_refresh_token("refreshToken"); |
103 scoped_ptr<OAuth2TokenService::Request> request( | 101 scoped_ptr<OAuth2TokenService::Request> request( |
104 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 102 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
105 base::RunLoop().RunUntilIdle(); | 103 base::RunLoop().RunUntilIdle(); |
106 | 104 |
107 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 105 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
108 EXPECT_EQ(0, consumer_.number_of_errors_); | 106 EXPECT_EQ(0, consumer_.number_of_errors_); |
109 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 107 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
110 ASSERT_TRUE(fetcher); | 108 EXPECT_TRUE(fetcher); |
111 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 109 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
112 fetcher->SetResponseString(std::string()); | 110 fetcher->SetResponseString(std::string()); |
113 fetcher->delegate()->OnURLFetchComplete(fetcher); | 111 fetcher->delegate()->OnURLFetchComplete(fetcher); |
114 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 112 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
115 EXPECT_EQ(1, consumer_.number_of_errors_); | 113 EXPECT_EQ(1, consumer_.number_of_errors_); |
116 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); | 114 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
117 } | 115 } |
118 | 116 |
119 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { | 117 TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) { |
120 oauth2_service_->set_refresh_token("refreshToken"); | 118 oauth2_service_->set_refresh_token("refreshToken"); |
121 scoped_ptr<OAuth2TokenService::Request> request( | 119 scoped_ptr<OAuth2TokenService::Request> request( |
122 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 120 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
123 base::RunLoop().RunUntilIdle(); | 121 base::RunLoop().RunUntilIdle(); |
124 | 122 |
125 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 123 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
126 EXPECT_EQ(0, consumer_.number_of_errors_); | 124 EXPECT_EQ(0, consumer_.number_of_errors_); |
127 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 125 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
128 ASSERT_TRUE(fetcher); | 126 EXPECT_TRUE(fetcher); |
129 fetcher->set_response_code(net::HTTP_OK); | 127 fetcher->set_response_code(net::HTTP_OK); |
130 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 128 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
131 fetcher->delegate()->OnURLFetchComplete(fetcher); | 129 fetcher->delegate()->OnURLFetchComplete(fetcher); |
132 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 130 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
133 EXPECT_EQ(0, consumer_.number_of_errors_); | 131 EXPECT_EQ(0, consumer_.number_of_errors_); |
134 EXPECT_EQ("token", consumer_.last_token_); | 132 EXPECT_EQ("token", consumer_.last_token_); |
135 } | 133 } |
136 | 134 |
137 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { | 135 TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) { |
138 std::set<std::string> scopes1; | 136 std::set<std::string> scopes1; |
139 scopes1.insert("s1"); | 137 scopes1.insert("s1"); |
140 scopes1.insert("s2"); | 138 scopes1.insert("s2"); |
141 std::set<std::string> scopes1_same; | 139 std::set<std::string> scopes1_same; |
142 scopes1_same.insert("s2"); | 140 scopes1_same.insert("s2"); |
143 scopes1_same.insert("s1"); | 141 scopes1_same.insert("s1"); |
144 std::set<std::string> scopes2; | 142 std::set<std::string> scopes2; |
145 scopes2.insert("s3"); | 143 scopes2.insert("s3"); |
146 | 144 |
147 oauth2_service_->set_refresh_token("refreshToken"); | 145 oauth2_service_->set_refresh_token("refreshToken"); |
148 | 146 |
149 // First request. | 147 // First request. |
150 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 148 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
151 scopes1, &consumer_)); | 149 scopes1, &consumer_)); |
152 base::RunLoop().RunUntilIdle(); | 150 base::RunLoop().RunUntilIdle(); |
153 | 151 |
154 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 152 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
155 EXPECT_EQ(0, consumer_.number_of_errors_); | 153 EXPECT_EQ(0, consumer_.number_of_errors_); |
156 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 154 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
157 ASSERT_TRUE(fetcher); | 155 EXPECT_TRUE(fetcher); |
158 fetcher->set_response_code(net::HTTP_OK); | 156 fetcher->set_response_code(net::HTTP_OK); |
159 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 157 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
160 fetcher->delegate()->OnURLFetchComplete(fetcher); | 158 fetcher->delegate()->OnURLFetchComplete(fetcher); |
161 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 159 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
162 EXPECT_EQ(0, consumer_.number_of_errors_); | 160 EXPECT_EQ(0, consumer_.number_of_errors_); |
163 EXPECT_EQ("token", consumer_.last_token_); | 161 EXPECT_EQ("token", consumer_.last_token_); |
164 | 162 |
165 // Second request to the same set of scopes, should return the same token | 163 // Second request to the same set of scopes, should return the same token |
166 // without needing a network request. | 164 // without needing a network request. |
167 scoped_ptr<OAuth2TokenService::Request> request2( | 165 scoped_ptr<OAuth2TokenService::Request> request2( |
168 oauth2_service_->StartRequest(scopes1_same, &consumer_)); | 166 oauth2_service_->StartRequest(scopes1_same, &consumer_)); |
169 base::RunLoop().RunUntilIdle(); | 167 base::RunLoop().RunUntilIdle(); |
170 | 168 |
171 // No new network fetcher. | 169 // No new network fetcher. |
172 EXPECT_EQ(1U, factory_.GetFetcherCount()); | 170 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
173 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 171 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
174 EXPECT_EQ(0, consumer_.number_of_errors_); | 172 EXPECT_EQ(0, consumer_.number_of_errors_); |
175 EXPECT_EQ("token", consumer_.last_token_); | 173 EXPECT_EQ("token", consumer_.last_token_); |
176 | 174 |
177 // Third request to a new set of scopes, should return another token. | 175 // Third request to a new set of scopes, should return another token. |
178 scoped_ptr<OAuth2TokenService::Request> request3( | 176 scoped_ptr<OAuth2TokenService::Request> request3( |
179 oauth2_service_->StartRequest(scopes2, &consumer_)); | 177 oauth2_service_->StartRequest(scopes2, &consumer_)); |
180 base::RunLoop().RunUntilIdle(); | 178 base::RunLoop().RunUntilIdle(); |
181 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 179 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
182 EXPECT_EQ(0, consumer_.number_of_errors_); | 180 EXPECT_EQ(0, consumer_.number_of_errors_); |
183 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 181 fetcher = factory_.GetFetcherByID(0); |
184 fetcher = factory_.GetFetcherByID(1); | 182 EXPECT_TRUE(fetcher); |
185 ASSERT_TRUE(fetcher); | |
186 fetcher->set_response_code(net::HTTP_OK); | 183 fetcher->set_response_code(net::HTTP_OK); |
187 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 184 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
188 fetcher->delegate()->OnURLFetchComplete(fetcher); | 185 fetcher->delegate()->OnURLFetchComplete(fetcher); |
189 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 186 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
190 EXPECT_EQ(0, consumer_.number_of_errors_); | 187 EXPECT_EQ(0, consumer_.number_of_errors_); |
191 EXPECT_EQ("token2", consumer_.last_token_); | 188 EXPECT_EQ("token2", consumer_.last_token_); |
192 } | 189 } |
193 | 190 |
194 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { | 191 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) { |
195 oauth2_service_->set_refresh_token("refreshToken"); | 192 oauth2_service_->set_refresh_token("refreshToken"); |
196 | 193 |
197 // First request. | 194 // First request. |
198 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 195 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
199 std::set<std::string>(), &consumer_)); | 196 std::set<std::string>(), &consumer_)); |
200 base::RunLoop().RunUntilIdle(); | 197 base::RunLoop().RunUntilIdle(); |
201 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 198 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
202 EXPECT_EQ(0, consumer_.number_of_errors_); | 199 EXPECT_EQ(0, consumer_.number_of_errors_); |
203 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 200 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
204 ASSERT_TRUE(fetcher); | 201 EXPECT_TRUE(fetcher); |
205 fetcher->set_response_code(net::HTTP_OK); | 202 fetcher->set_response_code(net::HTTP_OK); |
206 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 203 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
207 fetcher->delegate()->OnURLFetchComplete(fetcher); | 204 fetcher->delegate()->OnURLFetchComplete(fetcher); |
208 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 205 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
209 EXPECT_EQ(0, consumer_.number_of_errors_); | 206 EXPECT_EQ(0, consumer_.number_of_errors_); |
210 EXPECT_EQ("token", consumer_.last_token_); | 207 EXPECT_EQ("token", consumer_.last_token_); |
211 | 208 |
212 // Second request must try to access the network as the token has expired. | 209 // Second request must try to access the network as the token has expired. |
213 scoped_ptr<OAuth2TokenService::Request> request2( | 210 scoped_ptr<OAuth2TokenService::Request> request2( |
214 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 211 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
215 base::RunLoop().RunUntilIdle(); | 212 base::RunLoop().RunUntilIdle(); |
216 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 213 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
217 EXPECT_EQ(0, consumer_.number_of_errors_); | 214 EXPECT_EQ(0, consumer_.number_of_errors_); |
218 | 215 |
219 // Network failure. | 216 // Network failure. |
220 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 217 fetcher = factory_.GetFetcherByID(0); |
221 fetcher = factory_.GetFetcherByID(1); | 218 EXPECT_TRUE(fetcher); |
222 ASSERT_TRUE(fetcher); | |
223 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 219 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
224 fetcher->SetResponseString(std::string()); | 220 fetcher->SetResponseString(std::string()); |
225 fetcher->delegate()->OnURLFetchComplete(fetcher); | 221 fetcher->delegate()->OnURLFetchComplete(fetcher); |
226 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 222 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
227 EXPECT_EQ(1, consumer_.number_of_errors_); | 223 EXPECT_EQ(1, consumer_.number_of_errors_); |
228 } | 224 } |
229 | 225 |
230 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { | 226 TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) { |
231 oauth2_service_->set_refresh_token("refreshToken"); | 227 oauth2_service_->set_refresh_token("refreshToken"); |
232 | 228 |
233 // First request. | 229 // First request. |
234 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 230 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
235 std::set<std::string>(), &consumer_)); | 231 std::set<std::string>(), &consumer_)); |
236 base::RunLoop().RunUntilIdle(); | 232 base::RunLoop().RunUntilIdle(); |
237 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 233 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
238 EXPECT_EQ(0, consumer_.number_of_errors_); | 234 EXPECT_EQ(0, consumer_.number_of_errors_); |
239 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 235 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
240 ASSERT_TRUE(fetcher); | 236 EXPECT_TRUE(fetcher); |
241 fetcher->set_response_code(net::HTTP_OK); | 237 fetcher->set_response_code(net::HTTP_OK); |
242 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); | 238 fetcher->SetResponseString(GetValidTokenResponse("token", 0)); |
243 fetcher->delegate()->OnURLFetchComplete(fetcher); | 239 fetcher->delegate()->OnURLFetchComplete(fetcher); |
244 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 240 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
245 EXPECT_EQ(0, consumer_.number_of_errors_); | 241 EXPECT_EQ(0, consumer_.number_of_errors_); |
246 EXPECT_EQ("token", consumer_.last_token_); | 242 EXPECT_EQ("token", consumer_.last_token_); |
247 | 243 |
248 // Second request must try to access the network as the token has expired. | 244 // Second request must try to access the network as the token has expired. |
249 scoped_ptr<OAuth2TokenService::Request> request2( | 245 scoped_ptr<OAuth2TokenService::Request> request2( |
250 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 246 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
251 base::RunLoop().RunUntilIdle(); | 247 base::RunLoop().RunUntilIdle(); |
252 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 248 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
253 EXPECT_EQ(0, consumer_.number_of_errors_); | 249 EXPECT_EQ(0, consumer_.number_of_errors_); |
254 | 250 |
255 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 251 fetcher = factory_.GetFetcherByID(0); |
256 fetcher = factory_.GetFetcherByID(1); | 252 EXPECT_TRUE(fetcher); |
257 ASSERT_TRUE(fetcher); | |
258 fetcher->set_response_code(net::HTTP_OK); | 253 fetcher->set_response_code(net::HTTP_OK); |
259 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); | 254 fetcher->SetResponseString(GetValidTokenResponse("another token", 0)); |
260 fetcher->delegate()->OnURLFetchComplete(fetcher); | 255 fetcher->delegate()->OnURLFetchComplete(fetcher); |
261 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 256 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
262 EXPECT_EQ(0, consumer_.number_of_errors_); | 257 EXPECT_EQ(0, consumer_.number_of_errors_); |
263 EXPECT_EQ("another token", consumer_.last_token_); | 258 EXPECT_EQ("another token", consumer_.last_token_); |
264 } | 259 } |
265 | 260 |
266 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { | 261 TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) { |
267 oauth2_service_->set_refresh_token("refreshToken"); | 262 oauth2_service_->set_refresh_token("refreshToken"); |
268 | 263 |
269 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 264 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
270 std::set<std::string>(), &consumer_)); | 265 std::set<std::string>(), &consumer_)); |
271 base::RunLoop().RunUntilIdle(); | 266 base::RunLoop().RunUntilIdle(); |
272 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 267 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
273 EXPECT_EQ(0, consumer_.number_of_errors_); | 268 EXPECT_EQ(0, consumer_.number_of_errors_); |
274 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 269 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
275 ASSERT_TRUE(fetcher); | 270 EXPECT_TRUE(fetcher); |
276 | 271 |
277 request.reset(); | 272 request.reset(); |
278 | 273 |
279 fetcher->set_response_code(net::HTTP_OK); | 274 fetcher->set_response_code(net::HTTP_OK); |
280 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 275 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
281 fetcher->delegate()->OnURLFetchComplete(fetcher); | 276 fetcher->delegate()->OnURLFetchComplete(fetcher); |
282 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 277 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
283 EXPECT_EQ(0, consumer_.number_of_errors_); | 278 EXPECT_EQ(0, consumer_.number_of_errors_); |
284 } | 279 } |
285 | 280 |
286 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { | 281 TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) { |
287 oauth2_service_->set_refresh_token("refreshToken"); | 282 oauth2_service_->set_refresh_token("refreshToken"); |
288 | 283 |
289 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 284 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
290 std::set<std::string>(), &consumer_)); | 285 std::set<std::string>(), &consumer_)); |
291 base::RunLoop().RunUntilIdle(); | 286 base::RunLoop().RunUntilIdle(); |
292 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 287 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
293 ASSERT_TRUE(fetcher); | |
294 fetcher->set_response_code(net::HTTP_OK); | 288 fetcher->set_response_code(net::HTTP_OK); |
295 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 289 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
296 fetcher->delegate()->OnURLFetchComplete(fetcher); | 290 fetcher->delegate()->OnURLFetchComplete(fetcher); |
297 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 291 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
298 EXPECT_EQ(0, consumer_.number_of_errors_); | 292 EXPECT_EQ(0, consumer_.number_of_errors_); |
299 EXPECT_EQ("token", consumer_.last_token_); | 293 EXPECT_EQ("token", consumer_.last_token_); |
300 | 294 |
301 request.reset(); | 295 request.reset(); |
302 | 296 |
303 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 297 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
304 EXPECT_EQ(0, consumer_.number_of_errors_); | 298 EXPECT_EQ(0, consumer_.number_of_errors_); |
305 EXPECT_EQ("token", consumer_.last_token_); | 299 EXPECT_EQ("token", consumer_.last_token_); |
306 } | 300 } |
307 | 301 |
308 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { | 302 TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) { |
309 oauth2_service_->set_refresh_token("refreshToken"); | 303 oauth2_service_->set_refresh_token("refreshToken"); |
310 | 304 |
311 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 305 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
312 std::set<std::string>(), &consumer_)); | 306 std::set<std::string>(), &consumer_)); |
313 base::RunLoop().RunUntilIdle(); | 307 base::RunLoop().RunUntilIdle(); |
314 scoped_ptr<OAuth2TokenService::Request> request2( | 308 scoped_ptr<OAuth2TokenService::Request> request2( |
315 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); | 309 oauth2_service_->StartRequest(std::set<std::string>(), &consumer_)); |
316 base::RunLoop().RunUntilIdle(); | 310 base::RunLoop().RunUntilIdle(); |
317 | 311 |
318 request.reset(); | 312 request.reset(); |
319 | 313 |
320 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 314 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
321 ASSERT_TRUE(fetcher); | |
322 fetcher->set_response_code(net::HTTP_OK); | 315 fetcher->set_response_code(net::HTTP_OK); |
323 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 316 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
324 fetcher->delegate()->OnURLFetchComplete(fetcher); | 317 fetcher->delegate()->OnURLFetchComplete(fetcher); |
325 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 318 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
326 EXPECT_EQ(0, consumer_.number_of_errors_); | 319 EXPECT_EQ(0, consumer_.number_of_errors_); |
327 } | 320 } |
328 | 321 |
329 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { | 322 TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) { |
330 // We have a valid refresh token; the first request is successful. | 323 // We have a valid refresh token; the first request is successful. |
331 oauth2_service_->set_refresh_token("refreshToken"); | 324 oauth2_service_->set_refresh_token("refreshToken"); |
332 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 325 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
333 std::set<std::string>(), &consumer_)); | 326 std::set<std::string>(), &consumer_)); |
334 base::RunLoop().RunUntilIdle(); | 327 base::RunLoop().RunUntilIdle(); |
335 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 328 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
336 ASSERT_TRUE(fetcher); | |
337 fetcher->set_response_code(net::HTTP_OK); | 329 fetcher->set_response_code(net::HTTP_OK); |
338 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 330 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
339 fetcher->delegate()->OnURLFetchComplete(fetcher); | 331 fetcher->delegate()->OnURLFetchComplete(fetcher); |
340 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 332 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
341 EXPECT_EQ(0, consumer_.number_of_errors_); | 333 EXPECT_EQ(0, consumer_.number_of_errors_); |
342 EXPECT_EQ("token", consumer_.last_token_); | 334 EXPECT_EQ("token", consumer_.last_token_); |
343 | 335 |
344 // The refresh token is no longer available; subsequent requests fail. | 336 // The refresh token is no longer available; subsequent requests fail. |
345 oauth2_service_->set_refresh_token(""); | 337 oauth2_service_->set_refresh_token(""); |
346 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); | 338 request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_); |
347 base::RunLoop().RunUntilIdle(); | 339 base::RunLoop().RunUntilIdle(); |
348 EXPECT_EQ(1U, factory_.GetFetcherCount()); | 340 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
349 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 341 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
350 EXPECT_EQ(1, consumer_.number_of_errors_); | 342 EXPECT_EQ(1, consumer_.number_of_errors_); |
351 } | 343 } |
352 | 344 |
353 TEST_F(OAuth2TokenServiceTest, | 345 TEST_F(OAuth2TokenServiceTest, |
354 ChangedRefreshTokenDoesNotAffectInFlightRequests) { | 346 ChangedRefreshTokenDoesNotAffectInFlightRequests) { |
355 oauth2_service_->set_refresh_token("first refreshToken"); | 347 oauth2_service_->set_refresh_token("first refreshToken"); |
356 std::set<std::string> scopes; | 348 std::set<std::string> scopes; |
357 scopes.insert("s1"); | 349 scopes.insert("s1"); |
358 scopes.insert("s2"); | 350 scopes.insert("s2"); |
359 | 351 |
360 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 352 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
361 scopes, &consumer_)); | 353 scopes, &consumer_)); |
362 base::RunLoop().RunUntilIdle(); | 354 base::RunLoop().RunUntilIdle(); |
363 ASSERT_EQ(1U, factory_.GetFetcherCount()); | |
364 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); | 355 net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0); |
365 ASSERT_TRUE(fetcher1); | |
366 | 356 |
367 // Note |request| is still pending when the refresh token changes. | 357 // Note |request| is still pending when the refresh token changes. |
368 oauth2_service_->set_refresh_token("second refreshToken"); | 358 oauth2_service_->set_refresh_token("second refreshToken"); |
369 | 359 |
370 // A 2nd request (using the new refresh token) that occurs and completes | 360 // A 2nd request (using the new refresh token) that occurs and completes |
371 // while the 1st request is in flight is successful. | 361 // while the 1st request is in flight is successful. |
372 TestingOAuth2TokenServiceConsumer consumer2; | 362 TestingOAuth2TokenServiceConsumer consumer2; |
373 scoped_ptr<OAuth2TokenService::Request> request2( | 363 scoped_ptr<OAuth2TokenService::Request> request2( |
374 oauth2_service_->StartRequest(scopes, &consumer2)); | 364 oauth2_service_->StartRequest(scopes, &consumer2)); |
375 base::RunLoop().RunUntilIdle(); | 365 base::RunLoop().RunUntilIdle(); |
376 | 366 |
377 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 367 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0); |
378 net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(1); | |
379 fetcher2->set_response_code(net::HTTP_OK); | 368 fetcher2->set_response_code(net::HTTP_OK); |
380 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); | 369 fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600)); |
381 fetcher2->delegate()->OnURLFetchComplete(fetcher2); | 370 fetcher2->delegate()->OnURLFetchComplete(fetcher2); |
382 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); | 371 EXPECT_EQ(1, consumer2.number_of_successful_tokens_); |
383 EXPECT_EQ(0, consumer2.number_of_errors_); | 372 EXPECT_EQ(0, consumer2.number_of_errors_); |
384 EXPECT_EQ("second token", consumer2.last_token_); | 373 EXPECT_EQ("second token", consumer2.last_token_); |
385 | 374 |
386 fetcher1->set_response_code(net::HTTP_OK); | 375 fetcher1->set_response_code(net::HTTP_OK); |
387 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); | 376 fetcher1->SetResponseString(GetValidTokenResponse("first token", 3600)); |
388 fetcher1->delegate()->OnURLFetchComplete(fetcher1); | 377 fetcher1->delegate()->OnURLFetchComplete(fetcher1); |
(...skipping 27 matching lines...) Expand all Loading... |
416 EXPECT_EQ(0, consumer.number_of_errors_); | 405 EXPECT_EQ(0, consumer.number_of_errors_); |
417 | 406 |
418 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 407 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
419 ASSERT_TRUE(fetcher); | 408 ASSERT_TRUE(fetcher); |
420 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 409 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
421 fetcher->SetResponseString(std::string()); | 410 fetcher->SetResponseString(std::string()); |
422 fetcher->delegate()->OnURLFetchComplete(fetcher); | 411 fetcher->delegate()->OnURLFetchComplete(fetcher); |
423 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 412 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
424 EXPECT_EQ(1, consumer.number_of_errors_); | 413 EXPECT_EQ(1, consumer.number_of_errors_); |
425 | 414 |
426 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 415 fetcher = factory_.GetFetcherByID(0); |
427 fetcher = factory_.GetFetcherByID(1); | |
428 ASSERT_TRUE(fetcher); | 416 ASSERT_TRUE(fetcher); |
429 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 417 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
430 fetcher->SetResponseString(std::string()); | 418 fetcher->SetResponseString(std::string()); |
431 fetcher->delegate()->OnURLFetchComplete(fetcher); | 419 fetcher->delegate()->OnURLFetchComplete(fetcher); |
432 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 420 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
433 EXPECT_EQ(2, consumer.number_of_errors_); | 421 EXPECT_EQ(2, consumer.number_of_errors_); |
434 } | 422 } |
435 | 423 |
436 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { | 424 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
437 std::set<std::string> scopes; | 425 std::set<std::string> scopes; |
438 oauth2_service_->set_refresh_token("refreshToken"); | 426 oauth2_service_->set_refresh_token("refreshToken"); |
439 | 427 |
440 // First request. | 428 // First request. |
441 scoped_ptr<OAuth2TokenService::Request> request( | 429 scoped_ptr<OAuth2TokenService::Request> request( |
442 oauth2_service_->StartRequest(scopes, &consumer_)); | 430 oauth2_service_->StartRequest(scopes, &consumer_)); |
443 base::RunLoop().RunUntilIdle(); | 431 base::RunLoop().RunUntilIdle(); |
444 | 432 |
445 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 433 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
446 EXPECT_EQ(0, consumer_.number_of_errors_); | 434 EXPECT_EQ(0, consumer_.number_of_errors_); |
447 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 435 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
448 ASSERT_TRUE(fetcher); | 436 EXPECT_TRUE(fetcher); |
449 fetcher->set_response_code(net::HTTP_OK); | 437 fetcher->set_response_code(net::HTTP_OK); |
450 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); | 438 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
451 fetcher->delegate()->OnURLFetchComplete(fetcher); | 439 fetcher->delegate()->OnURLFetchComplete(fetcher); |
452 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); | 440 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
453 EXPECT_EQ(0, consumer_.number_of_errors_); | 441 EXPECT_EQ(0, consumer_.number_of_errors_); |
454 EXPECT_EQ("token", consumer_.last_token_); | 442 EXPECT_EQ("token", consumer_.last_token_); |
455 | 443 |
456 // Second request, should return the same token without needing a network | 444 // Second request, should return the same token without needing a network |
457 // request. | 445 // request. |
458 scoped_ptr<OAuth2TokenService::Request> request2( | 446 scoped_ptr<OAuth2TokenService::Request> request2( |
459 oauth2_service_->StartRequest(scopes, &consumer_)); | 447 oauth2_service_->StartRequest(scopes, &consumer_)); |
460 base::RunLoop().RunUntilIdle(); | 448 base::RunLoop().RunUntilIdle(); |
461 | 449 |
462 // No new network fetcher. | 450 // No new network fetcher. |
463 ASSERT_EQ(1U, factory_.GetFetcherCount()); | 451 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
464 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 452 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
465 EXPECT_EQ(0, consumer_.number_of_errors_); | 453 EXPECT_EQ(0, consumer_.number_of_errors_); |
466 EXPECT_EQ("token", consumer_.last_token_); | 454 EXPECT_EQ("token", consumer_.last_token_); |
467 | 455 |
468 // Invalidating the token should return a new token on the next request. | 456 // Invalidating the token should return a new token on the next request. |
469 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); | 457 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); |
470 scoped_ptr<OAuth2TokenService::Request> request3( | 458 scoped_ptr<OAuth2TokenService::Request> request3( |
471 oauth2_service_->StartRequest(scopes, &consumer_)); | 459 oauth2_service_->StartRequest(scopes, &consumer_)); |
472 base::RunLoop().RunUntilIdle(); | 460 base::RunLoop().RunUntilIdle(); |
473 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); | 461 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
474 EXPECT_EQ(0, consumer_.number_of_errors_); | 462 EXPECT_EQ(0, consumer_.number_of_errors_); |
475 ASSERT_EQ(2U, factory_.GetFetcherCount()); | 463 fetcher = factory_.GetFetcherByID(0); |
476 fetcher = factory_.GetFetcherByID(1); | 464 EXPECT_TRUE(fetcher); |
477 ASSERT_TRUE(fetcher); | |
478 fetcher->set_response_code(net::HTTP_OK); | 465 fetcher->set_response_code(net::HTTP_OK); |
479 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); | 466 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
480 fetcher->delegate()->OnURLFetchComplete(fetcher); | 467 fetcher->delegate()->OnURLFetchComplete(fetcher); |
481 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); | 468 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
482 EXPECT_EQ(0, consumer_.number_of_errors_); | 469 EXPECT_EQ(0, consumer_.number_of_errors_); |
483 EXPECT_EQ("token2", consumer_.last_token_); | 470 EXPECT_EQ("token2", consumer_.last_token_); |
484 } | 471 } |
485 | 472 |
486 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { | 473 TEST_F(OAuth2TokenServiceTest, CancelAllRequests) { |
487 oauth2_service_->set_refresh_token("refreshToken"); | 474 oauth2_service_->set_refresh_token("refreshToken"); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); | 513 oauth2_service_->CancelRequestsForTokenForTest("refreshToken"); |
527 | 514 |
528 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 515 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
529 EXPECT_EQ(2, consumer_.number_of_errors_); | 516 EXPECT_EQ(2, consumer_.number_of_errors_); |
530 | 517 |
531 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); | 518 oauth2_service_->CancelRequestsForTokenForTest("refreshToken2"); |
532 | 519 |
533 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); | 520 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
534 EXPECT_EQ(3, consumer_.number_of_errors_); | 521 EXPECT_EQ(3, consumer_.number_of_errors_); |
535 } | 522 } |
536 | |
537 TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) { | |
538 std::string client_id_1("client1"); | |
539 std::string client_secret_1("secret1"); | |
540 std::string client_id_2("client2"); | |
541 std::string client_secret_2("secret2"); | |
542 std::set<std::string> scope_set; | |
543 scope_set.insert("scope1"); | |
544 scope_set.insert("scope2"); | |
545 | |
546 std::string refresh_token("refreshToken"); | |
547 oauth2_service_->set_refresh_token(refresh_token); | |
548 | |
549 scoped_ptr<OAuth2TokenService::Request> request1( | |
550 oauth2_service_->StartRequestForClient(client_id_1, | |
551 client_secret_1, | |
552 scope_set, | |
553 &consumer_)); | |
554 scoped_ptr<OAuth2TokenService::Request> request2( | |
555 oauth2_service_->StartRequestForClient(client_id_2, | |
556 client_secret_2, | |
557 scope_set, | |
558 &consumer_)); | |
559 // Start a request that should be duplicate of |request1|. | |
560 scoped_ptr<OAuth2TokenService::Request> request3( | |
561 oauth2_service_->StartRequestForClient(client_id_1, | |
562 client_secret_1, | |
563 scope_set, | |
564 &consumer_)); | |
565 base::RunLoop().RunUntilIdle(); | |
566 | |
567 ASSERT_EQ(2U, | |
568 oauth2_service_->GetNumPendingRequestsForTesting( | |
569 client_id_1, | |
570 refresh_token, | |
571 scope_set)); | |
572 ASSERT_EQ(1U, | |
573 oauth2_service_->GetNumPendingRequestsForTesting( | |
574 client_id_2, | |
575 refresh_token, | |
576 scope_set)); | |
577 } | |
578 | |
579 TEST_F(OAuth2TokenServiceTest, ClientScopeSetOrderTest) { | |
580 OAuth2TokenService::ScopeSet set_0; | |
581 OAuth2TokenService::ScopeSet set_1; | |
582 set_1.insert("1"); | |
583 | |
584 OAuth2TokenService::ClientScopeSet sets[] = { | |
585 OAuth2TokenService::ClientScopeSet("0", set_0), | |
586 OAuth2TokenService::ClientScopeSet("0", set_1), | |
587 OAuth2TokenService::ClientScopeSet("1", set_0), | |
588 OAuth2TokenService::ClientScopeSet("1", set_1), | |
589 }; | |
590 | |
591 for (size_t i = 0; i < arraysize(sets); i++) { | |
592 for (size_t j = 0; j < arraysize(sets); j++) { | |
593 if (i == j) { | |
594 EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; | |
595 EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; | |
596 } else if (i < j) { | |
597 EXPECT_TRUE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; | |
598 EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; | |
599 } else { | |
600 EXPECT_TRUE(sets[j] < sets[i]) << " i=" << i << ", j=" << j; | |
601 EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j; | |
602 } | |
603 } | |
604 } | |
605 } | |
606 | |
607 TEST_F(OAuth2TokenServiceTest, FetchParametersOrderTest) { | |
608 OAuth2TokenService::ScopeSet set_0; | |
609 OAuth2TokenService::ScopeSet set_1; | |
610 set_1.insert("1"); | |
611 | |
612 OAuth2TokenService::FetchParameters params[] = { | |
613 OAuth2TokenService::FetchParameters("0", "0", set_0), | |
614 OAuth2TokenService::FetchParameters("0", "0", set_1), | |
615 OAuth2TokenService::FetchParameters("0", "1", set_0), | |
616 OAuth2TokenService::FetchParameters("0", "1", set_1), | |
617 OAuth2TokenService::FetchParameters("1", "0", set_0), | |
618 OAuth2TokenService::FetchParameters("1", "0", set_1), | |
619 OAuth2TokenService::FetchParameters("1", "1", set_0), | |
620 OAuth2TokenService::FetchParameters("1", "1", set_1), | |
621 }; | |
622 | |
623 for (size_t i = 0; i < arraysize(params); i++) { | |
624 for (size_t j = 0; j < arraysize(params); j++) { | |
625 if (i == j) { | |
626 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; | |
627 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; | |
628 } else if (i < j) { | |
629 EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j; | |
630 EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j; | |
631 } else { | |
632 EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j; | |
633 EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j; | |
634 } | |
635 } | |
636 } | |
637 } | |
OLD | NEW |