Skip to content

Commit 94e9a1f

Browse files
committed
test : Unit test for RolesResolver
1 parent 2b234c2 commit 94e9a1f

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
/*
2+
* Copyright 2024 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.wwan13.wintersecurity.resolve;
18+
19+
import io.wwan13.wintersecurity.jwt.PayloadAnalysis;
20+
import io.wwan13.wintersecurity.jwt.PayloadAnalyst;
21+
import io.wwan13.wintersecurity.jwt.TokenClaims;
22+
import io.wwan13.wintersecurity.jwt.payload.support.DefaultPayloadAnalyst;
23+
import io.wwan13.wintersecurity.resolve.stub.StubMethodParameter;
24+
import io.wwan13.wintersecurity.resolve.stub.StubModerAndViesContainer;
25+
import io.wwan13.wintersecurity.resolve.stub.StubNativeWebRequest;
26+
import io.wwan13.wintersecurity.resolve.stub.StubWebDataBinderFactory;
27+
import org.junit.jupiter.api.Test;
28+
29+
import java.util.HashSet;
30+
import java.util.Map;
31+
import java.util.Set;
32+
33+
import static org.assertj.core.api.Assertions.assertThat;
34+
35+
class RolesResolverTest {
36+
37+
static RolesResolver rolesResolver = new RolesResolver(
38+
ResolveTestContainer.targetAnnotations,
39+
ResolveTestContainer.payloadAnalysis
40+
);
41+
42+
@Test
43+
void should_ReturnTrue_when_AnnotationDeclaredWithValidParameterType() {
44+
// given
45+
final StubMethodParameter methodParameter = new StubMethodParameter();
46+
47+
methodParameter.declaredAnnotationsWillBe(RequestUserRoles.class);
48+
methodParameter.parameterTypeWillBe(Set.class);
49+
50+
// when
51+
boolean result = rolesResolver.supportsParameter(methodParameter);
52+
53+
// then
54+
assertThat(result).isTrue();
55+
}
56+
57+
@Test
58+
void should_ReturnFalse_when_InValidParameterType() {
59+
// given
60+
final StubMethodParameter methodParameter = new StubMethodParameter();
61+
62+
methodParameter.declaredAnnotationsWillBe(RequestUserRoles.class);
63+
methodParameter.parameterTypeWillBe(Long.class);
64+
65+
// when
66+
boolean result = rolesResolver.supportsParameter(methodParameter);
67+
68+
// then
69+
assertThat(result).isFalse();
70+
}
71+
72+
@Test
73+
void should_ReturnFalse_when_AnnotationNotDeclared() {
74+
// given
75+
final StubMethodParameter methodParameter = new StubMethodParameter();
76+
77+
methodParameter.declaredAnnotationsWillBe(Set.of());
78+
methodParameter.parameterTypeWillBe(Set.class);
79+
80+
// when
81+
boolean result = rolesResolver.supportsParameter(methodParameter);
82+
83+
// then
84+
assertThat(result).isFalse();
85+
}
86+
87+
@Test
88+
void should_ReturnFalse_when_InValidParameterTypeIsDataType() {
89+
// given
90+
final StubMethodParameter methodParameter = new StubMethodParameter();
91+
92+
methodParameter.declaredAnnotationsWillBe(RequestUserRoles.class);
93+
methodParameter.parameterTypeWillBe(Long.class);
94+
95+
// when
96+
boolean result = rolesResolver.supportsParameter(methodParameter);
97+
98+
// then
99+
assertThat(result).isFalse();
100+
}
101+
102+
@Test
103+
void should_ResolveRoles() {
104+
// given
105+
final StubMethodParameter methodParameter = new StubMethodParameter();
106+
final StubModerAndViesContainer modelAndViewContainer = new StubModerAndViesContainer();
107+
final StubNativeWebRequest nativeWebRequest = new StubNativeWebRequest();
108+
final StubWebDataBinderFactory webDataBinderFactory = new StubWebDataBinderFactory();
109+
110+
nativeWebRequest.requestAttributesWillBe(ResolveTestContainer.defaultTestClaims);
111+
methodParameter.parameterTypeWillBe(Set.class);
112+
113+
// when
114+
Object value = rolesResolver.resolveArgument(
115+
methodParameter,
116+
modelAndViewContainer,
117+
nativeWebRequest,
118+
webDataBinderFactory
119+
);
120+
121+
// then
122+
assertThat(value.getClass()).isAssignableFrom(HashSet.class);
123+
assertThat((Set) value).contains("ROLE_USER");
124+
}
125+
126+
@Test
127+
void should_ResolveStringRole_when_NoneCollectionTypeRoleEntered() {
128+
// given
129+
final StubMethodParameter methodParameter = new StubMethodParameter();
130+
final StubModerAndViesContainer modelAndViewContainer = new StubModerAndViesContainer();
131+
final StubNativeWebRequest nativeWebRequest = new StubNativeWebRequest();
132+
final StubWebDataBinderFactory webDataBinderFactory = new StubWebDataBinderFactory();
133+
134+
final PayloadAnalyst payloadAnalyst = new DefaultPayloadAnalyst();
135+
final PayloadAnalysis payloadAnalysis =
136+
payloadAnalyst.analyze(ResolveTestContainer.ResolveTestPayloadWithStringRole.class);
137+
138+
nativeWebRequest.requestAttributesWillBe(new TokenClaims(Map.of("roles", "ROLE_USER")));
139+
methodParameter.parameterTypeWillBe(String.class);
140+
141+
final RolesResolver rolesResolver = new RolesResolver(
142+
ResolveTestContainer.targetAnnotations,
143+
payloadAnalysis
144+
);
145+
146+
// when
147+
Object value = rolesResolver.resolveArgument(
148+
methodParameter,
149+
modelAndViewContainer,
150+
nativeWebRequest,
151+
webDataBinderFactory
152+
);
153+
154+
// then
155+
assertThat(value.getClass()).isAssignableFrom(String.class);
156+
assertThat((String) value).isEqualTo("ROLE_USER");
157+
}
158+
}

0 commit comments

Comments
 (0)