1 package com.atlassian.asap.service.core.impl;
2
3 import org.junit.Rule;
4 import org.junit.Test;
5 import org.junit.rules.ExpectedException;
6 import org.mockito.junit.MockitoJUnit;
7 import org.mockito.junit.MockitoRule;
8
9 import java.util.Optional;
10
11 import static com.atlassian.asap.service.api.TokenValidator.Policy.REJECT;
12 import static com.atlassian.asap.service.api.ValidationResult.Decision.ABSTAIN;
13 import static com.atlassian.asap.service.api.ValidationResult.Decision.REJECTED;
14 import static java.util.Optional.empty;
15 import static org.junit.Assert.assertThat;
16 import static org.mockito.Matchers.anyString;
17 import static org.mockito.Mockito.never;
18 import static org.mockito.Mockito.verify;
19 import static org.mockito.Mockito.verifyZeroInteractions;
20 import static org.mockito.Mockito.when;
21
22 public class TokenValidatorImplRejectPolicyTest extends AbstractTokenValidatorImplTest {
23 @Rule
24 public final MockitoRule mockitoRule = MockitoJUnit.rule();
25 @Rule
26 public final ExpectedException thrown = ExpectedException.none();
27
28 @Test
29 public void noTokenReturnsAbstain() {
30 tokenValidator.policy(REJECT);
31
32 assertThat(tokenValidator.validate(empty()), result(ABSTAIN));
33
34 verifyZeroInteractions(jwtParser, jwtValidator);
35 }
36
37 @Test
38 public void wrongHeaderPrefixReturnsAbstain() throws Exception {
39 tokenValidator.policy(REJECT);
40
41 assertThat(tokenValidator.validate(Optional.of("Not a jwt")), result(ABSTAIN));
42
43 verifyZeroInteractions(jwtParser, jwtValidator);
44 }
45
46 @Test
47 public void invalidTokenReturnsAbstain() throws Exception {
48 tokenValidator.policy(REJECT);
49 when(jwtParser.determineUnverifiedIssuer(TOKEN)).thenReturn(empty());
50
51 assertThat(tokenValidator.validate(HEADER), result(ABSTAIN));
52
53 verify(jwtValidator, never()).readAndValidate(anyString());
54 }
55
56 @Test
57 public void readableTokenReturnsRejected() throws Exception {
58 tokenValidator.policy(REJECT);
59 when(jwtParser.determineUnverifiedIssuer(TOKEN)).thenReturn(Optional.of(ISSUER));
60
61 assertThat(tokenValidator.validate(HEADER), result(REJECTED, ISSUER));
62
63 verify(jwtValidator, never()).readAndValidate(anyString());
64 }
65 }