Skip to content
Snippets Groups Projects
server_test.cc 1.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • #include <vereign/grpc/server.hh>
    #include <vereign/core/scope_guard.hh>
    
    #include <vereign/client_library/passport_api.gen.grpc.pb.h>
    
    #include <util/env.hh>
    #include <util/protobuf.hh>
    
    #include "catch.hpp"
    
    #include <grpcpp/create_channel.h>
    
    TEST_CASE("Server", "[vereign/grpc/server][.integration]") {
      auto publicKey = vereign::test::RequireEnv("TEST_VEREIGN_PUB_KEY");
      auto host = vereign::test::RequireEnv("TEST_VEREIGN_API_HOST");
      auto port = vereign::test::GetEnv("TEST_VEREIGN_API_PORT", "https");
    
      vereign::grpc::Server server{"localhost:", host, port, publicKey};
      auto on_exit = vereign::core::MakeScopeGuard([&server] {
        server.Shutdown();
      });
    
      auto channel = ::grpc::CreateChannel(
        "localhost:" + std::to_string(server.SelectedPort()),
        ::grpc::InsecureChannelCredentials()
      );
    
    
      auto client = vereign::client_library::PassportAPI::NewStub(channel);
    
      vereign::client_library::ListPassportsForm req;
      vereign::client_library::ListPassportsFormResponse resp;
    
      ::grpc::ClientContext ctx;
      auto status = client->ListPassports(&ctx, req, &resp);
    
      // std::cout << vereign::test::ProtobufToJson(resp) << std::endl;
    
      REQUIRE(status.error_message() == "");
      REQUIRE(resp.error() == "");
      CHECK(resp.status() == "OK");
      CHECK(resp.code() == "200");
      CHECK(resp.data().size() > 0);
      for (auto& passport : resp.data()) {
        CHECK(passport.uuid().size() == 36);
      }
    
      req.Clear();
      resp.Clear();
      ::grpc::ClientContext manually_ctx;
      status = client->ListPassportsManually(&manually_ctx, req, &resp);
    
      // std::cout << vereign::test::ProtobufToJson(resp) << std::endl;
    
      REQUIRE(status.error_message() == "");
      REQUIRE(resp.error() == "");
      CHECK(resp.status() == "OK");
      CHECK(resp.code() == "200");
      CHECK(resp.data().size() > 0);
      for (auto& passport : resp.data()) {
        CHECK(passport.uuid().size() == 36);
      }
    
      grpc_shutdown();
      google::protobuf::ShutdownProtobufLibrary();
    }