Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/easy_unlock_auth_attempt.h" | 5 #include "chrome/browser/signin/easy_unlock_auth_attempt.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "chrome/browser/signin/easy_unlock_app_manager.h" | 8 #include "chrome/browser/signin/easy_unlock_app_manager.h" |
| 9 #include "components/proximity_auth/screenlock_bridge.h" | 9 #include "components/proximity_auth/screenlock_bridge.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 106 enum AuthState { | 106 enum AuthState { |
| 107 STATE_NONE, | 107 STATE_NONE, |
| 108 STATE_ATTEMPTING_UNLOCK, | 108 STATE_ATTEMPTING_UNLOCK, |
| 109 STATE_UNLOCK_CANCELED, | 109 STATE_UNLOCK_CANCELED, |
| 110 STATE_UNLOCK_DONE, | 110 STATE_UNLOCK_DONE, |
| 111 STATE_ATTEMPTING_SIGNIN, | 111 STATE_ATTEMPTING_SIGNIN, |
| 112 STATE_SIGNIN_CANCELED, | 112 STATE_SIGNIN_CANCELED, |
| 113 STATE_SIGNIN_DONE | 113 STATE_SIGNIN_DONE |
| 114 }; | 114 }; |
| 115 | 115 |
| 116 explicit TestLockHandler(const std::string& user_id) | 116 explicit TestLockHandler(const AccountId& account_id) |
| 117 : state_(STATE_NONE), auth_type_(USER_CLICK), user_id_(user_id) {} | 117 : state_(STATE_NONE), auth_type_(USER_CLICK), account_id_(account_id) {} |
| 118 | 118 |
| 119 ~TestLockHandler() override {} | 119 ~TestLockHandler() override {} |
| 120 | 120 |
| 121 void set_state(AuthState value) { state_ = value; } | 121 void set_state(AuthState value) { state_ = value; } |
| 122 AuthState state() const { return state_; } | 122 AuthState state() const { return state_; } |
| 123 | 123 |
| 124 // Changes the user associated with the lock handler. | |
| 125 // Caller should make sure that |state_| is also appropriately updated. | |
| 126 void set_user_id(const std::string& value) { user_id_ = value; } | |
| 127 | |
| 128 // Sets the secret that is expected to be sent to |AttemptEasySignin| | 124 // Sets the secret that is expected to be sent to |AttemptEasySignin| |
| 129 void set_expected_secret(const std::string& value) { | 125 void set_expected_secret(const std::string& value) { |
| 130 expected_secret_ = value; | 126 expected_secret_ = value; |
| 131 } | 127 } |
| 132 | 128 |
| 133 // Not using |SetAuthType| to make sure it's not called during tests. | 129 // Not using |SetAuthType| to make sure it's not called during tests. |
| 134 void set_auth_type(AuthType value) { auth_type_ = value; } | 130 void set_auth_type(AuthType value) { auth_type_ = value; } |
| 135 | 131 |
| 136 // proximity_auth::ScreenlockBridge::LockHandler implementation: | 132 // proximity_auth::ScreenlockBridge::LockHandler implementation: |
| 137 void ShowBannerMessage(const base::string16& message) override { | 133 void ShowBannerMessage(const base::string16& message) override { |
| 138 ADD_FAILURE() << "Should not be reached."; | 134 ADD_FAILURE() << "Should not be reached."; |
| 139 } | 135 } |
| 140 | 136 |
| 141 void ShowUserPodCustomIcon( | 137 void ShowUserPodCustomIcon( |
| 142 const std::string& user_email, | 138 const AccountId& account_id, |
| 143 const proximity_auth::ScreenlockBridge::UserPodCustomIconOptions& icon) | 139 const proximity_auth::ScreenlockBridge::UserPodCustomIconOptions& icon) |
| 144 override { | 140 override { |
| 145 ADD_FAILURE() << "Should not be reached."; | 141 ADD_FAILURE() << "Should not be reached."; |
| 146 } | 142 } |
| 147 | 143 |
| 148 void HideUserPodCustomIcon(const std::string& user_email) override { | 144 void HideUserPodCustomIcon(const AccountId& account_id) override { |
| 149 ADD_FAILURE() << "Should not be reached."; | 145 ADD_FAILURE() << "Should not be reached."; |
| 150 } | 146 } |
| 151 | 147 |
| 152 void EnableInput() override { | 148 void EnableInput() override { |
| 153 ASSERT_EQ(STATE_ATTEMPTING_UNLOCK, state_); | 149 ASSERT_EQ(STATE_ATTEMPTING_UNLOCK, state_); |
| 154 state_ = STATE_UNLOCK_CANCELED; | 150 state_ = STATE_UNLOCK_CANCELED; |
| 155 } | 151 } |
| 156 | 152 |
| 157 void SetAuthType(const std::string& user_email, | 153 void SetAuthType(const AccountId& account_id, |
| 158 AuthType auth_type, | 154 AuthType auth_type, |
| 159 const base::string16& auth_value) override { | 155 const base::string16& auth_value) override { |
| 160 ADD_FAILURE() << "Should not be reached."; | 156 ADD_FAILURE() << "Should not be reached."; |
| 161 } | 157 } |
| 162 | 158 |
| 163 AuthType GetAuthType(const std::string& user_email) const override { | 159 AuthType GetAuthType(const AccountId& account_id) const override { |
| 164 return auth_type_; | 160 return auth_type_; |
| 165 } | 161 } |
| 166 | 162 |
| 167 ScreenType GetScreenType() const override { | 163 ScreenType GetScreenType() const override { |
| 168 // Return an arbitrary value; this is not used by the test code. | 164 // Return an arbitrary value; this is not used by the test code. |
| 169 return LOCK_SCREEN; | 165 return LOCK_SCREEN; |
| 170 } | 166 } |
| 171 | 167 |
| 172 void Unlock(const std::string& user_email) override { | 168 void Unlock(const AccountId& account_id) override { |
| 173 ASSERT_EQ(user_id_, user_email); | 169 ASSERT_TRUE(account_id_ == account_id) |
| 170 << "account_id_=" << account_id_.Serialize() | |
| 171 << " != " << account_id.Serialize(); | |
| 174 ASSERT_EQ(STATE_ATTEMPTING_UNLOCK, state_); | 172 ASSERT_EQ(STATE_ATTEMPTING_UNLOCK, state_); |
| 175 state_ = STATE_UNLOCK_DONE; | 173 state_ = STATE_UNLOCK_DONE; |
| 176 } | 174 } |
| 177 | 175 |
| 178 void AttemptEasySignin(const std::string& user_email, | 176 void AttemptEasySignin(const AccountId& account_id, |
| 179 const std::string& secret, | 177 const std::string& secret, |
| 180 const std::string& key_label) override { | 178 const std::string& key_label) override { |
| 181 #if defined(OS_CHROMEOS) | 179 #if defined(OS_CHROMEOS) |
| 182 ASSERT_EQ(user_id_, user_email); | 180 ASSERT_TRUE(account_id_ == account_id) |
| 181 << "account_id_=" << account_id_.Serialize() | |
| 182 << " != " << account_id.Serialize(); | |
| 183 | 183 |
| 184 ASSERT_EQ(STATE_ATTEMPTING_SIGNIN, state_); | 184 ASSERT_EQ(STATE_ATTEMPTING_SIGNIN, state_); |
| 185 if (secret.empty()) { | 185 if (secret.empty()) { |
| 186 state_ = STATE_SIGNIN_CANCELED; | 186 state_ = STATE_SIGNIN_CANCELED; |
| 187 } else { | 187 } else { |
| 188 ASSERT_EQ(expected_secret_, secret); | 188 ASSERT_EQ(expected_secret_, secret); |
| 189 ASSERT_EQ(chromeos::EasyUnlockKeyManager::GetKeyLabel(0u), key_label); | 189 ASSERT_EQ(chromeos::EasyUnlockKeyManager::GetKeyLabel(0u), key_label); |
| 190 state_ = STATE_SIGNIN_DONE; | 190 state_ = STATE_SIGNIN_DONE; |
| 191 } | 191 } |
| 192 #else // if !defined(OS_CHROMEOS) | 192 #else // if !defined(OS_CHROMEOS) |
| 193 ADD_FAILURE() << "Should not be reached."; | 193 ADD_FAILURE() << "Should not be reached."; |
| 194 #endif | 194 #endif |
| 195 } | 195 } |
| 196 | 196 |
| 197 private: | 197 private: |
| 198 AuthState state_; | 198 AuthState state_; |
| 199 AuthType auth_type_; | 199 AuthType auth_type_; |
| 200 std::string user_id_; | 200 AccountId account_id_; |
|
achuithb
2015/12/04 10:12:53
const
Alexander Alekseev
2015/12/04 12:44:06
Done.
| |
| 201 std::string expected_secret_; | 201 std::string expected_secret_; |
| 202 | 202 |
| 203 DISALLOW_COPY_AND_ASSIGN(TestLockHandler); | 203 DISALLOW_COPY_AND_ASSIGN(TestLockHandler); |
| 204 }; | 204 }; |
| 205 | 205 |
| 206 class EasyUnlockAuthAttemptUnlockTest : public testing::Test { | 206 class EasyUnlockAuthAttemptUnlockTest : public testing::Test { |
| 207 public: | 207 public: |
| 208 EasyUnlockAuthAttemptUnlockTest() {} | 208 EasyUnlockAuthAttemptUnlockTest() {} |
| 209 ~EasyUnlockAuthAttemptUnlockTest() override {} | 209 ~EasyUnlockAuthAttemptUnlockTest() override {} |
| 210 | 210 |
| 211 void SetUp() override { | 211 void SetUp() override { |
| 212 app_manager_.reset(new FakeAppManager()); | 212 app_manager_.reset(new FakeAppManager()); |
| 213 auth_attempt_.reset(new EasyUnlockAuthAttempt( | 213 auth_attempt_.reset( |
| 214 app_manager_.get(), kTestUser1, EasyUnlockAuthAttempt::TYPE_UNLOCK, | 214 new EasyUnlockAuthAttempt(app_manager_.get(), test_account_id1_, |
| 215 EasyUnlockAuthAttempt::FinalizedCallback())); | 215 EasyUnlockAuthAttempt::TYPE_UNLOCK, |
| 216 EasyUnlockAuthAttempt::FinalizedCallback())); | |
| 216 } | 217 } |
| 217 | 218 |
| 218 void TearDown() override { | 219 void TearDown() override { |
| 219 proximity_auth::ScreenlockBridge::Get()->SetLockHandler(NULL); | 220 proximity_auth::ScreenlockBridge::Get()->SetLockHandler(NULL); |
| 220 auth_attempt_.reset(); | 221 auth_attempt_.reset(); |
| 221 } | 222 } |
| 222 | 223 |
| 223 protected: | 224 protected: |
| 224 void InitScreenLock() { | 225 void InitScreenLock() { |
| 225 lock_handler_.reset(new TestLockHandler(kTestUser1)); | 226 lock_handler_.reset(new TestLockHandler(test_account_id1_)); |
| 226 lock_handler_->set_state(TestLockHandler::STATE_ATTEMPTING_UNLOCK); | 227 lock_handler_->set_state(TestLockHandler::STATE_ATTEMPTING_UNLOCK); |
| 227 proximity_auth::ScreenlockBridge::Get()->SetLockHandler( | 228 proximity_auth::ScreenlockBridge::Get()->SetLockHandler( |
| 228 lock_handler_.get()); | 229 lock_handler_.get()); |
| 229 } | 230 } |
| 230 | 231 |
| 231 scoped_ptr<EasyUnlockAuthAttempt> auth_attempt_; | 232 scoped_ptr<EasyUnlockAuthAttempt> auth_attempt_; |
| 232 scoped_ptr<FakeAppManager> app_manager_; | 233 scoped_ptr<FakeAppManager> app_manager_; |
| 233 scoped_ptr<TestLockHandler> lock_handler_; | 234 scoped_ptr<TestLockHandler> lock_handler_; |
| 234 | 235 |
| 236 const AccountId test_account_id1_ = AccountId::FromUserEmail(kTestUser1); | |
| 237 const AccountId test_account_id2_ = AccountId::FromUserEmail(kTestUser2); | |
| 238 | |
| 235 private: | 239 private: |
| 236 DISALLOW_COPY_AND_ASSIGN(EasyUnlockAuthAttemptUnlockTest); | 240 DISALLOW_COPY_AND_ASSIGN(EasyUnlockAuthAttemptUnlockTest); |
| 237 }; | 241 }; |
| 238 | 242 |
| 239 TEST_F(EasyUnlockAuthAttemptUnlockTest, StartWhenNotLocked) { | 243 TEST_F(EasyUnlockAuthAttemptUnlockTest, StartWhenNotLocked) { |
| 240 ASSERT_FALSE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 244 ASSERT_FALSE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 241 | 245 |
| 242 EXPECT_FALSE(auth_attempt_->Start()); | 246 EXPECT_FALSE(auth_attempt_->Start()); |
| 243 EXPECT_EQ(0u, app_manager_->auth_attempt_count()); | 247 EXPECT_EQ(0u, app_manager_->auth_attempt_count()); |
| 244 } | 248 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 289 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeUnlockFailure) { | 293 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeUnlockFailure) { |
| 290 InitScreenLock(); | 294 InitScreenLock(); |
| 291 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 295 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 292 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 296 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 293 | 297 |
| 294 ASSERT_TRUE(auth_attempt_->Start()); | 298 ASSERT_TRUE(auth_attempt_->Start()); |
| 295 | 299 |
| 296 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 300 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 297 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 301 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 298 | 302 |
| 299 auth_attempt_->FinalizeUnlock(kTestUser1, false); | 303 auth_attempt_->FinalizeUnlock(test_account_id1_, false); |
| 300 | 304 |
| 301 EXPECT_EQ(TestLockHandler::STATE_UNLOCK_CANCELED, lock_handler_->state()); | 305 EXPECT_EQ(TestLockHandler::STATE_UNLOCK_CANCELED, lock_handler_->state()); |
| 302 } | 306 } |
| 303 | 307 |
| 304 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeSigninCalled) { | 308 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeSigninCalled) { |
| 305 InitScreenLock(); | 309 InitScreenLock(); |
| 306 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 310 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 307 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 311 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 308 | 312 |
| 309 ASSERT_TRUE(auth_attempt_->Start()); | 313 ASSERT_TRUE(auth_attempt_->Start()); |
| 310 | 314 |
| 311 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 315 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 312 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 316 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 313 | 317 |
| 314 // Wrapped secret and key should be irrelevant in this case. | 318 // Wrapped secret and key should be irrelevant in this case. |
| 315 auth_attempt_->FinalizeSignin(kTestUser1, GetWrappedSecret(), | 319 auth_attempt_->FinalizeSignin(test_account_id1_, GetWrappedSecret(), |
| 316 GetSessionKey()); | 320 GetSessionKey()); |
| 317 | 321 |
| 318 EXPECT_EQ(TestLockHandler::STATE_UNLOCK_CANCELED, lock_handler_->state()); | 322 EXPECT_EQ(TestLockHandler::STATE_UNLOCK_CANCELED, lock_handler_->state()); |
| 319 } | 323 } |
| 320 | 324 |
| 321 TEST_F(EasyUnlockAuthAttemptUnlockTest, UnlockSucceeds) { | 325 TEST_F(EasyUnlockAuthAttemptUnlockTest, UnlockSucceeds) { |
| 322 InitScreenLock(); | 326 InitScreenLock(); |
| 323 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 327 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 324 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 328 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 325 | 329 |
| 326 ASSERT_TRUE(auth_attempt_->Start()); | 330 ASSERT_TRUE(auth_attempt_->Start()); |
| 327 | 331 |
| 328 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 332 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 329 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 333 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 330 | 334 |
| 331 auth_attempt_->FinalizeUnlock(kTestUser1, true); | 335 auth_attempt_->FinalizeUnlock(test_account_id1_, true); |
| 332 | 336 |
| 333 ASSERT_EQ(TestLockHandler::STATE_UNLOCK_DONE, lock_handler_->state()); | 337 ASSERT_EQ(TestLockHandler::STATE_UNLOCK_DONE, lock_handler_->state()); |
| 334 } | 338 } |
| 335 | 339 |
| 336 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeUnlockCalledForWrongUser) { | 340 TEST_F(EasyUnlockAuthAttemptUnlockTest, FinalizeUnlockCalledForWrongUser) { |
| 337 InitScreenLock(); | 341 InitScreenLock(); |
| 338 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 342 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 339 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 343 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 340 | 344 |
| 341 ASSERT_TRUE(auth_attempt_->Start()); | 345 ASSERT_TRUE(auth_attempt_->Start()); |
| 342 | 346 |
| 343 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 347 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 344 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 348 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 345 | 349 |
| 346 auth_attempt_->FinalizeUnlock(kTestUser2, true); | 350 auth_attempt_->FinalizeUnlock(test_account_id2_, true); |
| 347 | 351 |
| 348 // If FinalizeUnlock is called for an incorrect user, it should be ignored | 352 // If FinalizeUnlock is called for an incorrect user, it should be ignored |
| 349 // rather than cancelling the authentication. | 353 // rather than cancelling the authentication. |
| 350 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); | 354 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_UNLOCK, lock_handler_->state()); |
| 351 | 355 |
| 352 // When FinalizeUnlock is called for the correct user, it should work as | 356 // When FinalizeUnlock is called for the correct user, it should work as |
| 353 // expected. | 357 // expected. |
| 354 auth_attempt_->FinalizeUnlock(kTestUser1, true); | 358 auth_attempt_->FinalizeUnlock(test_account_id1_, true); |
| 355 | 359 |
| 356 ASSERT_EQ(TestLockHandler::STATE_UNLOCK_DONE, lock_handler_->state()); | 360 ASSERT_EQ(TestLockHandler::STATE_UNLOCK_DONE, lock_handler_->state()); |
| 357 } | 361 } |
| 358 | 362 |
| 359 #if defined(OS_CHROMEOS) | 363 #if defined(OS_CHROMEOS) |
| 360 class EasyUnlockAuthAttemptSigninTest : public testing::Test { | 364 class EasyUnlockAuthAttemptSigninTest : public testing::Test { |
| 361 public: | 365 public: |
| 362 EasyUnlockAuthAttemptSigninTest() {} | 366 EasyUnlockAuthAttemptSigninTest() {} |
| 363 ~EasyUnlockAuthAttemptSigninTest() override {} | 367 ~EasyUnlockAuthAttemptSigninTest() override {} |
| 364 | 368 |
| 365 void SetUp() override { | 369 void SetUp() override { |
| 366 app_manager_.reset(new FakeAppManager()); | 370 app_manager_.reset(new FakeAppManager()); |
| 367 auth_attempt_.reset(new EasyUnlockAuthAttempt( | 371 auth_attempt_.reset( |
| 368 app_manager_.get(), kTestUser1, EasyUnlockAuthAttempt::TYPE_SIGNIN, | 372 new EasyUnlockAuthAttempt(app_manager_.get(), test_account_id1_, |
| 369 EasyUnlockAuthAttempt::FinalizedCallback())); | 373 EasyUnlockAuthAttempt::TYPE_SIGNIN, |
| 374 EasyUnlockAuthAttempt::FinalizedCallback())); | |
| 370 } | 375 } |
| 371 | 376 |
| 372 void TearDown() override { | 377 void TearDown() override { |
| 373 proximity_auth::ScreenlockBridge::Get()->SetLockHandler(NULL); | 378 proximity_auth::ScreenlockBridge::Get()->SetLockHandler(NULL); |
| 374 auth_attempt_.reset(); | 379 auth_attempt_.reset(); |
| 375 } | 380 } |
| 376 | 381 |
| 377 protected: | 382 protected: |
| 378 void InitScreenLock() { | 383 void InitScreenLock() { |
| 379 lock_handler_.reset(new TestLockHandler(kTestUser1)); | 384 lock_handler_.reset(new TestLockHandler(test_account_id1_)); |
| 380 lock_handler_->set_state(TestLockHandler::STATE_ATTEMPTING_SIGNIN); | 385 lock_handler_->set_state(TestLockHandler::STATE_ATTEMPTING_SIGNIN); |
| 381 proximity_auth::ScreenlockBridge::Get()->SetLockHandler( | 386 proximity_auth::ScreenlockBridge::Get()->SetLockHandler( |
| 382 lock_handler_.get()); | 387 lock_handler_.get()); |
| 383 } | 388 } |
| 384 | 389 |
| 385 scoped_ptr<EasyUnlockAuthAttempt> auth_attempt_; | 390 scoped_ptr<EasyUnlockAuthAttempt> auth_attempt_; |
| 386 scoped_ptr<FakeAppManager> app_manager_; | 391 scoped_ptr<FakeAppManager> app_manager_; |
| 387 scoped_ptr<TestLockHandler> lock_handler_; | 392 scoped_ptr<TestLockHandler> lock_handler_; |
| 388 | 393 |
| 394 const AccountId test_account_id1_ = AccountId::FromUserEmail(kTestUser1); | |
| 395 const AccountId test_account_id2_ = AccountId::FromUserEmail(kTestUser2); | |
| 396 | |
| 389 private: | 397 private: |
| 390 DISALLOW_COPY_AND_ASSIGN(EasyUnlockAuthAttemptSigninTest); | 398 DISALLOW_COPY_AND_ASSIGN(EasyUnlockAuthAttemptSigninTest); |
| 391 }; | 399 }; |
| 392 | 400 |
| 393 TEST_F(EasyUnlockAuthAttemptSigninTest, StartWhenNotLocked) { | 401 TEST_F(EasyUnlockAuthAttemptSigninTest, StartWhenNotLocked) { |
| 394 ASSERT_FALSE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 402 ASSERT_FALSE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 395 | 403 |
| 396 EXPECT_FALSE(auth_attempt_->Start()); | 404 EXPECT_FALSE(auth_attempt_->Start()); |
| 397 EXPECT_EQ(0u, app_manager_->auth_attempt_count()); | 405 EXPECT_EQ(0u, app_manager_->auth_attempt_count()); |
| 398 } | 406 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninWithEmtpySecret) { | 451 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninWithEmtpySecret) { |
| 444 InitScreenLock(); | 452 InitScreenLock(); |
| 445 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 453 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 446 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 454 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 447 | 455 |
| 448 ASSERT_TRUE(auth_attempt_->Start()); | 456 ASSERT_TRUE(auth_attempt_->Start()); |
| 449 | 457 |
| 450 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 458 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 451 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 459 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 452 | 460 |
| 453 auth_attempt_->FinalizeSignin(kTestUser1, "", GetSessionKey()); | 461 auth_attempt_->FinalizeSignin(test_account_id1_, "", GetSessionKey()); |
| 454 | 462 |
| 455 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); | 463 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); |
| 456 } | 464 } |
| 457 | 465 |
| 458 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninWithEmtpyKey) { | 466 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninWithEmtpyKey) { |
| 459 InitScreenLock(); | 467 InitScreenLock(); |
| 460 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 468 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 461 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 469 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 462 | 470 |
| 463 ASSERT_TRUE(auth_attempt_->Start()); | 471 ASSERT_TRUE(auth_attempt_->Start()); |
| 464 | 472 |
| 465 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 473 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 466 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 474 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 467 | 475 |
| 468 auth_attempt_->FinalizeSignin(kTestUser1, GetWrappedSecret(), ""); | 476 auth_attempt_->FinalizeSignin(test_account_id1_, GetWrappedSecret(), ""); |
| 469 | 477 |
| 470 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); | 478 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); |
| 471 } | 479 } |
| 472 | 480 |
| 473 TEST_F(EasyUnlockAuthAttemptSigninTest, SigninSuccess) { | 481 TEST_F(EasyUnlockAuthAttemptSigninTest, SigninSuccess) { |
| 474 InitScreenLock(); | 482 InitScreenLock(); |
| 475 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 483 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 476 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 484 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 477 | 485 |
| 478 ASSERT_TRUE(auth_attempt_->Start()); | 486 ASSERT_TRUE(auth_attempt_->Start()); |
| 479 | 487 |
| 480 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 488 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 481 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 489 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 482 | 490 |
| 483 lock_handler_->set_expected_secret(GetSecret()); | 491 lock_handler_->set_expected_secret(GetSecret()); |
| 484 auth_attempt_->FinalizeSignin(kTestUser1, GetWrappedSecret(), | 492 auth_attempt_->FinalizeSignin(test_account_id1_, GetWrappedSecret(), |
| 485 GetSessionKey()); | 493 GetSessionKey()); |
| 486 | 494 |
| 487 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_DONE, lock_handler_->state()); | 495 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_DONE, lock_handler_->state()); |
| 488 } | 496 } |
| 489 | 497 |
| 490 TEST_F(EasyUnlockAuthAttemptSigninTest, WrongWrappedSecret) { | 498 TEST_F(EasyUnlockAuthAttemptSigninTest, WrongWrappedSecret) { |
| 491 InitScreenLock(); | 499 InitScreenLock(); |
| 492 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 500 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 493 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 501 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 494 | 502 |
| 495 ASSERT_TRUE(auth_attempt_->Start()); | 503 ASSERT_TRUE(auth_attempt_->Start()); |
| 496 | 504 |
| 497 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 505 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 498 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 506 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 499 | 507 |
| 500 auth_attempt_->FinalizeSignin(kTestUser1, "wrong_secret", GetSessionKey()); | 508 auth_attempt_->FinalizeSignin(test_account_id1_, "wrong_secret", |
| 509 GetSessionKey()); | |
| 501 | 510 |
| 502 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); | 511 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); |
| 503 } | 512 } |
| 504 | 513 |
| 505 TEST_F(EasyUnlockAuthAttemptSigninTest, InvalidSessionKey) { | 514 TEST_F(EasyUnlockAuthAttemptSigninTest, InvalidSessionKey) { |
| 506 InitScreenLock(); | 515 InitScreenLock(); |
| 507 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 516 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 508 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 517 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 509 | 518 |
| 510 ASSERT_TRUE(auth_attempt_->Start()); | 519 ASSERT_TRUE(auth_attempt_->Start()); |
| 511 | 520 |
| 512 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 521 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 513 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 522 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 514 | 523 |
| 515 auth_attempt_->FinalizeSignin(kTestUser1, GetWrappedSecret(), "invalid_key"); | 524 auth_attempt_->FinalizeSignin(test_account_id1_, GetWrappedSecret(), |
| 525 "invalid_key"); | |
| 516 | 526 |
| 517 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); | 527 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); |
| 518 } | 528 } |
| 519 | 529 |
| 520 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeUnlockCalled) { | 530 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeUnlockCalled) { |
| 521 InitScreenLock(); | 531 InitScreenLock(); |
| 522 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 532 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 523 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 533 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 524 | 534 |
| 525 ASSERT_TRUE(auth_attempt_->Start()); | 535 ASSERT_TRUE(auth_attempt_->Start()); |
| 526 | 536 |
| 527 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 537 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 528 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 538 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 529 | 539 |
| 530 auth_attempt_->FinalizeUnlock(kTestUser1, true); | 540 auth_attempt_->FinalizeUnlock(test_account_id1_, true); |
| 531 | 541 |
| 532 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); | 542 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_CANCELED, lock_handler_->state()); |
| 533 } | 543 } |
| 534 | 544 |
| 535 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninCalledForWrongUser) { | 545 TEST_F(EasyUnlockAuthAttemptSigninTest, FinalizeSigninCalledForWrongUser) { |
| 536 InitScreenLock(); | 546 InitScreenLock(); |
| 537 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); | 547 ASSERT_TRUE(proximity_auth::ScreenlockBridge::Get()->IsLocked()); |
| 538 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 548 ASSERT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 539 | 549 |
| 540 ASSERT_TRUE(auth_attempt_->Start()); | 550 ASSERT_TRUE(auth_attempt_->Start()); |
| 541 | 551 |
| 542 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); | 552 ASSERT_EQ(1u, app_manager_->auth_attempt_count()); |
| 543 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 553 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 544 | 554 |
| 545 lock_handler_->set_expected_secret(GetSecret()); | 555 lock_handler_->set_expected_secret(GetSecret()); |
| 546 | 556 |
| 547 auth_attempt_->FinalizeSignin(kTestUser2, GetWrappedSecret(), | 557 auth_attempt_->FinalizeSignin(test_account_id2_, GetWrappedSecret(), |
| 548 GetSessionKey()); | 558 GetSessionKey()); |
| 549 | 559 |
| 550 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); | 560 EXPECT_EQ(TestLockHandler::STATE_ATTEMPTING_SIGNIN, lock_handler_->state()); |
| 551 | 561 |
| 552 auth_attempt_->FinalizeSignin(kTestUser1, GetWrappedSecret(), | 562 auth_attempt_->FinalizeSignin(test_account_id1_, GetWrappedSecret(), |
| 553 GetSessionKey()); | 563 GetSessionKey()); |
| 554 | 564 |
| 555 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_DONE, lock_handler_->state()); | 565 EXPECT_EQ(TestLockHandler::STATE_SIGNIN_DONE, lock_handler_->state()); |
| 556 } | 566 } |
| 557 #endif // defined(OS_CHROMEOS) | 567 #endif // defined(OS_CHROMEOS) |
| 558 | 568 |
| 559 } // namespace | 569 } // namespace |
| OLD | NEW |