test_auth.cpp 1.0 KB

12345678910111213141516171819202122232425262728
  1. #include <gtest/gtest.h>
  2. #include "auth.hpp"
  3. using namespace svapi;
  4. using clk = std::chrono::system_clock;
  5. TEST(Auth, ParsesBearer) {
  6. EXPECT_EQ(bearerToken("Bearer abc").value(), "abc");
  7. EXPECT_FALSE(bearerToken("Basic x").has_value());
  8. }
  9. TEST(Auth, ParsesCookie) {
  10. EXPECT_EQ(cookieValue("a=1; svapi_session=tok; b=2", "svapi_session").value(), "tok");
  11. EXPECT_FALSE(cookieValue("a=1", "svapi_session").has_value());
  12. }
  13. TEST(Auth, SessionMapsToKey) {
  14. SessionStore s(std::chrono::minutes(10));
  15. auto now = clk::now();
  16. std::string tok = s.create("APIKEY-XYZ", now);
  17. ASSERT_TRUE(s.keyFor(tok, now).has_value());
  18. EXPECT_EQ(s.keyFor(tok, now).value(), "APIKEY-XYZ");
  19. EXPECT_FALSE(s.keyFor("bad", now).has_value());
  20. EXPECT_FALSE(s.keyFor(tok, now + std::chrono::minutes(11)).has_value()); // expired
  21. }
  22. TEST(Auth, RemoveInvalidates) {
  23. SessionStore s(std::chrono::minutes(10));
  24. auto now = clk::now(); std::string tok = s.create("K", now);
  25. s.remove(tok);
  26. EXPECT_FALSE(s.keyFor(tok, now).has_value());
  27. }