1 /* 2 * Copyright 2023, Andrew Lindesay <apl@lindesay.co.nz>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 6 7 #include "JwtTokenHelperTest.h" 8 9 #include <String.h> 10 11 #include <cppunit/TestCaller.h> 12 #include <cppunit/TestSuite.h> 13 14 #include <string.h> 15 16 #include "JwtTokenHelper.h" 17 18 19 JwtTokenHelperTest::JwtTokenHelperTest() 20 { 21 } 22 23 24 JwtTokenHelperTest::~JwtTokenHelperTest() 25 { 26 } 27 28 29 void 30 JwtTokenHelperTest::TestParseTokenClaims() 31 { 32 const char* jwtToken = "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkZXYuaGRzIiwic3ViIj" 33 "oiZXJpazY0QGhkcyIsImV4cCI6MTY5MzkwNzM1NywiaWF0IjoxNjkzOTA3MDU3fQ.DJOz0" 34 "TmgN0Ya8De-oV0mBwWb-8FYavLbaFUFhCLqr-s"; 35 BMessage actualMessage; 36 37 // ---------------------- 38 status_t result = JwtTokenHelper::ParseClaims(BString(jwtToken), actualMessage); 39 // ---------------------- 40 41 CPPUNIT_ASSERT_EQUAL(B_OK, result); 42 43 _AssertStringValue(actualMessage, "iss", "dev.hds"); 44 _AssertStringValue(actualMessage, "sub", "erik64@hds"); 45 _AssertDoubleValue(actualMessage, "exp", 1693907357); 46 _AssertDoubleValue(actualMessage, "iat", 1693907057); 47 } 48 49 50 void 51 JwtTokenHelperTest::TestCorrupt() 52 { 53 const char* jwtToken = "application/json"; 54 BMessage actualMessage; 55 56 // ---------------------- 57 status_t result = JwtTokenHelper::ParseClaims(BString(jwtToken), actualMessage); 58 // ---------------------- 59 60 CPPUNIT_ASSERT(B_OK != result); 61 } 62 63 64 /*static*/ void 65 JwtTokenHelperTest::AddTests(BTestSuite& parent) 66 { 67 CppUnit::TestSuite& suite = *new CppUnit::TestSuite("JwtTokenHelperTest"); 68 69 suite.addTest( 70 new CppUnit::TestCaller<JwtTokenHelperTest>( 71 "JwtTokenHelperTest::TestParseTokenClaims", 72 &JwtTokenHelperTest::TestParseTokenClaims)); 73 74 suite.addTest( 75 new CppUnit::TestCaller<JwtTokenHelperTest>( 76 "JwtTokenHelperTest::TestCorrupt", 77 &JwtTokenHelperTest::TestCorrupt)); 78 79 parent.addTest("JwtTokenHelperTest", &suite); 80 } 81 82 83 void 84 JwtTokenHelperTest::_AssertStringValue(const BMessage& message, const char* key, 85 const char* expectedValue) const 86 { 87 BString value; 88 status_t result = message.FindString(key, &value); 89 CPPUNIT_ASSERT_EQUAL(B_OK, result); 90 CPPUNIT_ASSERT_EQUAL(BString(expectedValue), value); 91 } 92 93 94 void 95 JwtTokenHelperTest::_AssertDoubleValue(const BMessage& message, const char* key, 96 int64 expectedValue) const 97 { 98 double value; 99 status_t result = message.FindDouble(key, &value); 100 CPPUNIT_ASSERT_EQUAL(B_OK, result); 101 CPPUNIT_ASSERT_EQUAL((double) expectedValue, value); 102 }