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.response;
18  
19  import static org.apache.juneau.commons.utils.CollectionUtils.*;
20  import static org.apache.juneau.http.HttpResponses.*;
21  import static org.apache.juneau.http.response.BadRequest.*;
22  import static org.junit.jupiter.api.Assertions.*;
23  
24  import org.apache.http.*;
25  import org.apache.juneau.*;
26  import org.apache.juneau.http.header.*;
27  import org.apache.juneau.rest.annotation.*;
28  import org.apache.juneau.rest.mock.*;
29  import org.junit.jupiter.api.*;
30  
31  class BadRequest_Test extends TestBase {
32  
33  	@Rest
34  	public static class A {
35  		@RestGet
36  		public void f1() throws BadRequest {
37  			throw new BadRequest();
38  		}
39  		@RestGet
40  		public void f2() throws BadRequest {
41  			throw new BadRequest("foo {0}", "bar");
42  		}
43  		@RestGet
44  		public void f3() throws BadRequest {
45  			throw new BadRequest(new RuntimeException("baz"));
46  		}
47  		@RestGet
48  		public void f4() throws BadRequest {
49  			throw new BadRequest(new RuntimeException("baz"), "foo {0}", "bar");
50  		}
51  		@RestGet
52  		public void f5() throws BadRequest {
53  			throw badRequest().setHeader2("Foo", "bar");
54  		}
55  		@RestGet
56  		public void f6() throws BadRequest {
57  			throw new BadRequest("foo");
58  		}
59  		@RestGet
60  		public void f7() throws BadRequest {
61  			throw badRequest().setHeaders(l(
62  				BasicHeader.of("Foo", "bar"),
63  				BasicHeader.of("Baz", "qux")
64  			));
65  		}
66  		@RestGet
67  		public void f8() throws BadRequest {
68  			throw badRequest().setContent("Custom content");
69  		}
70  		@RestGet
71  		public void f9() throws BadRequest {
72  			throw badRequest().setContent("Another custom message");
73  		}
74  	}
75  
76  	@Test void a01_basic() throws Exception {
77  		var c = MockRestClient.create(A.class).ignoreErrors().noTrace().build();
78  
79  		c.get("/f1").run()
80  			.assertStatus().asCode().is(STATUS_CODE)
81  			.assertContent(REASON_PHRASE);
82  		c.get("/f2").run()
83  			.assertStatus().asCode().is(STATUS_CODE)
84  			.assertContent("foo bar");
85  		c.get("/f3").run()
86  			.assertStatus().asCode().is(STATUS_CODE)
87  			.assertContent("baz");
88  		c.get("/f4").run()
89  			.assertStatus().asCode().is(STATUS_CODE)
90  			.assertContent("foo bar");
91  		c.get("/f5").run()
92  			.assertStatus().asCode().is(STATUS_CODE)
93  			.assertContent(REASON_PHRASE)
94  			.assertHeader("Foo").is("bar");
95  		c.get("/f6").run()
96  			.assertStatus().asCode().is(STATUS_CODE)
97  			.assertContent("foo");
98  		c.get("/f7").run()
99  			.assertStatus().asCode().is(STATUS_CODE)
100 			.assertHeader("Foo").is("bar")
101 			.assertHeader("Baz").is("qux");
102 		c.get("/f8").run()
103 			.assertStatus().asCode().is(STATUS_CODE)
104 			.assertContent("Custom content");
105 		c.get("/f9").run()
106 			.assertStatus().asCode().is(STATUS_CODE)
107 			.assertContent("Another custom message");
108 	}
109 
110 	@Test void a02_fluentSetters() {
111 		var x = badRequest();
112 
113 		// Test setHeaders(List<Header>)
114 		assertSame(x, x.setHeaders(l(
115 			BasicHeader.of("X-Test", "test-value")
116 		)));
117 		assertEquals("test-value", x.getFirstHeader("X-Test").getValue());
118 
119 		// Test setContent(String)
120 		assertSame(x, x.setContent("test content"));
121 
122 		// Test setContent(HttpEntity) returns same instance for fluent chaining
123 		var x2 = badRequest();
124 		HttpEntity entity = x2.getEntity();
125 		assertSame(x2, x2.setContent(entity));
126 	}
127 }