Files
spark/src/lib/utils/tests/AuthTokenTests.cpp
T

56 lines
1.8 KiB
C++

#ifndef _WIN32
#include "../AuthToken.h"
#include "catch/catch.hpp"
namespace bts {
namespace test {
TEST_CASE("AuthToken", "[security]") {
api::admin::BTSUser admin_user;
admin_user.set_id(42);
admin_user.set_name("user1");
api::admin::BTSUser trader_user;
trader_user.set_id(43);
trader_user.set_name("trader1");
trader_user.mutable_user_data()->mutable_exchange_user_data()->mutable_cme_data()->add_md_permissions()->set_enabled(true);
SECTION("round trip admin") {
auto token = api::auth::generate_token(admin_user);
// We use 1 byte for api header size
REQUIRE(token.ByteSize() <= 240);
api::user::TokenPayload payload;
REQUIRE(!api::auth::decode_token(token, &payload));
REQUIRE(payload.id() == admin_user.id());
REQUIRE(payload.wheel() == false);
}
SECTION("round trip trader") {
auto token = api::auth::generate_token(trader_user);
// We use 1 byte for api header size
REQUIRE(token.ByteSize() <= 240);
api::user::TokenPayload payload;
REQUIRE(api::auth::decode_token(token, &payload));
REQUIRE(payload.id() == trader_user.id());
REQUIRE(payload.wheel() == false);
}
SECTION("empty token") {
api::user::TokenPayload payload;
api::AuthToken empty;
REQUIRE(!api::auth::decode_token(empty, &payload));
REQUIRE(payload.id() == 0);
REQUIRE(!payload.wheel());
}
SECTION("bts is the big wheel") {
admin_user.set_name("bts");
auto token = api::auth::generate_token(admin_user);
api::user::TokenPayload payload;
REQUIRE(api::auth::decode_token(token, &payload));
REQUIRE(payload.id() == admin_user.id());
REQUIRE(payload.wheel());
}
}
}}//ns
#endif