#include #include "auth.hpp" using namespace svapi; using clk = std::chrono::system_clock; TEST(Auth, ParsesBearer) { EXPECT_EQ(bearerToken("Bearer abc").value(), "abc"); EXPECT_FALSE(bearerToken("Basic x").has_value()); } TEST(Auth, ParsesCookie) { EXPECT_EQ(cookieValue("a=1; svapi_session=tok; b=2", "svapi_session").value(), "tok"); EXPECT_FALSE(cookieValue("a=1", "svapi_session").has_value()); } TEST(Auth, SessionMapsToKey) { SessionStore s(std::chrono::minutes(10)); auto now = clk::now(); std::string tok = s.create("APIKEY-XYZ", now); ASSERT_TRUE(s.keyFor(tok, now).has_value()); EXPECT_EQ(s.keyFor(tok, now).value(), "APIKEY-XYZ"); EXPECT_FALSE(s.keyFor("bad", now).has_value()); EXPECT_FALSE(s.keyFor(tok, now + std::chrono::minutes(11)).has_value()); // expired } TEST(Auth, RemoveInvalidates) { SessionStore s(std::chrono::minutes(10)); auto now = clk::now(); std::string tok = s.create("K", now); s.remove(tok); EXPECT_FALSE(s.keyFor(tok, now).has_value()); }