@@ -43,6 +43,17 @@ TEST_F(TokenTest, bad_format_tokens) {
43
43
" TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" );
44
44
BadHeader (" foo" );
45
45
BadHeader (" ......" );
46
+
47
+ // Bad JSON header
48
+ BadHeader (" eyB7IGZvbyB9."
49
+ " eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9."
50
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" );
51
+
52
+ // Bad JSON payload
53
+ BadHeader (" eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
54
+ " eyB7IGZvbyB9."
55
+ " eyB7IGZvbyB9" );
56
+
46
57
}
47
58
48
59
TEST_F (TokenTest, valid_hs256) {
@@ -73,13 +84,40 @@ TEST_F(TokenTest, encoded_token_has_duplicates) {
73
84
ASSERT_THROW (JWT::Decode (token, &validator_, &lst_), InvalidTokenError);
74
85
}
75
86
87
+ TEST_F (TokenTest, token_with_large_wrong_signature) {
88
+
89
+ std::string token =
90
+ " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
91
+ " eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9."
92
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
93
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
94
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
95
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
96
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
97
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
98
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
99
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
100
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
101
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
102
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
103
+ " TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQTJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" ;
104
+ ASSERT_THROW (JWT::Decode (token, &validator_, &lst_), InvalidTokenError);
105
+ }
106
+
76
107
TEST_F (TokenTest, encoded_token_missing_alg) {
77
108
std::string noAlg = " eyJmb28iOiJIUzI1NiJ9."
78
109
" eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9."
79
110
" TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" ;
80
111
ASSERT_THROW (JWT::Decode (noAlg, &validator_, &lst_), InvalidTokenError);
81
112
}
82
113
114
+ TEST_F (TokenTest, bad_alg) {
115
+ std::string badAlg = " eyJhbGciOiJCTEEiLCJ0eXAiOiJKV1QifQ."
116
+ " eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9."
117
+ " Pmjzsg4UPL6vKXK2pFGqH60qudcr4YHQ1e9Ddsl_ONo" ;
118
+ ASSERT_THROW (JWT::Decode (badAlg, &validator_, &lst_), InvalidSignatureError);
119
+ }
120
+
83
121
TEST_F (TokenTest, encoded_token_has_custom_header) {
84
122
json_ptr json (json_pack (" {ss, ss, sb}" , " sub" , " 1234567890" , " name" , " John Doe" , " admin" , true ));
85
123
json_ptr header (json_pack (" {ss}" , " foo" , " bar" ));
@@ -107,6 +145,7 @@ TEST_F(TokenTest, just_parse) {
107
145
EXPECT_TRUE (token.get () != NULL );
108
146
}
109
147
148
+
110
149
TEST_F (TokenTest, parse_and_validate_bad_signature) {
111
150
HS256Validator hs256 (" Not the right secret" );
112
151
ASSERT_THROW (JWT::Decode (validToken_, &hs256), InvalidSignatureError);
0 commit comments