blob: 73341229a9f8433d2172100c39ac073ec3d3c6b9 [file] [log] [blame]
// 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_STORE_FAKE_H_
#define CHAPS_OBJECT_STORE_FAKE_H_
#include "chaps/object_store.h"
#include <map>
#include <string>
namespace chaps {
// A fake object store implementation which just stores blobs in memory.
class ObjectStoreFake : public ObjectStore {
public:
ObjectStoreFake() : last_handle_(0) {}
~ObjectStoreFake() override {}
bool GetInternalBlob(int blob_id, std::string* blob) override {
if (internal_blobs_.find(blob_id) == internal_blobs_.end())
return false;
*blob = internal_blobs_[blob_id];
return true;
}
bool SetInternalBlob(int blob_id, const std::string& blob) override {
internal_blobs_[blob_id] = blob;
return true;
}
bool SetEncryptionKey(const brillo::SecureBlob& key) override { return true; }
bool InsertObjectBlob(const ObjectBlob& blob, int* handle) override {
*handle = ++last_handle_;
object_blobs_[*handle] = blob;
return true;
}
bool DeleteObjectBlob(int handle) override {
object_blobs_.erase(handle);
return true;
}
bool DeleteAllObjectBlobs() override {
object_blobs_.clear();
return true;
}
bool UpdateObjectBlob(int handle, const ObjectBlob& blob) override {
object_blobs_[handle] = blob;
return true;
}
bool LoadPublicObjectBlobs(std::map<int, ObjectBlob>* blobs) override {
*blobs = object_blobs_;
return true;
}
bool LoadPrivateObjectBlobs(std::map<int, ObjectBlob>* blobs) override {
return true;
}
private:
int last_handle_;
std::map<int, std::string> internal_blobs_;
std::map<int, ObjectBlob> object_blobs_;
};
} // namespace chaps
#endif // CHAPS_OBJECT_STORE_FAKE_H_