Home | History | Annotate | Download | only in login
      1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_LOGIN_STATUS_CONSUMER_H_
      6 #define CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_LOGIN_STATUS_CONSUMER_H_
      7 #pragma once
      8 
      9 #include "chrome/browser/chromeos/login/login_status_consumer.h"
     10 #include "chrome/common/net/gaia/gaia_auth_consumer.h"
     11 #include "testing/gmock/include/gmock/gmock.h"
     12 #include "testing/gtest/include/gtest/gtest.h"
     13 
     14 namespace chromeos {
     15 
     16 class MockConsumer : public LoginStatusConsumer {
     17  public:
     18   MockConsumer() {}
     19   ~MockConsumer() {}
     20   MOCK_METHOD1(OnLoginFailure, void(const LoginFailure& error));
     21   MOCK_METHOD4(OnLoginSuccess, void(
     22       const std::string& username,
     23       const std::string& password,
     24       const GaiaAuthConsumer::ClientLoginResult& result,
     25       bool pending_requests));
     26   MOCK_METHOD0(OnOffTheRecordLoginSuccess, void(void));
     27   MOCK_METHOD1(OnPasswordChangeDetected,
     28       void(const GaiaAuthConsumer::ClientLoginResult& result));
     29 
     30   // The following functions can be used in gmock Invoke() clauses.
     31 
     32   // Compatible with LoginStatusConsumer::OnOffTheRecordLoginSuccess()
     33   static void OnGuestSuccessQuit() {
     34     MessageLoop::current()->Quit();
     35   }
     36 
     37   static void OnGuestSuccessQuitAndFail() {
     38     ADD_FAILURE() << "Guest Login should have failed!";
     39     MessageLoop::current()->Quit();
     40   }
     41 
     42   // Compatible with LoginStatusConsumer::OnLoginSuccess()
     43   static void OnSuccessQuit(
     44       const std::string& username,
     45       const std::string& password,
     46       const GaiaAuthConsumer::ClientLoginResult& credentials,
     47       bool pending_requests) {
     48     MessageLoop::current()->Quit();
     49   }
     50 
     51   static void OnSuccessQuitAndFail(
     52       const std::string& username,
     53       const std::string& password,
     54       const GaiaAuthConsumer::ClientLoginResult& credentials,
     55       bool pending_requests) {
     56     ADD_FAILURE() << "Login should NOT have succeeded!";
     57     MessageLoop::current()->Quit();
     58   }
     59 
     60   // Compatible with LoginStatusConsumer::OnLoginFailure()
     61   static void OnFailQuit(const LoginFailure& error) {
     62     MessageLoop::current()->Quit();
     63   }
     64 
     65   static void OnFailQuitAndFail(const LoginFailure& error) {
     66     ADD_FAILURE() << "Login should not have failed!";
     67     MessageLoop::current()->Quit();
     68   }
     69 
     70   // Compatible with LoginStatusConsumer::OnPasswordChangeDetected()
     71   static void OnMigrateQuit(
     72       const GaiaAuthConsumer::ClientLoginResult& credentials) {
     73     MessageLoop::current()->Quit();
     74   }
     75 
     76   static void OnMigrateQuitAndFail(
     77       const GaiaAuthConsumer::ClientLoginResult& credentials) {
     78     ADD_FAILURE() << "Should not have detected a PW change!";
     79     MessageLoop::current()->Quit();
     80   }
     81 };
     82 
     83 }  // namespace chromeos
     84 
     85 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_LOGIN_STATUS_CONSUMER_H_
     86