66import com .fasterxml .jackson .databind .node .JsonNodeFactory ;
77import com .fasterxml .jackson .databind .node .ObjectNode ;
88import org .apache .commons .codec .binary .Base64 ;
9+ import org .junit .Rule ;
910import org .junit .Test ;
11+ import org .junit .rules .ExpectedException ;
1012
1113import java .security .SignatureException ;
1214
@@ -19,6 +21,8 @@ public class JWTVerifierTest {
1921
2022 private static final Base64 decoder = new Base64 (true );
2123
24+ @ Rule
25+ public ExpectedException expectedException = ExpectedException .none ();
2226
2327 @ Test (expected = IllegalArgumentException .class )
2428 public void constructorShouldFailOnEmptySecret () {
@@ -85,7 +89,7 @@ public void shouldVerifySignature() throws Exception {
8589 "cGxlLmNvbS9pc19yb290Ijp0cnVlfQ" +
8690 "." +
8791 "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk" ;
88- byte [] secret = decoder .decodeBase64 ("AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow" );
92+ byte [] secret = decoder .decode ("AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow" );
8993 new JWTVerifier (secret , "audience" )
9094 .verifySignature (jws .split ("\\ ." ), Algorithm .HS256 );
9195 }
@@ -116,6 +120,7 @@ public void shouldFailIssuer() throws Exception {
116120
117121 @ Test
118122 public void shouldVerifyIssuerWhenNotFoundInClaimsSet () throws Exception {
123+ expectedException .expect (JWTIssuerException .class );
119124 new JWTVerifier ("such secret" , "amaze audience" , "very issuer" )
120125 .verifyIssuer (JsonNodeFactory .instance .objectNode ());
121126 }
@@ -134,6 +139,7 @@ public void shouldFailAudience() throws Exception {
134139
135140 @ Test
136141 public void shouldVerifyAudienceWhenNotFoundInClaimsSet () throws Exception {
142+ expectedException .expect (JWTAudienceException .class );
137143 new JWTVerifier ("such secret" , "amaze audience" )
138144 .verifyAudience (JsonNodeFactory .instance .objectNode ());
139145 }
@@ -171,6 +177,19 @@ public void decodeAndParse() throws Exception {
171177 assertEquals ("123" , decodedJSON .get ("number" ).asText ());
172178 }
173179
180+ @ Test
181+ public void shouldVerifyAudienceFromToken () throws Exception {
182+ expectedException .expect (JWTAudienceException .class );
183+ JWTVerifier verifier = new JWTVerifier ("I.O.U a secret" , "samples-api" , null );
184+ verifier .verify ("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.wLlz9xDltxqKHQC7BeauPi5Q4KQK4nDjlRqQPvKVLYk" );
185+ }
186+
187+ @ Test
188+ public void shouldVerifyIssuerFromToken () throws Exception {
189+ expectedException .expect (JWTIssuerException .class );
190+ JWTVerifier verifier = new JWTVerifier ("I.O.U a secret" , null , "samples.auth0.com" );
191+ verifier .verify ("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.wLlz9xDltxqKHQC7BeauPi5Q4KQK4nDjlRqQPvKVLYk" );
192+ }
174193
175194 public static JsonNode createSingletonJSONNode (String key , String value ) {
176195 final ObjectNode jsonNodes = JsonNodeFactory .instance .objectNode ();
0 commit comments