View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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  
22  import java.io.*;
23  import java.util.function.*;
24  
25  import org.apache.juneau.*;
26  import org.apache.juneau.annotation.*;
27  import org.apache.juneau.common.utils.*;
28  import org.apache.juneau.http.annotation.*;
29  import org.apache.juneau.rest.annotation.*;
30  import org.apache.juneau.rest.client.*;
31  import org.apache.juneau.rest.mock.*;
32  import org.junit.jupiter.api.*;
33  
34  class AcceptRanges_Test extends TestBase {
35  
36  	private static final String HEADER = "Accept-Ranges";
37  	private static final String VALUE = "foo";
38  
39  	@Rest
40  	public static class A {
41  		@RestOp
42  		public StringReader get(@Header(name=HEADER) @Schema(cf="multi") String[] h) {
43  			return reader(h == null ? "null" : Utils.join(h, ','));
44  		}
45  	}
46  
47  	//------------------------------------------------------------------------------------------------------------------
48  	// Method tests
49  	//------------------------------------------------------------------------------------------------------------------
50  
51  	@Test void a01_basic() throws Exception {
52  		var c = client().build();
53  
54  		// Normal usage.
55  		c.get().header(acceptRanges(VALUE)).run().assertContent(VALUE);
56  		c.get().header(acceptRanges(VALUE)).run().assertContent(VALUE);
57  		c.get().header(acceptRanges(()->VALUE)).run().assertContent(VALUE);
58  
59  		// Invalid usage.
60  		c.get().header(acceptRanges((String)null)).run().assertContent().isEmpty();
61  		c.get().header(acceptRanges((Supplier<String>)null)).run().assertContent().isEmpty();
62  		c.get().header(acceptRanges(()->null)).run().assertContent().isEmpty();
63  	}
64  
65  	//------------------------------------------------------------------------------------------------------------------
66  	// Helper methods.
67  	//------------------------------------------------------------------------------------------------------------------
68  
69  	private static RestClient.Builder client() {
70  		return MockRestClient.create(A.class);
71  	}
72  }