TokenTest.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // TokenTest.cpp
  3. //
  4. // Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
  5. // and Contributors.
  6. //
  7. // SPDX-License-Identifier: BSL-1.0
  8. //
  9. #include "TokenTest.h"
  10. #include "CppUnit/TestCaller.h"
  11. #include "CppUnit/TestSuite.h"
  12. #include "Poco/JWT/Token.h"
  13. using namespace Poco::JWT;
  14. TokenTest::TokenTest(const std::string& name):
  15. CppUnit::TestCase("TokenTest")
  16. {
  17. }
  18. TokenTest::~TokenTest()
  19. {
  20. }
  21. void TokenTest::setUp()
  22. {
  23. }
  24. void TokenTest::tearDown()
  25. {
  26. }
  27. void TokenTest::testParse()
  28. {
  29. std::string jwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
  30. Token token(jwt);
  31. assertTrue(token.getAlgorithm() == "HS256");
  32. assertTrue(token.getType() == "JWT");
  33. assertTrue(token.getSubject() == "1234567890");
  34. assertTrue(token.getIssuedAt().epochTime() == 1516239022);
  35. assertTrue(token.payload().getValue<std::string>("name") == "John Doe");
  36. assertTrue(token.signature() == "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
  37. }
  38. void TokenTest::testParseNoSig()
  39. {
  40. std::string jwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjIsIm5hbWUiOiJKb2huIERvZSIsInN1YiI6IjEyMzQ1Njc4OTAifQ.");
  41. Token token(jwt);
  42. assertTrue(token.getAlgorithm() == "HS256");
  43. assertTrue(token.getType() == "JWT");
  44. assertTrue(token.getSubject() == "1234567890");
  45. assertTrue(token.getIssuedAt().epochTime() == 1516239022);
  46. assertTrue(token.payload().getValue<std::string>("name") == "John Doe");
  47. assertTrue(token.signature() == "");
  48. }
  49. void TokenTest::testSerialize()
  50. {
  51. Token token;
  52. token.setAlgorithm("HS256");
  53. token.setType("JWT");
  54. token.setSubject("1234567890");
  55. token.payload().set("name", std::string("John Doe"));
  56. token.setIssuedAt(Poco::Timestamp::fromEpochTime(1516239022));
  57. std::string jwt = token.toString();
  58. assertTrue(jwt == "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjIsIm5hbWUiOiJKb2huIERvZSIsInN1YiI6IjEyMzQ1Njc4OTAifQ.");
  59. }
  60. void TokenTest::testAssign()
  61. {
  62. std::string jwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
  63. Token token(jwt);
  64. Token token2(token);
  65. assertTrue(token.toString() == token2.toString());
  66. }
  67. void TokenTest::testAudience()
  68. {
  69. Token token;
  70. token.setAudience("11111");
  71. assertTrue(token.payload().getValue<std::string>(Token::CLAIM_AUDIENCE) == "11111");
  72. std::vector<std::string> audience = token.getAudience();
  73. assertTrue(audience.size() == 1);
  74. assertTrue(audience[0] == "11111");
  75. audience.push_back("22222");
  76. token.setAudience(audience);
  77. assertTrue(token.payload().isArray(Token::CLAIM_AUDIENCE));
  78. audience = token.getAudience();
  79. assertTrue(audience.size() == 2);
  80. assertTrue(audience[0] == "11111");
  81. assertTrue(audience[1] == "22222");
  82. }
  83. CppUnit::Test* TokenTest::suite()
  84. {
  85. CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("TokenTest");
  86. CppUnit_addTest(pSuite, TokenTest, testParse);
  87. CppUnit_addTest(pSuite, TokenTest, testParseNoSig);
  88. CppUnit_addTest(pSuite, TokenTest, testSerialize);
  89. CppUnit_addTest(pSuite, TokenTest, testAssign);
  90. CppUnit_addTest(pSuite, TokenTest, testAudience);
  91. return pSuite;
  92. }