// 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 CHAPS_OBJECT_POLICY_MOCK_H_
#define CHAPS_OBJECT_POLICY_MOCK_H_

#include "chaps/object_policy.h"

#include <string>

#include <gmock/gmock.h>

namespace chaps {

class ObjectPolicyMock : public ObjectPolicy {
 public:
  ObjectPolicyMock();
  virtual ~ObjectPolicyMock();
  MOCK_METHOD1(Init,
      void(Object* object));
  MOCK_METHOD1(IsReadAllowed,
      bool(CK_ATTRIBUTE_TYPE type));
  MOCK_METHOD2(IsModifyAllowed,
      bool(CK_ATTRIBUTE_TYPE type, const std::string& value));
  MOCK_METHOD0(IsObjectComplete,
      bool());
  MOCK_METHOD0(SetDefaultAttributes,
      void());
};

}  // namespace chaps

#endif  // CHAPS_OBJECT_POLICY_MOCK_H_
