// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CRYPTOHOME_MOCK_USER_SESSION_H_
#define CRYPTOHOME_MOCK_USER_SESSION_H_

#include "cryptohome/user_session.h"

#include <base/logging.h>
#include <brillo/secure_blob.h>

#include <gmock/gmock.h>

namespace cryptohome {

class MockUserSession : public UserSession {
 public:
  MockUserSession();
  ~MockUserSession();
  MOCK_METHOD(void, Init, (const brillo::SecureBlob&), (override));
  MOCK_METHOD(bool, SetUser, (const Credentials&), (override));
  MOCK_METHOD(void, Reset, (), (override));
  MOCK_METHOD(bool, CheckUser, (const Credentials&), (const, override));
  MOCK_METHOD(bool, Verify, (const Credentials&), (const, override));
  MOCK_METHOD(void, set_key_index, (int), (override));

 private:
  UserSession user_session_;
};
}  // namespace cryptohome

#endif  // CRYPTOHOME_MOCK_USER_SESSION_H_
