56 lines
1.8 KiB
C++
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 |