// 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_
