Skip to content

Commit 98ea0d6

Browse files
committedDec 24, 2017
Added more encoding tests
1 parent 9a7925c commit 98ea0d6

File tree

2 files changed

+128
-2
lines changed

2 files changed

+128
-2
lines changed
 

‎tests/test_jwt_encode

57.7 KB
Binary file not shown.

‎tests/test_jwt_encode.cc

+128-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#include <iostream>
2+
#include <map>
23
#include "gtest/gtest.h"
34
#include "jwt/jwt.hpp"
45

5-
TEST (EncodeTest, Mytest1)
6+
TEST (EncodeTest, StrEncodeHS2561)
67
{
78
using namespace jwt::params;
89

9-
const std::string expected_sign =
10+
const char* expected_sign =
1011
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
1112
"eyJpYXQiOjE1MTM4NjIzNzEsImlkIjoiYS1iLWMtZC1lLWYtMS0yLTMiLCJpc3MiOiJhcnVuLm11cmFsaWRoYXJhbiIsInN1YiI6ImFkbWluIn0."
1213
"jk7bRQKTLvs1RcuvMc2B_rt6WBYPoVPirYi_QRBPiuk";
@@ -29,6 +30,131 @@ TEST (EncodeTest, Mytest1)
2930
EXPECT_EQ (enc_str, expected_sign);
3031
}
3132

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+
32158
int main(int argc, char **argv)
33159
{
34160
::testing::InitGoogleTest(&argc, argv);

0 commit comments

Comments
 (0)