1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.rest.annotation;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import org.apache.juneau.*;
23 import org.apache.juneau.annotation.*;
24 import org.apache.juneau.http.annotation.*;
25 import org.apache.juneau.rest.mock.*;
26 import org.junit.jupiter.api.*;
27
28 class ResponseHeader_Test extends TestBase {
29
30
31
32
33
34 @Rest
35 public static class A {
36 @RestGet
37 public void a(Value<A1> h) {
38 h.set(new A1());
39 }
40 @RestGet
41 public void b(@Header(name="Foo") Value<String> h) {
42 h.set("foo");
43 }
44 @RestGet
45 public void c(@Header(name="Bar") Value<A1> h) {
46 h.set(new A1());
47 }
48 }
49
50 @Header(name="Foo")
51 public static class A1 {
52 @Override
53 public String toString() {return "foo";}
54 }
55
56 @Test void a01_methodParameters() throws Exception {
57 var a = MockRestClient.build(A.class);
58 a.get("/a")
59 .run()
60 .assertStatus(200)
61 .assertHeader("Foo").is("foo");
62 a.get("/b")
63 .run()
64 .assertStatus(200)
65 .assertHeader("Foo").is("foo");
66 a.get("/c")
67 .run()
68 .assertStatus(200)
69 .assertHeader("Bar").is("foo");
70 }
71
72
73
74
75
76 @Rest
77 public static class B {
78
79 @Header(
80 name="H"
81 )
82 @Schema(
83 description="a",
84 type="string"
85 )
86 public static class B1 {}
87 @RestGet
88 public void a(Value<B1> h) { }
89
90 @Header(
91 name="H",
92 schema=@Schema(description="a",type="string")
93 )
94 public static class B2 {}
95 @RestGet
96 public void b(Value<B2> h) { }
97
98 @Header(
99 name="H",
100 schema=@Schema(description="b",type="number")
101 )
102 @Schema(
103 description="a",
104 type="string"
105 )
106 public static class B3 {}
107 @RestGet
108 public void c(Value<B3> h) { }
109
110 @Header(name="H") @StatusCode(100)
111 public static class B4 {}
112 @RestGet
113 public void d(Value<B4> h) { }
114
115 @Header(name="H") @StatusCode({100,101})
116 public static class B5 {}
117 @RestGet
118 public void e(Value<B5> h) { }
119
120 @Header(name="H") @Schema(description="a")
121 public static class B6 {}
122 @RestGet
123 public void f(Value<B6> h) { }
124
125 @Header("H")
126 public static class B7 {}
127 @RestGet
128 public void g(Value<B7> h) { }
129 }
130
131 @Test void b01_swagger_onPojo() {
132 org.apache.juneau.bean.swagger.Swagger s = getSwagger(B.class);
133
134 var x = s.getResponseInfo("/a","get",200).getHeader("H");
135 assertEquals("a", x.getDescription());
136 assertEquals("string", x.getType());
137
138 x = s.getResponseInfo("/b","get",200).getHeader("H");
139 assertEquals("a", x.getDescription());
140 assertEquals("string", x.getType());
141
142 x = s.getResponseInfo("/c","get",200).getHeader("H");
143 assertEquals("b", x.getDescription());
144 assertEquals("number", x.getType());
145
146 x = s.getResponseInfo("/d","get",100).getHeader("H");
147 assertNotNull(x);
148
149 var x2 = s.getOperation("/e","get");
150 assertNotNull(x2.getResponse(100).getHeader("H"));
151 assertNotNull(x2.getResponse(101).getHeader("H"));
152
153 x = s.getResponseInfo("/f","get",200).getHeader("H");
154 assertEquals("a", x.getDescription());
155
156 x = s.getResponseInfo("/g","get",200).getHeader("H");
157 assertNotNull(x);
158 }
159
160
161
162
163
164 @Rest
165 public static class C {
166
167 public static class C1 {}
168 @RestGet
169 public void a(
170 @Header(
171 name="H"
172 )
173 @Schema(
174 description="a",
175 type="string"
176 )
177 Value<C1> h) { }
178
179 public static class C2 {}
180 @RestGet
181 public void b(
182 @Header(
183 name="H",
184 schema=@Schema(description="a",type="string")
185 )
186 Value<C2> h) { }
187
188 public static class C3 {}
189 @RestGet
190 public void c(
191 @Header(
192 name="H",
193 schema=@Schema(description="b",type="number")
194 )
195 @Schema(
196 description="a",
197 type="string"
198 )
199 Value<C3> h) { }
200
201 public static class C4 {}
202 @RestGet
203 public void d(@Header(name="H") @StatusCode(100) Value<C4> h) { }
204
205 public static class C5 {}
206 @RestGet
207 public void e(@Header(name="H") @StatusCode({100,101}) Value<C5> h) { }
208
209 public static class C6 {}
210 @RestGet
211 public void f(@Header(name="H") @Schema(description="a") Value<C6> h) { }
212
213 public static class C7 {}
214 @RestGet
215 public void g(@Header("H") Value<C7> h) { }
216 }
217
218 @Test void c01_swagger_onMethodParameters() {
219 org.apache.juneau.bean.swagger.Swagger sc = getSwagger(C.class);
220
221 var x = sc.getResponseInfo("/a","get",200).getHeader("H");
222 assertEquals("a", x.getDescription());
223 assertEquals("string", x.getType());
224
225 x = sc.getResponseInfo("/b","get",200).getHeader("H");
226 assertEquals("a", x.getDescription());
227 assertEquals("string", x.getType());
228
229 x = sc.getResponseInfo("/c","get",200).getHeader("H");
230 assertEquals("b", x.getDescription());
231 assertEquals("number", x.getType());
232
233 x = sc.getResponseInfo("/d","get",100).getHeader("H");
234 assertNotNull(x);
235
236 var x2 = sc.getOperation("/e","get");
237 assertNotNull(x2.getResponse(100).getHeader("H"));
238 assertNotNull(x2.getResponse(101).getHeader("H"));
239
240 x = sc.getResponseInfo("/f","get",200).getHeader("H");
241 assertEquals("a", x.getDescription());
242
243 x = sc.getResponseInfo("/g","get",200).getHeader("H");
244 assertNotNull(x);
245 }
246 }