Home | History | Annotate | Download | only in cros
      1 // Copyright (c) 2011 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_CROS_MOCK_CRYPTOHOME_LIBRARY_H_
      6 #define CHROME_BROWSER_CHROMEOS_CROS_MOCK_CRYPTOHOME_LIBRARY_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "chrome/browser/chromeos/cros/cryptohome_library.h"
     12 #include "testing/gmock/include/gmock/gmock.h"
     13 
     14 using ::testing::Invoke;
     15 using ::testing::WithArgs;
     16 using ::testing::_;
     17 
     18 namespace chromeos {
     19 
     20 class MockCryptohomeLibrary : public CryptohomeLibrary {
     21  public:
     22   MockCryptohomeLibrary() : outcome_(false), code_(0) {
     23   }
     24   virtual ~MockCryptohomeLibrary() {}
     25   void SetUp(bool outcome, int code) {
     26     outcome_ = outcome;
     27     code_ = code;
     28     ON_CALL(*this, AsyncCheckKey(_, _, _))
     29         .WillByDefault(
     30             WithArgs<2>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     31     ON_CALL(*this, AsyncMigrateKey(_, _, _, _))
     32         .WillByDefault(
     33             WithArgs<3>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     34     ON_CALL(*this, AsyncMount(_, _, _, _))
     35         .WillByDefault(
     36             WithArgs<3>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     37     ON_CALL(*this, AsyncMountForBwsi(_))
     38         .WillByDefault(
     39             WithArgs<0>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     40     ON_CALL(*this, AsyncRemove(_, _))
     41         .WillByDefault(
     42             WithArgs<1>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     43     ON_CALL(*this, AsyncDoAutomaticFreeDiskSpaceControl(_))
     44         .WillByDefault(
     45             WithArgs<0>(Invoke(this, &MockCryptohomeLibrary::DoCallback)));
     46   }
     47   MOCK_METHOD2(CheckKey, bool(const std::string& user_email,
     48                               const std::string& passhash));
     49   MOCK_METHOD3(AsyncCheckKey, bool(const std::string& user_email,
     50                                    const std::string& passhash,
     51                                    Delegate* callback));
     52   MOCK_METHOD3(MigrateKey, bool(const std::string& user_email,
     53                                 const std::string& old_hash,
     54                                 const std::string& new_hash));
     55   MOCK_METHOD4(AsyncMigrateKey, bool(const std::string& user_email,
     56                                      const std::string& old_hash,
     57                                      const std::string& new_hash,
     58                                      Delegate* callback));
     59   MOCK_METHOD3(Mount, bool(const std::string& user_email,
     60                            const std::string& passhash,
     61                            int* error_code));
     62   MOCK_METHOD4(AsyncMount, bool(const std::string& user_email,
     63                                 const std::string& passhash,
     64                                 const bool create_if_missing,
     65                                 Delegate* callback));
     66   MOCK_METHOD1(MountForBwsi, bool(int*));
     67   MOCK_METHOD1(AsyncMountForBwsi, bool(Delegate* callback));
     68   MOCK_METHOD0(Unmount, bool(void));
     69   MOCK_METHOD1(Remove, bool(const std::string& user_email));
     70   MOCK_METHOD2(AsyncRemove, bool(const std::string& user_email, Delegate* d));
     71   MOCK_METHOD0(IsMounted, bool(void));
     72   MOCK_METHOD0(GetSystemSalt, CryptohomeBlob(void));
     73   MOCK_METHOD1(AsyncDoAutomaticFreeDiskSpaceControl, bool(Delegate* callback));
     74 
     75   MOCK_METHOD0(TpmIsReady, bool(void));
     76   MOCK_METHOD0(TpmIsEnabled, bool(void));
     77   MOCK_METHOD0(TpmIsOwned, bool(void));
     78   MOCK_METHOD0(TpmIsBeingOwned, bool(void));
     79   MOCK_METHOD1(TpmGetPassword, bool(std::string* password));
     80   MOCK_METHOD0(TpmCanAttemptOwnership, void(void));
     81   MOCK_METHOD0(TpmClearStoredPassword, void(void));
     82   MOCK_METHOD0(Pkcs11IsTpmTokenReady, bool(void));
     83   MOCK_METHOD2(Pkcs11GetTpmTokenInfo, void(std::string*, std::string*));
     84 
     85   MOCK_METHOD2(InstallAttributesGet, bool(const std::string&, std::string*));
     86   MOCK_METHOD2(InstallAttributesSet, bool(const std::string&,
     87                                           const std::string&));
     88   MOCK_METHOD0(InstallAttributesCount, int(void));
     89   MOCK_METHOD0(InstallAttributesFinalize, bool(void));
     90   MOCK_METHOD0(InstallAttributesIsReady, bool(void));
     91   MOCK_METHOD0(InstallAttributesIsSecure, bool(void));
     92   MOCK_METHOD0(InstallAttributesIsInvalid, bool(void));
     93   MOCK_METHOD0(InstallAttributesIsFirstInstall, bool(void));
     94 
     95   void SetAsyncBehavior(bool outcome, int code) {
     96     outcome_ = outcome;
     97     code_ = code;
     98   }
     99 
    100   bool DoCallback(Delegate* d) {
    101     d->OnComplete(outcome_, code_);
    102     return true;
    103   }
    104 
    105  private:
    106   bool outcome_;
    107   int code_;
    108   DISALLOW_COPY_AND_ASSIGN(MockCryptohomeLibrary);
    109 };
    110 
    111 }  // namespace chromeos
    112 
    113 #endif  // CHROME_BROWSER_CHROMEOS_CROS_MOCK_CRYPTOHOME_LIBRARY_H_
    114