Skip to content
Snippets Groups Projects
crypto_storage_test.cc 1.65 KiB
Newer Older
  • Learn to ignore specific revisions
  • Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
    #include <vereign/kvstore/crypto_storage.hh>
    
    #include <vereign/kvstore/sqlite_storage.hh>
    #include <vereign/crypto/rand.hh>
    #include <vereign/bytes/view_dump.hh>
    #include <vereign/core/temp.hh>
    #include <vereign/core/fs.hh>
    #include <vereign/core/scope_guard.hh>
    
    #include <catch2/catch.hpp>
    #include <boost/filesystem.hpp>
    #include <iostream>
    
    using namespace vereign;
    
    TEST_CASE("CryptoStorage::Reset", "[vereign/kvstore]") {
      auto storage_path = core::TempFilePath("test_db_");
      core::RemoveFileGuard rm{storage_path};
    
    
      // put value
    
    Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
      {
        auto kvstorage = kvstore::SqliteStorage(storage_path.string());
    
        kvstore::CryptoStorage storage{kvstorage, true};
    
    Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
    
        storage.Reset("foo");
        std::string v{"test value"};
        storage.PutBytes("test", bytes::View(v));
      }
    
    
      // with another storage instance get the value
    
    Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
      {
        auto kvstorage = kvstore::SqliteStorage(storage_path.string());
    
        kvstore::CryptoStorage storage{kvstorage, true};
    
    Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
    
        bytes::Buffer v;
        storage.Open("foo");
        storage.GetBytes("test", v);
    
        CHECK(v.View().String() == "test value");
      }
    
    }
    
    TEST_CASE("CryptoStorage::PutBytes", "[vereign/kvstore]") {
      auto storage_path = core::TempFilePath("test_db_");
      core::RemoveFileGuard rm{storage_path};
    
    Daniel Lyubomirov's avatar
    Daniel Lyubomirov committed
    
      bytes::Buffer big_value{100000};
      crypto::Rand(big_value);
    
      auto kvstorage = kvstore::SqliteStorage(storage_path.string());
    
      kvstore::CryptoStorage storage{kvstorage, true};
    
      storage.Reset("foo");
      storage.PutBytes("test", big_value.View());
    
      bytes::Buffer v;
      storage.GetBytes("test", v);
    
      REQUIRE(v.Size() == big_value.Size());
    
      auto cmp = std::memcmp(v.View().Data(), big_value.View().Data(), v.Size());
      CHECK(cmp == 0);