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

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

Issue 2950073002: [Signin] Handle multiple concurrent Dice responses (Closed)
Patch Set: Rebase Created 3 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
« no previous file with comments | « chrome/browser/signin/dice_response_handler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 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 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 "chrome/browser/signin/dice_response_handler.h" 5 #include "chrome/browser/signin/dice_response_handler.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/test/test_simple_task_runner.h" 10 #include "base/test/test_simple_task_runner.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 DiceResponseHandler dice_response_handler_; 93 DiceResponseHandler dice_response_handler_;
94 }; 94 };
95 95
96 // Checks that a SIGNIN action triggers a token exchange request. 96 // Checks that a SIGNIN action triggers a token exchange request.
97 TEST_F(DiceResponseHandlerTest, Signin) { 97 TEST_F(DiceResponseHandlerTest, Signin) {
98 DiceResponseParams dice_params = MakeDiceParams(DiceAction::SIGNIN); 98 DiceResponseParams dice_params = MakeDiceParams(DiceAction::SIGNIN);
99 ASSERT_FALSE( 99 ASSERT_FALSE(
100 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id)); 100 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id));
101 dice_response_handler_.ProcessDiceHeader(dice_params); 101 dice_response_handler_.ProcessDiceHeader(dice_params);
102 // Check that a GaiaAuthFetcher has been created. 102 // Check that a GaiaAuthFetcher has been created.
103 ASSERT_TRUE(signin_client_.consumer_); 103 ASSERT_THAT(signin_client_.consumer_, testing::NotNull());
104 // Simulate GaiaAuthFetcher success. 104 // Simulate GaiaAuthFetcher success.
105 signin_client_.consumer_->OnClientOAuthSuccess( 105 signin_client_.consumer_->OnClientOAuthSuccess(
106 GaiaAuthConsumer::ClientOAuthResult("refresh_token", "access_token", 10)); 106 GaiaAuthConsumer::ClientOAuthResult("refresh_token", "access_token", 10));
107 // Check that the token has been inserted in the token service. 107 // Check that the token has been inserted in the token service.
108 EXPECT_TRUE( 108 EXPECT_TRUE(
109 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id)); 109 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id));
110 } 110 }
111 111
112 // Checks that a second token for the same account is not requested when a
113 // request is already in flight.
114 TEST_F(DiceResponseHandlerTest, SigninRepeatedWithSameAccount) {
115 DiceResponseParams dice_params = MakeDiceParams(DiceAction::SIGNIN);
116 ASSERT_FALSE(
117 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id));
118 dice_response_handler_.ProcessDiceHeader(dice_params);
119 // Check that a GaiaAuthFetcher has been created.
120 GaiaAuthConsumer* consumer = signin_client_.consumer_;
121 ASSERT_THAT(consumer, testing::NotNull());
122 // Start a second request for the same account.
123 signin_client_.consumer_ = nullptr;
124 dice_response_handler_.ProcessDiceHeader(dice_params);
125 // Check that there is no new request.
126 ASSERT_THAT(signin_client_.consumer_, testing::IsNull());
127 // Simulate GaiaAuthFetcher success for the first request.
128 consumer->OnClientOAuthSuccess(
129 GaiaAuthConsumer::ClientOAuthResult("refresh_token", "access_token", 10));
130 // Check that the token has been inserted in the token service.
131 EXPECT_TRUE(
132 token_service_.RefreshTokenIsAvailable(dice_params.obfuscated_gaia_id));
133 }
134
135 // Checks that two SIGNIN requests can happen concurrently.
136 TEST_F(DiceResponseHandlerTest, SigninWithTwoAccounts) {
137 DiceResponseParams dice_params_1 = MakeDiceParams(DiceAction::SIGNIN);
138 DiceResponseParams dice_params_2 = MakeDiceParams(DiceAction::SIGNIN);
139 dice_params_2.email = "other_email";
140 dice_params_2.obfuscated_gaia_id = "other_gaia_id";
141 ASSERT_FALSE(
142 token_service_.RefreshTokenIsAvailable(dice_params_1.obfuscated_gaia_id));
143 ASSERT_FALSE(
144 token_service_.RefreshTokenIsAvailable(dice_params_2.obfuscated_gaia_id));
145 // Start first request.
146 dice_response_handler_.ProcessDiceHeader(dice_params_1);
147 // Check that a GaiaAuthFetcher has been created.
148 GaiaAuthConsumer* consumer_1 = signin_client_.consumer_;
149 ASSERT_THAT(consumer_1, testing::NotNull());
150 // Start second request.
151 signin_client_.consumer_ = nullptr;
152 dice_response_handler_.ProcessDiceHeader(dice_params_2);
153 GaiaAuthConsumer* consumer_2 = signin_client_.consumer_;
154 ASSERT_THAT(consumer_2, testing::NotNull());
155 // Simulate GaiaAuthFetcher success for the first request.
156 consumer_1->OnClientOAuthSuccess(
157 GaiaAuthConsumer::ClientOAuthResult("refresh_token", "access_token", 10));
158 // Check that the token has been inserted in the token service.
159 EXPECT_TRUE(
160 token_service_.RefreshTokenIsAvailable(dice_params_1.obfuscated_gaia_id));
161 // Simulate GaiaAuthFetcher success for the second request.
162 consumer_2->OnClientOAuthSuccess(
163 GaiaAuthConsumer::ClientOAuthResult("refresh_token", "access_token", 10));
164 // Check that the token has been inserted in the token service.
165 EXPECT_TRUE(
166 token_service_.RefreshTokenIsAvailable(dice_params_2.obfuscated_gaia_id));
167 }
168
112 // Tests that the DiceResponseHandler is created for a normal profile but not 169 // Tests that the DiceResponseHandler is created for a normal profile but not
113 // for an incognito profile. 170 // for an incognito profile.
114 TEST(DiceResponseHandlerFactoryTest, NotInIncognito) { 171 TEST(DiceResponseHandlerFactoryTest, NotInIncognito) {
115 content::TestBrowserThreadBundle thread_bundle; 172 content::TestBrowserThreadBundle thread_bundle;
116 TestingProfile profile; 173 TestingProfile profile;
117 EXPECT_THAT(DiceResponseHandler::GetForProfile(&profile), testing::NotNull()); 174 EXPECT_THAT(DiceResponseHandler::GetForProfile(&profile), testing::NotNull());
118 EXPECT_THAT( 175 EXPECT_THAT(
119 DiceResponseHandler::GetForProfile(profile.GetOffTheRecordProfile()), 176 DiceResponseHandler::GetForProfile(profile.GetOffTheRecordProfile()),
120 testing::IsNull()); 177 testing::IsNull());
121 } 178 }
122 179
123 } // namespace 180 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/signin/dice_response_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698