1
1
#include < iostream>
2
+ #include < map>
2
3
#include " gtest/gtest.h"
3
4
#include " jwt/jwt.hpp"
4
5
5
- TEST (EncodeTest, Mytest1 )
6
+ TEST (EncodeTest, StrEncodeHS2561 )
6
7
{
7
8
using namespace jwt ::params;
8
9
9
- const std::string expected_sign =
10
+ const char * expected_sign =
10
11
" eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
11
12
" eyJpYXQiOjE1MTM4NjIzNzEsImlkIjoiYS1iLWMtZC1lLWYtMS0yLTMiLCJpc3MiOiJhcnVuLm11cmFsaWRoYXJhbiIsInN1YiI6ImFkbWluIn0."
12
13
" jk7bRQKTLvs1RcuvMc2B_rt6WBYPoVPirYi_QRBPiuk" ;
@@ -29,6 +30,131 @@ TEST (EncodeTest, Mytest1)
29
30
EXPECT_EQ (enc_str, expected_sign);
30
31
}
31
32
33
+ TEST (EncodeTest, StrEncodeHS2562)
34
+ {
35
+ using namespace jwt ::params;
36
+
37
+ const char * expected_sign =
38
+ " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
39
+ " eyJpYXQiOjE1MTM4NjIzNzEsImlkIjoiYS1iLWMtZC1lLWYtMS0yLTMiLCJpc3MiOiJhcnVuLm11cmFsaWRoYXJhbiIsInN1YiI6ImFkbWluIn0."
40
+ " jk7bRQKTLvs1RcuvMc2B_rt6WBYPoVPirYi_QRBPiuk" ;
41
+
42
+ jwt::jwt_object obj{algorithm (" HS256" ),
43
+ secret (" secret" ),
44
+ payload (
45
+ {
46
+ {" iss" , " arun.muralidharan" },
47
+ {" sub" , " admin" },
48
+ {" id" , " a-b-c-d-e-f-1-2-3" }
49
+ })
50
+ };
51
+
52
+ obj.add_claim (" iat" , 1513862371 );
53
+
54
+ std::string enc_str = obj.signature ();
55
+ EXPECT_EQ (enc_str, expected_sign);
56
+ }
57
+
58
+
59
+ TEST (EncodeTest, StrEncodeNONE)
60
+ {
61
+ using namespace jwt ::params;
62
+
63
+ const char * expected_sign =
64
+ " eyJhbGciOiJOT05FIiwidHlwIjoiSldUIn0.eyJhdWQiOiJyaWZ0LmlvIiwiZXhwIjoxNTEzODYzMzcxLCJzdWIiOiJub3RoaW5nIG11Y2gifQ." ;
65
+
66
+ jwt::jwt_object obj{algorithm (" none" )};
67
+
68
+ obj.add_claim (" aud" , " rift.io" )
69
+ .add_claim (" exp" , 1513863371 )
70
+ .add_claim (" sub" , " nothing much" )
71
+ ;
72
+
73
+ std::cout << " Header: " << obj.header () << std::endl;
74
+ std::cout << " Payload: " << obj.payload () << std::endl;
75
+
76
+ std::string enc_str = obj.signature ();
77
+
78
+ EXPECT_EQ (enc_str, expected_sign);
79
+ }
80
+
81
+ TEST (EncodeTest, StrEncodeHS256WithKey)
82
+ {
83
+ using namespace jwt ::params;
84
+
85
+ const char * expected_sign =
86
+ " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
87
+ " eyJhdWQiOiJyaWZ0LmlvIiwiZXhwIjoxNTEzODYzMzcxLCJzdWIiOiJub3RoaW5nIG11Y2gifQ."
88
+ " W6t7mUX6ZJwOVTsVhHSKyBSwi0wnibobdsk456wSmJg" ;
89
+
90
+ jwt::jwt_object obj{algorithm (jwt::algorithm::HS256),
91
+ secret (" 0123456789abcdefghijklmnopqrstuvwxyz" ),
92
+ payload (
93
+ {
94
+ {" aud" , " rift.io" },
95
+ {" sub" , " nothing much" }
96
+ })
97
+ };
98
+ obj.add_claim (" exp" , 1513863371 );
99
+
100
+ std::string enc_str = obj.signature ();
101
+
102
+ EXPECT_EQ (expected_sign, enc_str);
103
+ }
104
+
105
+ TEST (EncodeTest, StrEncodeHS384WithKey)
106
+ {
107
+
108
+ using namespace jwt ::params;
109
+
110
+ const char * expected_sign =
111
+ " eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9."
112
+ " eyJhdWQiOiJyaWZ0LmlvIiwiZXhwIjoxNTEzODYzMzcxLCJzdWIiOiJub3RoaW5nIG11Y2gifQ."
113
+ " cGN4FZCe9Y2c1dA-jP71IXGnYbJRc4OaUTa5m7N7ybF5h6wBwxWQ-pdcxYchjDBL" ;
114
+
115
+ jwt::jwt_object obj{algorithm (jwt::algorithm::HS384),
116
+ secret (" 0123456789abcdefghijklmnopqrstuvwxyz" ),
117
+ payload (
118
+ {
119
+ {" aud" , " rift.io" },
120
+ {" sub" , " nothing much" }
121
+ })
122
+ };
123
+ obj.add_claim (" exp" , 1513863371 );
124
+
125
+ std::string enc_str = obj.signature ();
126
+
127
+ EXPECT_EQ (expected_sign, enc_str);
128
+ }
129
+
130
+ TEST (EncodeTest, StrEncodeHS512WithKey)
131
+ {
132
+ using namespace jwt ::params;
133
+
134
+ const char * expected_sign =
135
+ " eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9."
136
+ " eyJhdWQiOiJyaWZ0LmlvIiwiZXhwIjoxNTEzODYzMzcxLCJzdWIiOiJub3RoaW5nIG11Y2gifQ."
137
+ " vQ-1JSFN1kPjUI3URP6AFK5z8V7xLhyhw-76QWhQg9Xcy-IgrJ-bCTYLBjgaprrcEWwpSnBQnP3QnIxYK0HEaQ" ;
138
+
139
+ jwt::string_view key = " 00112233445566778899" ;
140
+
141
+ // TODO: map of jwt::string_view not working
142
+
143
+ std::map<std::string, std::string> p;
144
+ p[" aud" ] = " rift.io" ;
145
+ p[" sub" ] = " nothing much" ;
146
+
147
+ jwt::jwt_object obj{algorithm (jwt::algorithm::HS512),
148
+ secret (key),
149
+ payload (std::move (p))
150
+ };
151
+ obj.add_claim (" exp" , 1513863371 );
152
+
153
+ std::string enc_str = obj.signature ();
154
+
155
+ EXPECT_EQ (enc_str, expected_sign);
156
+ }
157
+
32
158
int main (int argc, char **argv)
33
159
{
34
160
::testing::InitGoogleTest (&argc, argv);
0 commit comments