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