// Copyright (c) 2013 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.

// A mock token manager

#ifndef CHAPS_TOKEN_FILE_MANAGER_MOCK_H_
#define CHAPS_TOKEN_FILE_MANAGER_MOCK_H_

#include "chaps/token_file_manager.h"

#include <string>

#include <base/files/file_path.h>
#include <chromeos/secure_blob.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>

namespace chaps {

class TokenFileManagerMock : public TokenFileManager {
 public:
  TokenFileManagerMock() : TokenFileManager(-1, -1) { }

  MOCK_METHOD2(GetUserTokenPath, bool (const std::string&, base::FilePath*));
  MOCK_METHOD1(CreateUserTokenDirectory, bool (const base::FilePath&));
  MOCK_METHOD1(CheckUserTokenPermissions, bool (const base::FilePath&));
  MOCK_METHOD3(SaltAuthData, bool (const base::FilePath&,
                                   const chromeos::SecureBlob&,
                                   chromeos::SecureBlob*));
};

}  // namespace chaps

#endif  // CHAPS_TOKEN_FILE_MANAGER_MOCK_H_
