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