xref: /haiku/src/tests/apps/haikudepot/JwtTokenHelperTest.cpp (revision e1c4049fed1047bdb957b0529e1921e97ef94770)
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 }