1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.bean.openapi3;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.bean.openapi3.OpenApiBuilder.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.util.*;
24
25 import org.apache.juneau.*;
26 import org.junit.jupiter.api.*;
27
28
29
30
31 class SecurityRequirement_Test extends TestBase {
32
33 @Nested class A_basicTests extends TestBase {
34
35 private static final BeanTester<SecurityRequirement> TESTER =
36 testBean(
37 bean()
38 .setRequirements(map("a1", list("a2")))
39 )
40 .props("requirements{a1}")
41 .vals("{[a2]}")
42 .json("{requirements:{a1:['a2']}}")
43 .string("{'requirements':{'a1':['a2']}}".replace('\'','"'))
44 ;
45
46 @Test void a01_gettersAndSetters() {
47 TESTER.assertGettersAndSetters();
48 }
49
50 @Test void a02_copy() {
51 var t = new SecurityRequirement(TESTER.bean());
52 assertNotSame(TESTER.bean(), t);
53 assertBean(t, TESTER.props(), TESTER.vals());
54 }
55
56 @Test void a03_toJson() {
57 TESTER.assertToJson();
58 }
59
60 @Test void a04_fromJson() {
61 TESTER.assertFromJson();
62 }
63
64 @Test void a05_roundTrip() {
65 TESTER.assertRoundTrip();
66 }
67
68 @Test void a06_toString() {
69 TESTER.assertToString();
70 }
71
72 @Test void a07_keySet() {
73 assertList(TESTER.bean().keySet(), "requirements");
74 }
75
76 @Test void a08_nullParameters() {
77 var x = bean();
78 assertThrows(IllegalArgumentException.class, () -> x.get(null, String.class));
79 assertThrows(IllegalArgumentException.class, () -> x.set(null, "value"));
80 }
81
82 @Test void a09_addMethods() {
83 assertBean(
84 bean()
85 .addRequirement("a1", "a2", "a3")
86 .setApiKeyAuth("b"),
87 "requirements{a1,b}",
88 "{[a2,a3],[]}"
89 );
90 }
91
92 @Test void a10_getAndSetUsingPropertyName() {
93 var x = bean()
94 .set("requirements", map("a1", list("a2")))
95 .set("b1", list("b2"));
96
97 assertBean(x, "requirements{a1},b1", "{[a2]},[b2]");
98 assertBean(x.get("requirements", Map.class), "a1", "[a2]");
99 assertList((List<?>)x.get("b1", List.class), "b2");
100 }
101
102 @Test void a11_asMap() {
103 assertBean(
104 bean()
105 .set("a1", list("a2"))
106 .set("x1", "x1a")
107 .asMap(),
108 "a1,x1",
109 "[a2],x1a"
110 );
111 }
112
113 @Test void a12_extraKeys() {
114 var x = bean().set("x1", "x1a").set("x2", "x2a");
115 assertList(x.extraKeys(), "x1", "x2");
116 assertEmpty(bean().extraKeys());
117 }
118
119 @Test void a13_strictMode() {
120 assertThrows(RuntimeException.class, () -> bean().strict().set("foo", "bar"));
121 assertDoesNotThrow(() -> bean().set("foo", "bar"));
122
123 assertFalse(bean().isStrict());
124 assertTrue(bean().strict().isStrict());
125 assertFalse(bean().strict(false).isStrict());
126 }
127 }
128
129 @Nested class B_emptyTests extends TestBase {
130
131 private static final BeanTester<SecurityRequirement> TESTER =
132 testBean(bean())
133 .props("requirements")
134 .vals("<null>")
135 .json("{}")
136 .string("{}")
137 ;
138
139 @Test void b01_gettersAndSetters() {
140 TESTER.assertGettersAndSetters();
141 }
142
143 @Test void b02_copy() {
144 var t = new SecurityRequirement(TESTER.bean());
145 assertNotSame(TESTER.bean(), t);
146 assertBean(t, TESTER.props(), TESTER.vals());
147 }
148
149 @Test void b03_toJson() {
150 TESTER.assertToJson();
151 }
152
153 @Test void b04_fromJson() {
154 TESTER.assertFromJson();
155 }
156
157 @Test void b05_roundTrip() {
158 TESTER.assertRoundTrip();
159 }
160
161 @Test void b06_toString() {
162 TESTER.assertToString();
163 }
164
165 @Test void b07_keySet() {
166 assertEmpty(TESTER.bean().keySet());
167 }
168 }
169
170 @Nested class C_extraProperties extends TestBase {
171 private static final BeanTester<SecurityRequirement> TESTER =
172 testBean(
173 bean()
174 .set("a1", list("a2", "a3"))
175 .set("b1", list("b2"))
176 .set("x1", "x1a")
177 .set("x2", null)
178 )
179 .props("a1{#{toString}},b1{#{toString}},x1,x2")
180 .vals("{[{a2},{a3}]},{[{b2}]},x1a,<null>")
181 .json("{a1:['a2','a3'],b1:['b2'],x1:'x1a'}")
182 .string("{'a1':['a2','a3'],'b1':['b2'],'x1':'x1a'}".replace('\'', '"'))
183 ;
184
185 @Test void c01_gettersAndSetters() {
186 TESTER.assertGettersAndSetters();
187 }
188
189 @Test void c02_copy() {
190 TESTER.assertCopy();
191 }
192
193 @Test void c03_toJson() {
194 TESTER.assertToJson();
195 }
196
197 @Test void c04_fromJson() {
198 TESTER.assertFromJson();
199 }
200
201 @Test void c05_roundTrip() {
202 TESTER.assertRoundTrip();
203 }
204
205 @Test void c06_toString() {
206 TESTER.assertToString();
207 }
208
209 @Test void c07_keySet() {
210 assertList(TESTER.bean().keySet(), "a1", "b1", "x1", "x2");
211 }
212
213 @Test void c08_get() {
214 assertMapped(
215 TESTER.bean(), (obj,prop) -> obj.get(prop, Object.class),
216 "a1{#{toString}},b1{#{toString}},x1,x2",
217 "{[{a2},{a3}]},{[{b2}]},x1a,<null>"
218 );
219 }
220
221 @Test void c09_getTypes() {
222 assertMapped(
223 TESTER.bean(), (obj,prop) -> simpleClassNameOf(obj.get(prop, Object.class)),
224 "a1,b1,x1,x2",
225 "ArrayList,ArrayList,String,<null>"
226 );
227 }
228
229 @Test void c10_nullPropertyValue() {
230 assertThrows(IllegalArgumentException.class, ()->bean().get(null));
231 assertThrows(IllegalArgumentException.class, ()->bean().get(null, String.class));
232 assertThrows(IllegalArgumentException.class, ()->bean().set(null, "a"));
233 }
234 }
235
236
237
238
239
240 private static SecurityRequirement bean() {
241 return securityRequirement();
242 }
243 }