Skip to content

Commit 1310c11

Browse files
committed
add unit tests
Signed-off-by: Dominik Pinsel <[email protected]>
1 parent b260b13 commit 1310c11

File tree

3 files changed

+225
-48
lines changed

3 files changed

+225
-48
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
/*
2-
* Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
3-
*
4-
* This program and the accompanying materials are made available under the
5-
* terms of the Apache License, Version 2.0 which is available at
6-
* https://www.apache.org/licenses/LICENSE-2.0
7-
*
8-
* SPDX-License-Identifier: Apache-2.0
9-
*
10-
* Contributors:
11-
* Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
12-
*
13-
*/
2+
* Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
12+
*
13+
*/
1414
package net.catenax.edc.oauth2.jwt.validation;
1515

1616
import java.util.List;
1717
import java.util.Map;
18-
1918
import org.eclipse.dataspaceconnector.spi.iam.ClaimToken;
2019
import org.eclipse.dataspaceconnector.spi.monitor.Monitor;
2120
import org.eclipse.dataspaceconnector.spi.result.Result;
@@ -26,49 +25,49 @@
2625

2726
public class AudValidationRuleTest {
2827

29-
private static final String AUDIENCE = "audience";
28+
private static final String AUDIENCE = "audience";
3029

31-
private AudValidationRule rule;
30+
private AudValidationRule rule;
3231

33-
@BeforeEach
34-
public void setup() {
35-
final Monitor monitor = Mockito.mock(Monitor.class);
36-
rule = new AudValidationRule(AUDIENCE, monitor);
37-
}
32+
@BeforeEach
33+
public void setup() {
34+
final Monitor monitor = Mockito.mock(Monitor.class);
35+
rule = new AudValidationRule(AUDIENCE, monitor);
36+
}
3837

39-
@Test
40-
void checkRuleSuccess() {
41-
final Map<String, Object> claims = Map.of("aud", List.of(AUDIENCE));
42-
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
43-
Result<Void> result = rule.checkRule(token, null);
38+
@Test
39+
void checkRuleSuccess() {
40+
final Map<String, Object> claims = Map.of("aud", List.of(AUDIENCE));
41+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
42+
Result<Void> result = rule.checkRule(token, null);
4443

45-
Assertions.assertTrue(result.succeeded());
46-
}
44+
Assertions.assertTrue(result.succeeded());
45+
}
4746

48-
@Test
49-
void checkRuleNoClaims() {
50-
final Map<String, Object> claims = Map.of();
51-
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
52-
Result<Void> result = rule.checkRule(token, null);
47+
@Test
48+
void checkRuleNoClaims() {
49+
final Map<String, Object> claims = Map.of();
50+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
51+
Result<Void> result = rule.checkRule(token, null);
5352

54-
Assertions.assertTrue(result.succeeded());
55-
}
53+
Assertions.assertFalse(result.succeeded());
54+
}
5655

57-
@Test
58-
void checkRuleClaimMissing() {
59-
final Map<String, Object> claims = Map.of("foo", List.of(AUDIENCE));
60-
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
61-
Result<Void> result = rule.checkRule(token, null);
56+
@Test
57+
void checkRuleClaimMissing() {
58+
final Map<String, Object> claims = Map.of("foo", List.of(AUDIENCE));
59+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
60+
Result<Void> result = rule.checkRule(token, null);
6261

63-
Assertions.assertTrue(result.succeeded());
64-
}
62+
Assertions.assertFalse(result.succeeded());
63+
}
6564

66-
@Test
67-
void checkRuleAudNotList() {
68-
final Map<String, Object> claims = Map.of("aud", AUDIENCE);
69-
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
70-
Result<Void> result = rule.checkRule(token, null);
65+
@Test
66+
void checkRuleAudNotList() {
67+
final Map<String, Object> claims = Map.of("aud", AUDIENCE);
68+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
69+
Result<Void> result = rule.checkRule(token, null);
7170

72-
Assertions.assertTrue(result.succeeded());
73-
}
71+
Assertions.assertFalse(result.succeeded());
72+
}
7473
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
12+
*
13+
*/
14+
package net.catenax.edc.oauth2.jwt.validation;
15+
16+
import java.text.SimpleDateFormat;
17+
import java.time.Clock;
18+
import java.util.Date;
19+
import java.util.Map;
20+
import lombok.SneakyThrows;
21+
import org.eclipse.dataspaceconnector.spi.iam.ClaimToken;
22+
import org.eclipse.dataspaceconnector.spi.result.Result;
23+
import org.junit.jupiter.api.Assertions;
24+
import org.junit.jupiter.api.BeforeEach;
25+
import org.junit.jupiter.api.Test;
26+
import org.mockito.Mockito;
27+
28+
public class ExpValidationRuleTest {
29+
30+
private static final String EXP = "exp";
31+
32+
private ExpValidationRule rule;
33+
34+
// Mocks
35+
private Clock clock;
36+
37+
@BeforeEach
38+
public void setUp() {
39+
clock = Mockito.mock(Clock.class);
40+
rule = new ExpValidationRule(clock);
41+
}
42+
43+
@Test
44+
@SneakyThrows
45+
public void checkNotExpired() {
46+
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
47+
final Map<String, Object> claims = Map.of(EXP, date);
48+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
49+
50+
Mockito.when(clock.instant()).thenReturn(date.toInstant().minusSeconds(30));
51+
final Result<Void> result = rule.checkRule(token, null);
52+
53+
Assertions.assertTrue(result.succeeded());
54+
}
55+
56+
@Test
57+
@SneakyThrows
58+
public void checkExpired() {
59+
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
60+
final Map<String, Object> claims = Map.of(EXP, date);
61+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
62+
63+
Mockito.when(clock.instant()).thenReturn(date.toInstant().plusSeconds(30));
64+
final Result<Void> result = rule.checkRule(token, null);
65+
66+
Assertions.assertFalse(result.succeeded());
67+
}
68+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
* Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
12+
*
13+
*/
14+
package net.catenax.edc.oauth2.jwt.validation;
15+
16+
import java.text.SimpleDateFormat;
17+
import java.time.Clock;
18+
import java.util.Date;
19+
import java.util.Map;
20+
import lombok.SneakyThrows;
21+
import org.eclipse.dataspaceconnector.spi.iam.ClaimToken;
22+
import org.junit.jupiter.api.Assertions;
23+
import org.junit.jupiter.api.BeforeEach;
24+
import org.junit.jupiter.api.Test;
25+
import org.mockito.Mockito;
26+
27+
public class IatValidationRuleTest {
28+
29+
private static final String ISSUED_AT = "iat";
30+
private static final String EXPIRATION = "exp";
31+
32+
private IatValidationRule rule;
33+
34+
// mocks
35+
private Clock clock;
36+
37+
@BeforeEach
38+
public void setup() {
39+
clock = Mockito.mock(Clock.class);
40+
rule = new IatValidationRule(clock);
41+
}
42+
43+
@Test
44+
@SneakyThrows
45+
public void testSuccess() {
46+
Date issuedDate = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
47+
Date expirationDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
48+
final Map<String, Object> claims = Map.of(ISSUED_AT, issuedDate, EXPIRATION, expirationDate);
49+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
50+
51+
Mockito.when(clock.instant()).thenReturn(issuedDate.toInstant().plusSeconds(30));
52+
final var result = rule.checkRule(token, null);
53+
54+
Assertions.assertTrue(result.succeeded());
55+
}
56+
57+
@Test
58+
@SneakyThrows
59+
public void testIssuedAtClaimMissing() {
60+
Date expirationDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
61+
final Map<String, Object> claims = Map.of(EXPIRATION, expirationDate);
62+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
63+
64+
Mockito.when(clock.instant()).thenReturn(expirationDate.toInstant().plusSeconds(30));
65+
final var result = rule.checkRule(token, null);
66+
67+
Assertions.assertFalse(result.succeeded());
68+
}
69+
70+
@Test
71+
@SneakyThrows
72+
public void testExpirationClaimMissing() {
73+
Date issuedDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
74+
final Map<String, Object> claims = Map.of(ISSUED_AT, issuedDate);
75+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
76+
77+
Mockito.when(clock.instant()).thenReturn(issuedDate.toInstant().plusSeconds(30));
78+
final var result = rule.checkRule(token, null);
79+
80+
Assertions.assertTrue(result.succeeded());
81+
}
82+
83+
@Test
84+
@SneakyThrows
85+
public void testNowBeforeIssuedAt() {
86+
Date issuedDate = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
87+
Date expirationDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
88+
final Map<String, Object> claims = Map.of(ISSUED_AT, issuedDate, EXPIRATION, expirationDate);
89+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
90+
91+
Mockito.when(clock.instant()).thenReturn(issuedDate.toInstant().minusSeconds(30));
92+
final var result = rule.checkRule(token, null);
93+
94+
Assertions.assertFalse(result.succeeded());
95+
}
96+
97+
@Test
98+
@SneakyThrows
99+
public void testExpirationBeforeIssuedAt() {
100+
Date issuedDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
101+
Date expirationDate = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
102+
final Map<String, Object> claims = Map.of(ISSUED_AT, issuedDate, EXPIRATION, expirationDate);
103+
final ClaimToken token = ClaimToken.Builder.newInstance().claims(claims).build();
104+
105+
Mockito.when(clock.instant()).thenReturn(issuedDate.toInstant().plusSeconds(30));
106+
final var result = rule.checkRule(token, null);
107+
108+
Assertions.assertFalse(result.succeeded());
109+
}
110+
}

0 commit comments

Comments
 (0)