1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.http.header;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.http.HttpHeaders.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.io.*;
24 import java.util.function.*;
25
26 import org.apache.juneau.*;
27 import org.apache.juneau.annotation.*;
28 import org.apache.juneau.common.utils.*;
29 import org.apache.juneau.http.annotation.*;
30 import org.apache.juneau.rest.annotation.*;
31 import org.apache.juneau.rest.client.*;
32 import org.apache.juneau.rest.mock.*;
33 import org.junit.jupiter.api.*;
34
35
36
37
38 class Accept_Test extends TestBase {
39
40 private static final String HEADER = "Accept";
41 private static final String VALUE = "foo";
42 private static final MediaRanges PARSED = MediaRanges.of("foo");
43
44 @Rest
45 public static class A {
46 @RestGet
47 public StringReader get(@Header(name=HEADER) @Schema(cf="multi") String[] h) {
48 return reader(h == null ? "null" : Utils.join(h, ','));
49 }
50 }
51
52
53
54
55
56 @Test void a01_basic() throws Exception {
57 var c = client().build();
58
59
60 c.get().header(accept(VALUE)).run().assertContent(VALUE);
61 c.get().header(accept(VALUE)).run().assertContent(VALUE);
62 c.get().header(accept(PARSED)).run().assertContent(VALUE);
63 c.get().header(accept(()->PARSED)).run().assertContent(VALUE);
64
65
66 c.get().header(accept((String)null)).run().assertContent().isEmpty();
67 c.get().header(accept((Supplier<MediaRanges>)null)).run().assertContent().isEmpty();
68 c.get().header(accept(()->null)).run().assertContent().isEmpty();
69 }
70
71 @Test void a02_asRanges() {
72 assertNull(new Accept((String)null).asMediaRanges().orElse(null));
73 assertEquals(-1, new Accept((String)null).match(alist(MediaType.JSON)));
74 assertNull(new Accept((String)null).getRange(0));
75 assertString("Accept: application/json", new Accept(MediaRanges.of("application/json")));
76 }
77
78
79
80
81
82 private static RestClient.Builder client() {
83 return MockRestClient.create(A.class);
84 }
85 }