Polishing

This commit is contained in:
Sam Brannen 2022-11-08 19:22:10 +01:00
parent debe78b7f9
commit 7d68d0625c
24 changed files with 257 additions and 271 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,8 +16,6 @@
package org.springframework.test.context.junit4.spr9051; package org.springframework.test.context.junit4.spr9051;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -93,9 +91,8 @@ public class AnnotatedConfigClassesWithoutAtConfigurationTests {
assertThat(enigma).isNotNull(); assertThat(enigma).isNotNull();
assertThat(lifecycleBean).isNotNull(); assertThat(lifecycleBean).isNotNull();
assertThat(lifecycleBean.isInitialized()).isTrue(); assertThat(lifecycleBean.isInitialized()).isTrue();
Set<String> names = new HashSet<>(); Set<String> names = Set.of(enigma, lifecycleBean.getName());
names.add(enigma); assertThat(names).containsExactlyInAnyOrder("enigma #1", "enigma #2");
names.add(lifecycleBean.getName());
assertThat(new HashSet<>(Arrays.asList("enigma #1", "enigma #2"))).isEqualTo(names);
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -38,13 +38,13 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
*/ */
public class MockRestServiceServerTests { class MockRestServiceServerTests {
private final RestTemplate restTemplate = new RestTemplate(); private final RestTemplate restTemplate = new RestTemplate();
@Test @Test
public void buildMultipleTimes() { void buildMultipleTimes() {
MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(this.restTemplate); MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(this.restTemplate);
MockRestServiceServer server = builder.build(); MockRestServiceServer server = builder.build();
@ -66,7 +66,7 @@ public class MockRestServiceServerTests {
} }
@Test @Test
public void exactExpectOrder() { void exactExpectOrder() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate) MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate)
.ignoreExpectOrder(false).build(); .ignoreExpectOrder(false).build();
@ -77,7 +77,7 @@ public class MockRestServiceServerTests {
} }
@Test @Test
public void ignoreExpectOrder() { void ignoreExpectOrder() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate) MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate)
.ignoreExpectOrder(true).build(); .ignoreExpectOrder(true).build();
@ -89,7 +89,7 @@ public class MockRestServiceServerTests {
} }
@Test @Test
public void resetAndReuseServer() { void resetAndReuseServer() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build(); MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build();
server.expect(requestTo("/foo")).andRespond(withSuccess()); server.expect(requestTo("/foo")).andRespond(withSuccess());
@ -103,7 +103,7 @@ public class MockRestServiceServerTests {
} }
@Test @Test
public void resetAndReuseServerWithUnorderedExpectationManager() { void resetAndReuseServerWithUnorderedExpectationManager() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate) MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate)
.ignoreExpectOrder(true).build(); .ignoreExpectOrder(true).build();
@ -120,7 +120,7 @@ public class MockRestServiceServerTests {
} }
@Test // gh-24486 @Test // gh-24486
public void resetClearsRequestFailures() { void resetClearsRequestFailures() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build(); MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build();
server.expect(once(), requestTo("/remoteurl")).andRespond(withSuccess()); server.expect(once(), requestTo("/remoteurl")).andRespond(withSuccess());
this.restTemplate.postForEntity("/remoteurl", null, String.class); this.restTemplate.postForEntity("/remoteurl", null, String.class);
@ -138,7 +138,7 @@ public class MockRestServiceServerTests {
} }
@Test // SPR-16132 @Test // SPR-16132
public void followUpRequestAfterFailure() { void followUpRequestAfterFailure() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build(); MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build();
server.expect(requestTo("/some-service/some-endpoint")) server.expect(requestTo("/some-service/some-endpoint"))
@ -159,7 +159,7 @@ public class MockRestServiceServerTests {
} }
@Test // gh-21799 @Test // gh-21799
public void verifyShouldFailIfRequestsFailed() { void verifyShouldFailIfRequestsFailed() {
MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build(); MockRestServiceServer server = MockRestServiceServer.bindTo(this.restTemplate).build();
server.expect(once(), requestTo("/remoteurl")).andRespond(withSuccess()); server.expect(once(), requestTo("/remoteurl")).andRespond(withSuccess());
@ -174,7 +174,7 @@ public class MockRestServiceServerTests {
} }
@Test @Test
public void verifyWithTimeout() { void verifyWithTimeout() {
MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(this.restTemplate); MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(this.restTemplate);
MockRestServiceServer server1 = builder.build(); MockRestServiceServer server1 = builder.build();
@ -182,12 +182,11 @@ public class MockRestServiceServerTests {
server1.expect(requestTo("/bar")).andRespond(withSuccess()); server1.expect(requestTo("/bar")).andRespond(withSuccess());
this.restTemplate.getForObject("/foo", Void.class); this.restTemplate.getForObject("/foo", Void.class);
assertThatThrownBy(() -> server1.verify(Duration.ofMillis(100))).hasMessage( assertThatThrownBy(() -> server1.verify(Duration.ofMillis(100))).hasMessage("""
""" Further request(s) expected leaving 1 unsatisfied expectation(s).
Further request(s) expected leaving 1 unsatisfied expectation(s). 1 request(s) executed:
1 request(s) executed: GET /foo, headers: [Accept:"application/json, application/*+json"]
GET /foo, headers: [Accept:"application/json, application/*+json"] """);
""");
MockRestServiceServer server2 = builder.build(); MockRestServiceServer server2 = builder.build();
server2.expect(requestTo("/foo")).andRespond(withSuccess()); server2.expect(requestTo("/foo")).andRespond(withSuccess());

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -26,7 +26,6 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpRequest;
import org.springframework.mock.http.client.MockClientHttpRequest; import org.springframework.mock.http.client.MockClientHttpRequest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST; import static org.springframework.http.HttpMethod.POST;
@ -44,31 +43,28 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
*/ */
public class SimpleRequestExpectationManagerTests { class SimpleRequestExpectationManagerTests {
private final SimpleRequestExpectationManager manager = new SimpleRequestExpectationManager(); private final SimpleRequestExpectationManager manager = new SimpleRequestExpectationManager();
@Test @Test
public void unexpectedRequest() throws Exception { void unexpectedRequest() throws Exception {
try { assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(GET, "/foo")); .isThrownBy(() -> this.manager.validateRequest(createRequest(GET, "/foo")))
} .withMessage("""
catch (AssertionError error) {
assertThat(error.getMessage()).isEqualTo(("""
No further requests expected: HTTP GET /foo No further requests expected: HTTP GET /foo
0 request(s) executed. 0 request(s) executed.
""")); """);
}
} }
@Test @Test
public void zeroExpectedRequests() throws Exception { void zeroExpectedRequests() throws Exception {
this.manager.verify(); this.manager.verify();
} }
@Test @Test
public void sequentialRequests() throws Exception { void sequentialRequests() throws Exception {
this.manager.expectRequest(once(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(once(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -78,13 +74,13 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void sequentialRequestsTooMany() throws Exception { void sequentialRequestsTooMany() throws Exception {
this.manager.expectRequest(max(1), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(1), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(max(1), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(1), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(GET, "/baz"))) .isThrownBy(() -> this.manager.validateRequest(createRequest(GET, "/baz")))
.withMessage(""" .withMessage("""
No further requests expected: HTTP GET /baz No further requests expected: HTTP GET /baz
2 request(s) executed: 2 request(s) executed:
@ -94,12 +90,12 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void sequentialRequestsTooFew() throws Exception { void sequentialRequestsTooFew() throws Exception {
this.manager.expectRequest(min(1), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(1), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(min(1), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(1), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.verify()) .isThrownBy(() -> this.manager.verify())
.withMessage(""" .withMessage("""
Further request(s) expected leaving 1 unsatisfied expectation(s). Further request(s) expected leaving 1 unsatisfied expectation(s).
1 request(s) executed: 1 request(s) executed:
@ -108,7 +104,7 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequests() throws Exception { void repeatedRequests() throws Exception {
this.manager.expectRequest(times(3), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(times(3), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(times(3), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(times(3), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -122,15 +118,15 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequestsTooMany() throws Exception { void repeatedRequestsTooMany() throws Exception {
this.manager.expectRequest(max(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(max(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(GET, "/foo"))) .isThrownBy(() -> this.manager.validateRequest(createRequest(GET, "/foo")))
.withMessage(""" .withMessage("""
No further requests expected: HTTP GET /foo No further requests expected: HTTP GET /foo
4 request(s) executed: 4 request(s) executed:
@ -142,14 +138,14 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequestsTooFew() throws Exception { void repeatedRequestsTooFew() throws Exception {
this.manager.expectRequest(min(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(min(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.verify()) .isThrownBy(() -> this.manager.verify())
.withMessageContaining(""" .withMessageContaining("""
3 request(s) executed: 3 request(s) executed:
GET /foo GET /foo
@ -159,17 +155,17 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequestsNotInOrder() throws Exception { void repeatedRequestsNotInOrder() throws Exception {
this.manager.expectRequest(twice(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(twice(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(twice(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(twice(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(twice(), requestTo("/baz")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(twice(), requestTo("/baz")).andExpect(method(GET)).andRespond(withSuccess());
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(POST, "/foo"))) .isThrownBy(() -> this.manager.validateRequest(createRequest(POST, "/foo")))
.withMessage("Unexpected HttpMethod expected:<GET> but was:<POST>"); .withMessage("Unexpected HttpMethod expected:<GET> but was:<POST>");
} }
@Test // SPR-15672 @Test // SPR-15672
public void sequentialRequestsWithDifferentCount() throws Exception { void sequentialRequestsWithDifferentCount() throws Exception {
this.manager.expectRequest(times(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(times(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -179,7 +175,7 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test // SPR-15719 @Test // SPR-15719
public void repeatedRequestsInSequentialOrder() throws Exception { void repeatedRequestsInSequentialOrder() throws Exception {
this.manager.expectRequest(times(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(times(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(times(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(times(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -190,7 +186,7 @@ public class SimpleRequestExpectationManagerTests {
} }
@Test // SPR-16132 @Test // SPR-16132
public void sequentialRequestsWithFirstFailing() throws Exception { void sequentialRequestsWithFirstFailing() throws Exception {
this.manager.expectRequest(once(), requestTo("/foo")). this.manager.expectRequest(once(), requestTo("/foo")).
andExpect(method(GET)).andRespond(request -> { throw new SocketException("pseudo network error"); }); andExpect(method(GET)).andRespond(request -> { throw new SocketException("pseudo network error"); });
this.manager.expectRequest(once(), requestTo("/handle-error")). this.manager.expectRequest(once(), requestTo("/handle-error")).

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -25,7 +25,6 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpRequest;
import org.springframework.mock.http.client.MockClientHttpRequest; import org.springframework.mock.http.client.MockClientHttpRequest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpMethod.GET;
import static org.springframework.test.web.client.ExpectedCount.max; import static org.springframework.test.web.client.ExpectedCount.max;
@ -41,31 +40,28 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
*/ */
public class UnorderedRequestExpectationManagerTests { class UnorderedRequestExpectationManagerTests {
private final UnorderedRequestExpectationManager manager = new UnorderedRequestExpectationManager(); private final UnorderedRequestExpectationManager manager = new UnorderedRequestExpectationManager();
@Test @Test
public void unexpectedRequest() throws Exception { void unexpectedRequest() {
try { assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(GET, "/foo")); .isThrownBy(() -> this.manager.validateRequest(createRequest(GET, "/foo")))
} .withMessage("""
catch (AssertionError error) {
assertThat(error.getMessage()).isEqualTo(("""
No further requests expected: HTTP GET /foo No further requests expected: HTTP GET /foo
0 request(s) executed. 0 request(s) executed.
""")); """);
}
} }
@Test @Test
public void zeroExpectedRequests() { void zeroExpectedRequests() {
this.manager.verify(); this.manager.verify();
} }
@Test @Test
public void multipleRequests() throws Exception { void multipleRequests() throws Exception {
this.manager.expectRequest(once(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(once(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(once(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -75,7 +71,7 @@ public class UnorderedRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequests() throws Exception { void repeatedRequests() throws Exception {
this.manager.expectRequest(twice(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(twice(), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(twice(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(twice(), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
@ -87,15 +83,15 @@ public class UnorderedRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequestsTooMany() throws Exception { void repeatedRequestsTooMany() throws Exception {
this.manager.expectRequest(max(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(max(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(max(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class)
this.manager.validateRequest(createRequest(GET, "/foo"))) .isThrownBy(() -> this.manager.validateRequest(createRequest(GET, "/foo")))
.withMessage(""" .withMessage("""
No further requests expected: HTTP GET /foo No further requests expected: HTTP GET /foo
4 request(s) executed: 4 request(s) executed:
@ -107,20 +103,20 @@ public class UnorderedRequestExpectationManagerTests {
} }
@Test @Test
public void repeatedRequestsTooFew() throws Exception { void repeatedRequestsTooFew() throws Exception {
this.manager.expectRequest(min(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(2), requestTo("/foo")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.expectRequest(min(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess()); this.manager.expectRequest(min(2), requestTo("/bar")).andExpect(method(GET)).andRespond(withSuccess());
this.manager.validateRequest(createRequest(GET, "/bar")); this.manager.validateRequest(createRequest(GET, "/bar"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
this.manager.validateRequest(createRequest(GET, "/foo")); this.manager.validateRequest(createRequest(GET, "/foo"));
assertThatExceptionOfType(AssertionError.class) assertThatExceptionOfType(AssertionError.class)
.isThrownBy(this.manager::verify) .isThrownBy(this.manager::verify)
.withMessageContaining(""" .withMessageContaining("""
3 request(s) executed: 3 request(s) executed:
GET /bar GET /bar
GET /foo GET /foo
GET /foo GET /foo
"""); """);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2021 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -17,7 +17,6 @@
package org.springframework.test.web.servlet.htmlunit; package org.springframework.test.web.servlet.htmlunit;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Collections; import java.util.Collections;
import com.gargoylesoftware.htmlunit.HttpWebConnection; import com.gargoylesoftware.htmlunit.HttpWebConnection;
@ -39,6 +38,7 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.htmlunit.DelegatingWebConnection.DelegateWebConnection; import org.springframework.test.web.servlet.htmlunit.DelegatingWebConnection.DelegateWebConnection;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@ -52,7 +52,7 @@ import static org.springframework.core.testfixture.TestGroup.LONG_RUNNING;
* @since 4.2 * @since 4.2
*/ */
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
public class DelegatingWebConnectionTests { class DelegatingWebConnectionTests {
private DelegatingWebConnection webConnection; private DelegatingWebConnection webConnection;
@ -78,9 +78,9 @@ public class DelegatingWebConnectionTests {
@BeforeEach @BeforeEach
public void setup() throws Exception { void setup() throws Exception {
request = new WebRequest(new URL("http://localhost/")); request = new WebRequest(new URL("http://localhost/"));
WebResponseData data = new WebResponseData("".getBytes(StandardCharsets.UTF_8), 200, "", Collections.emptyList()); WebResponseData data = new WebResponseData("".getBytes(UTF_8), 200, "", Collections.emptyList());
expectedResponse = new WebResponse(data, request, 100L); expectedResponse = new WebResponse(data, request, 100L);
webConnection = new DelegatingWebConnection(defaultConnection, webConnection = new DelegatingWebConnection(defaultConnection,
new DelegateWebConnection(matcher1, connection1), new DelegateWebConnection(matcher2, connection2)); new DelegateWebConnection(matcher1, connection1), new DelegateWebConnection(matcher2, connection2));
@ -88,7 +88,7 @@ public class DelegatingWebConnectionTests {
@Test @Test
public void getResponseDefault() throws Exception { void getResponseDefault() throws Exception {
given(defaultConnection.getResponse(request)).willReturn(expectedResponse); given(defaultConnection.getResponse(request)).willReturn(expectedResponse);
WebResponse response = webConnection.getResponse(request); WebResponse response = webConnection.getResponse(request);
@ -100,7 +100,7 @@ public class DelegatingWebConnectionTests {
} }
@Test @Test
public void getResponseAllMatches() throws Exception { void getResponseAllMatches() throws Exception {
given(matcher1.matches(request)).willReturn(true); given(matcher1.matches(request)).willReturn(true);
given(connection1.getResponse(request)).willReturn(expectedResponse); given(connection1.getResponse(request)).willReturn(expectedResponse);
WebResponse response = webConnection.getResponse(request); WebResponse response = webConnection.getResponse(request);
@ -112,7 +112,7 @@ public class DelegatingWebConnectionTests {
} }
@Test @Test
public void getResponseSecondMatches() throws Exception { void getResponseSecondMatches() throws Exception {
given(matcher2.matches(request)).willReturn(true); given(matcher2.matches(request)).willReturn(true);
given(connection2.getResponse(request)).willReturn(expectedResponse); given(connection2.getResponse(request)).willReturn(expectedResponse);
WebResponse response = webConnection.getResponse(request); WebResponse response = webConnection.getResponse(request);
@ -126,7 +126,7 @@ public class DelegatingWebConnectionTests {
@Test @Test
@EnabledForTestGroups(LONG_RUNNING) @EnabledForTestGroups(LONG_RUNNING)
public void verifyExampleInClassLevelJavadoc() throws Exception { void verifyExampleInClassLevelJavadoc() throws Exception {
WebClient webClient = new WebClient(); WebClient webClient = new WebClient();
MockMvc mockMvc = MockMvcBuilders.standaloneSetup().build(); MockMvc mockMvc = MockMvcBuilders.standaloneSetup().build();

View File

@ -19,7 +19,6 @@ package org.springframework.test.web.servlet.request;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.security.Principal; import java.security.Principal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -34,7 +33,6 @@ import jakarta.servlet.http.Cookie;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession; import org.springframework.mock.web.MockHttpSession;
@ -46,8 +44,12 @@ import org.springframework.web.servlet.FlashMap;
import org.springframework.web.servlet.support.SessionFlashMapManager; import org.springframework.web.servlet.support.SessionFlashMapManager;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST;
/** /**
* Unit tests for building a {@link MockHttpServletRequest} with * Unit tests for building a {@link MockHttpServletRequest} with
@ -60,7 +62,7 @@ class MockHttpServletRequestBuilderTests {
private final ServletContext servletContext = new MockServletContext(); private final ServletContext servletContext = new MockServletContext();
private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo/bar"); private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder(GET, "/foo/bar");
@Test @Test
@ -73,7 +75,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void uri() { void uri() {
String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)"; String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)";
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, uri); this.builder = new MockHttpServletRequestBuilder(GET, uri);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getScheme()).isEqualTo("https"); assertThat(request.getScheme()).isEqualTo("https");
@ -87,7 +89,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestUriWithEncoding() { void requestUriWithEncoding() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo bar"); this.builder = new MockHttpServletRequestBuilder(GET, "/foo bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/foo%20bar"); assertThat(request.getRequestURI()).isEqualTo("/foo%20bar");
@ -95,7 +97,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-13435 @Test // SPR-13435
void requestUriWithDoubleSlashes() throws URISyntaxException { void requestUriWithDoubleSlashes() throws URISyntaxException {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, new URI("/test//currentlyValid/0")); this.builder = new MockHttpServletRequestBuilder(GET, new URI("/test//currentlyValid/0"));
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/test//currentlyValid/0"); assertThat(request.getRequestURI()).isEqualTo("/test//currentlyValid/0");
@ -109,7 +111,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathEmpty() { void contextPathEmpty() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo"); this.builder = new MockHttpServletRequestBuilder(GET, "/foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getContextPath()).isEqualTo(""); assertThat(request.getContextPath()).isEqualTo("");
@ -119,7 +121,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathEmpty() { void contextPathServletPathEmpty() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -130,7 +132,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPath() { void contextPathServletPath() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/main/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET, "/travel/main/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
this.builder.servletPath("/main"); this.builder.servletPath("/main");
@ -143,7 +145,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathInfoEmpty() { void contextPathServletPathInfoEmpty() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
this.builder.servletPath("/hotels/42"); this.builder.servletPath("/hotels/42");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -155,7 +157,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathInfo() { void contextPathServletPathInfo() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET, "/");
this.builder.servletPath("/index.html"); this.builder.servletPath("/index.html");
this.builder.pathInfo(null); this.builder.pathInfo(null);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -167,7 +169,7 @@ class MockHttpServletRequestBuilderTests {
@Test // gh-28823 @Test // gh-28823
void emptyPath() { void emptyPath() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, ""); this.builder = new MockHttpServletRequestBuilder(GET, "");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo(""); assertThat(request.getRequestURI()).isEqualTo("");
@ -178,7 +180,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-16453 @Test // SPR-16453
void pathInfoIsDecoded() { void pathInfoIsDecoded() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels 42"); this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels 42");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getPathInfo()).isEqualTo("/travel/hotels 42"); assertThat(request.getPathInfo()).isEqualTo("/travel/hotels 42");
@ -208,7 +210,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestUriAndFragment() { void requestUriAndFragment() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo#bar"); this.builder = new MockHttpServletRequestBuilder(GET, "/foo#bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/foo"); assertThat(request.getRequestURI()).isEqualTo("/foo");
@ -226,7 +228,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQuery() { void requestParameterFromQuery() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo=bar&foo=baz"); this.builder = new MockHttpServletRequestBuilder(GET, "/?foo=bar&foo=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
@ -237,7 +239,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQueryList() { void requestParameterFromQueryList() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo[0]=bar&foo[1]=baz"); this.builder = new MockHttpServletRequestBuilder(GET, "/?foo[0]=bar&foo[1]=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -248,7 +250,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameter() { void queryParameter() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET, "/");
this.builder.queryParam("foo", "bar"); this.builder.queryParam("foo", "bar");
this.builder.queryParam("foo", "baz"); this.builder.queryParam("foo", "baz");
@ -260,7 +262,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameterMap() { void queryParameterMap() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET, "/");
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>(); MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
List<String> values = new ArrayList<>(); List<String> values = new ArrayList<>();
values.add("bar"); values.add("bar");
@ -276,7 +278,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameterList() { void queryParameterList() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET, "/");
this.builder.queryParam("foo[0]", "bar"); this.builder.queryParam("foo[0]", "bar");
this.builder.queryParam("foo[1]", "baz"); this.builder.queryParam("foo[1]", "baz");
@ -289,7 +291,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQueryWithEncoding() { void requestParameterFromQueryWithEncoding() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo={value}", "bar=baz"); this.builder = new MockHttpServletRequestBuilder(GET, "/?foo={value}", "bar=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -299,7 +301,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-11043 @Test // SPR-11043
void requestParameterFromQueryNull() { void requestParameterFromQueryNull() {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo"); this.builder = new MockHttpServletRequestBuilder(GET, "/?foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
@ -313,7 +315,7 @@ class MockHttpServletRequestBuilderTests {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("foo", "bar"); params.add("foo", "bar");
params.add("foo", "baz"); params.add("foo", "baz");
this.builder = new MockHttpServletRequestBuilder(HttpMethod.POST, "/foo"); this.builder = new MockHttpServletRequestBuilder(POST, "/foo");
this.builder.params(params); this.builder.params(params);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -326,8 +328,8 @@ class MockHttpServletRequestBuilderTests {
String contentType = "application/x-www-form-urlencoded;charset=UTF-8"; String contentType = "application/x-www-form-urlencoded;charset=UTF-8";
String body = "name+1=value+1&name+2=value+A&name+2=value+B&name+3"; String body = "name+1=value+1&name+2=value+A&name+2=value+B&name+3";
MockHttpServletRequest request = new MockHttpServletRequestBuilder(HttpMethod.POST, "/foo") MockHttpServletRequest request = new MockHttpServletRequestBuilder(POST, "/foo")
.contentType(contentType).content(body.getBytes(StandardCharsets.UTF_8)) .contentType(contentType).content(body.getBytes(UTF_8))
.buildRequest(this.servletContext); .buildRequest(this.servletContext);
assertThat(request.getParameterMap().get("name 1")).containsExactly("value 1"); assertThat(request.getParameterMap().get("name 1")).containsExactly("value 1");
@ -414,7 +416,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void body() throws IOException { void body() throws IOException {
byte[] body = "Hello World".getBytes(StandardCharsets.UTF_8); byte[] body = "Hello World".getBytes(UTF_8);
this.builder.content(body); this.builder.content(body);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -492,9 +494,9 @@ class MockHttpServletRequestBuilderTests {
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getCharacterEncoding()).isEqualTo(encoding); assertThat(request.getCharacterEncoding()).isEqualTo(encoding);
this.builder.characterEncoding(StandardCharsets.ISO_8859_1); this.builder.characterEncoding(ISO_8859_1);
request = this.builder.buildRequest(this.servletContext); request = this.builder.buildRequest(this.servletContext);
assertThat(request.getCharacterEncoding()).isEqualTo(StandardCharsets.ISO_8859_1.name()); assertThat(request.getCharacterEncoding()).isEqualTo(ISO_8859_1.name());
} }
@Test @Test
@ -563,7 +565,7 @@ class MockHttpServletRequestBuilderTests {
final String EXPECTED = "override"; final String EXPECTED = "override";
MockHttpServletRequestBuilder defaultBuilder = MockHttpServletRequestBuilder defaultBuilder =
new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo/bar") new MockHttpServletRequestBuilder(GET, "/foo/bar")
.with(requestAttr(ATTR).value("default")) .with(requestAttr(ATTR).value("default"))
.with(requestAttr(ATTR).value(EXPECTED)); .with(requestAttr(ATTR).value(EXPECTED));

View File

@ -16,94 +16,93 @@
package org.springframework.test.web.servlet.result; package org.springframework.test.web.servlet.result;
import java.nio.charset.StandardCharsets;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.web.servlet.StubMvcResult; import org.springframework.test.web.servlet.StubMvcResult;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
/** /**
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Sebastien Deleuze * @author Sebastien Deleuze
*/ */
public class ContentResultMatchersTests { class ContentResultMatchersTests {
@Test @Test
public void typeMatches() throws Exception { void typeMatches() throws Exception {
new ContentResultMatchers().contentType(MediaType.APPLICATION_JSON_VALUE).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().contentType(APPLICATION_JSON_VALUE).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void typeNoMatch() throws Exception { void typeNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().contentType("text/plain").match(getStubMvcResult(CONTENT))); new ContentResultMatchers().contentType("text/plain").match(getStubMvcResult(CONTENT)));
} }
@Test @Test
public void string() throws Exception { void string() throws Exception {
new ContentResultMatchers().string(new String(CONTENT.getBytes(StandardCharsets.UTF_8))).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().string(new String(CONTENT.getBytes(UTF_8))).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void stringNoMatch() throws Exception { void stringNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().encoding("bogus").match(getStubMvcResult(CONTENT))); new ContentResultMatchers().encoding("bogus").match(getStubMvcResult(CONTENT)));
} }
@Test @Test
public void stringMatcher() throws Exception { void stringMatcher() throws Exception {
String content = new String(CONTENT.getBytes(StandardCharsets.UTF_8)); String content = new String(CONTENT.getBytes(UTF_8));
new ContentResultMatchers().string(Matchers.equalTo(content)).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().string(Matchers.equalTo(content)).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void stringMatcherNoMatch() throws Exception { void stringMatcherNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().string(Matchers.equalTo("bogus")).match(getStubMvcResult(CONTENT))); new ContentResultMatchers().string(Matchers.equalTo("bogus")).match(getStubMvcResult(CONTENT)));
} }
@Test @Test
public void bytes() throws Exception { void bytes() throws Exception {
new ContentResultMatchers().bytes(CONTENT.getBytes(StandardCharsets.UTF_8)).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().bytes(CONTENT.getBytes(UTF_8)).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void bytesNoMatch() throws Exception { void bytesNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().bytes("bogus".getBytes()).match(getStubMvcResult(CONTENT))); new ContentResultMatchers().bytes("bogus".getBytes()).match(getStubMvcResult(CONTENT)));
} }
@Test @Test
public void jsonLenientMatch() throws Exception { void jsonLenientMatch() throws Exception {
new ContentResultMatchers().json("{\n \"foo\" : \"bar\" \n}").match(getStubMvcResult(CONTENT)); new ContentResultMatchers().json("{\n \"foo\" : \"bar\" \n}").match(getStubMvcResult(CONTENT));
new ContentResultMatchers().json("{\n \"foo\" : \"bar\" \n}", false).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().json("{\n \"foo\" : \"bar\" \n}", false).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void jsonStrictMatch() throws Exception { void jsonStrictMatch() throws Exception {
new ContentResultMatchers().json("{\n \"foo\":\"bar\", \"foo array\":[\"foo\",\"bar\"] \n}", true).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().json("{\n \"foo\":\"bar\", \"foo array\":[\"foo\",\"bar\"] \n}", true).match(getStubMvcResult(CONTENT));
new ContentResultMatchers().json("{\n \"foo array\":[\"foo\",\"bar\"], \"foo\":\"bar\" \n}", true).match(getStubMvcResult(CONTENT)); new ContentResultMatchers().json("{\n \"foo array\":[\"foo\",\"bar\"], \"foo\":\"bar\" \n}", true).match(getStubMvcResult(CONTENT));
} }
@Test @Test
public void jsonLenientNoMatch() throws Exception { void jsonLenientNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().json("{\n\"fooo\":\"bar\"\n}").match(getStubMvcResult(CONTENT))); new ContentResultMatchers().json("{\n\"fooo\":\"bar\"\n}").match(getStubMvcResult(CONTENT)));
} }
@Test @Test
public void jsonStrictNoMatch() throws Exception { void jsonStrictNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new ContentResultMatchers().json("{\"foo\":\"bar\", \"foo array\":[\"bar\",\"foo\"]}", true).match(getStubMvcResult(CONTENT))); new ContentResultMatchers().json("{\"foo\":\"bar\", \"foo array\":[\"bar\",\"foo\"]}", true).match(getStubMvcResult(CONTENT)));
} }
@Test // gh-23622 @Test // gh-23622
public void jsonUtf8Match() throws Exception { void jsonUtf8Match() throws Exception {
new ContentResultMatchers().json("{\"name\":\"Jürgen\"}").match(getStubMvcResult(UTF8_CONTENT)); new ContentResultMatchers().json("{\"name\":\"Jürgen\"}").match(getStubMvcResult(UTF8_CONTENT));
} }
@ -113,8 +112,8 @@ public class ContentResultMatchersTests {
private StubMvcResult getStubMvcResult(String content) throws Exception { private StubMvcResult getStubMvcResult(String content) throws Exception {
MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletResponse response = new MockHttpServletResponse();
response.addHeader("Content-Type", MediaType.APPLICATION_JSON_VALUE); response.addHeader("Content-Type", APPLICATION_JSON_VALUE);
response.getOutputStream().write(content.getBytes(StandardCharsets.UTF_8)); response.getOutputStream().write(content.getBytes(UTF_8));
return new StubMvcResult(null, null, null, null, null, null, response); return new StubMvcResult(null, null, null, null, null, null, response);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,14 +16,14 @@
package org.springframework.test.web.servlet.result; package org.springframework.test.web.servlet.result;
import java.nio.charset.StandardCharsets;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.web.servlet.StubMvcResult; import org.springframework.test.web.servlet.StubMvcResult;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/** /**
@ -35,19 +35,20 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
* @author Brian Clozel * @author Brian Clozel
* @author Sebastien Deleuze * @author Sebastien Deleuze
*/ */
public class JsonPathResultMatchersTests { class JsonPathResultMatchersTests {
private static final String RESPONSE_CONTENT = "{" + // private static final String RESPONSE_CONTENT = """
"'str': 'foo', " + // {
"'utf8Str': 'Příliš', " + // 'str': 'foo',
"'num': 5, " + // 'utf8Str': 'Příliš',
"'bool': true, " + // 'num': 5,
"'arr': [42], " + // 'bool': true,
"'colorMap': {'red': 'rojo'}, " + // 'arr': [42],
"'emptyString': '', " + // 'colorMap': {'red': 'rojo'},
"'emptyArray': [], " + // 'emptyString': '',
"'emptyMap': {} " + // 'emptyArray': [],
"}"; 'emptyMap': {}
}""";
private static final StubMvcResult stubMvcResult; private static final StubMvcResult stubMvcResult;
@ -55,7 +56,7 @@ public class JsonPathResultMatchersTests {
try { try {
MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletResponse response = new MockHttpServletResponse();
response.addHeader("Content-Type", "application/json"); response.addHeader("Content-Type", "application/json");
response.getOutputStream().write(RESPONSE_CONTENT.getBytes(StandardCharsets.UTF_8)); response.getOutputStream().write(RESPONSE_CONTENT.getBytes(UTF_8));
stubMvcResult = new StubMvcResult(null, null, null, null, null, null, response); stubMvcResult = new StubMvcResult(null, null, null, null, null, null, response);
} }
catch (Exception e) { catch (Exception e) {
@ -63,220 +64,221 @@ public class JsonPathResultMatchersTests {
} }
} }
@Test @Test
public void valueWithValueMismatch() throws Exception { void valueWithValueMismatch() throws Exception {
assertThatExceptionOfType(AssertionError.class) assertThatExceptionOfType(AssertionError.class)
.isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus").match(stubMvcResult)) .isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus").match(stubMvcResult))
.withMessage("JSON path \"$.str\" expected:<bogus> but was:<foo>"); .withMessage("JSON path \"$.str\" expected:<bogus> but was:<foo>");
} }
@Test @Test
public void valueWithTypeMismatch() throws Exception { void valueWithTypeMismatch() throws Exception {
assertThatExceptionOfType(AssertionError.class) assertThatExceptionOfType(AssertionError.class)
.isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus".getBytes()).match(stubMvcResult)) .isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus".getBytes()).match(stubMvcResult))
.withMessage("At JSON path \"$.str\", value <foo> of type <java.lang.String> cannot be converted to type <byte[]>"); .withMessage("At JSON path \"$.str\", value <foo> of type <java.lang.String> cannot be converted to type <byte[]>");
} }
@Test @Test
public void valueWithDirectMatch() throws Exception { void valueWithDirectMatch() throws Exception {
new JsonPathResultMatchers("$.str").value("foo").match(stubMvcResult); new JsonPathResultMatchers("$.str").value("foo").match(stubMvcResult);
} }
@Test // gh-23219 @Test // gh-23219
public void utf8ValueWithDirectMatch() throws Exception { void utf8ValueWithDirectMatch() throws Exception {
new JsonPathResultMatchers("$.utf8Str").value("Příliš").match(stubMvcResult); new JsonPathResultMatchers("$.utf8Str").value("Příliš").match(stubMvcResult);
} }
@Test // SPR-16587 @Test // SPR-16587
public void valueWithNumberConversion() throws Exception { void valueWithNumberConversion() throws Exception {
new JsonPathResultMatchers("$.num").value(5.0f).match(stubMvcResult); new JsonPathResultMatchers("$.num").value(5.0f).match(stubMvcResult);
} }
@Test @Test
public void valueWithMatcher() throws Exception { void valueWithMatcher() throws Exception {
new JsonPathResultMatchers("$.str").value(Matchers.equalTo("foo")).match(stubMvcResult); new JsonPathResultMatchers("$.str").value(Matchers.equalTo("foo")).match(stubMvcResult);
} }
@Test // SPR-16587 @Test // SPR-16587
public void valueWithMatcherAndNumberConversion() throws Exception { void valueWithMatcherAndNumberConversion() throws Exception {
new JsonPathResultMatchers("$.num").value(Matchers.equalTo(5.0f), Float.class).match(stubMvcResult); new JsonPathResultMatchers("$.num").value(Matchers.equalTo(5.0f), Float.class).match(stubMvcResult);
} }
@Test @Test
public void valueWithMatcherAndMismatch() throws Exception { void valueWithMatcherAndMismatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.str").value(Matchers.equalTo("bogus")).match(stubMvcResult)); new JsonPathResultMatchers("$.str").value(Matchers.equalTo("bogus")).match(stubMvcResult));
} }
@Test @Test
public void exists() throws Exception { void exists() throws Exception {
new JsonPathResultMatchers("$.str").exists().match(stubMvcResult); new JsonPathResultMatchers("$.str").exists().match(stubMvcResult);
} }
@Test @Test
public void existsForAnEmptyArray() throws Exception { void existsForAnEmptyArray() throws Exception {
new JsonPathResultMatchers("$.emptyArray").exists().match(stubMvcResult); new JsonPathResultMatchers("$.emptyArray").exists().match(stubMvcResult);
} }
@Test @Test
public void existsForAnEmptyMap() throws Exception { void existsForAnEmptyMap() throws Exception {
new JsonPathResultMatchers("$.emptyMap").exists().match(stubMvcResult); new JsonPathResultMatchers("$.emptyMap").exists().match(stubMvcResult);
} }
@Test @Test
public void existsNoMatch() throws Exception { void existsNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.bogus").exists().match(stubMvcResult)); new JsonPathResultMatchers("$.bogus").exists().match(stubMvcResult));
} }
@Test @Test
public void doesNotExist() throws Exception { void doesNotExist() throws Exception {
new JsonPathResultMatchers("$.bogus").doesNotExist().match(stubMvcResult); new JsonPathResultMatchers("$.bogus").doesNotExist().match(stubMvcResult);
} }
@Test @Test
public void doesNotExistNoMatch() throws Exception { void doesNotExistNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.str").doesNotExist().match(stubMvcResult)); new JsonPathResultMatchers("$.str").doesNotExist().match(stubMvcResult));
} }
@Test @Test
public void doesNotExistForAnEmptyArray() throws Exception { void doesNotExistForAnEmptyArray() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.emptyArray").doesNotExist().match(stubMvcResult)); new JsonPathResultMatchers("$.emptyArray").doesNotExist().match(stubMvcResult));
} }
@Test @Test
public void doesNotExistForAnEmptyMap() throws Exception { void doesNotExistForAnEmptyMap() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.emptyMap").doesNotExist().match(stubMvcResult)); new JsonPathResultMatchers("$.emptyMap").doesNotExist().match(stubMvcResult));
} }
@Test @Test
public void isEmptyForAnEmptyString() throws Exception { void isEmptyForAnEmptyString() throws Exception {
new JsonPathResultMatchers("$.emptyString").isEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.emptyString").isEmpty().match(stubMvcResult);
} }
@Test @Test
public void isEmptyForAnEmptyArray() throws Exception { void isEmptyForAnEmptyArray() throws Exception {
new JsonPathResultMatchers("$.emptyArray").isEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.emptyArray").isEmpty().match(stubMvcResult);
} }
@Test @Test
public void isEmptyForAnEmptyMap() throws Exception { void isEmptyForAnEmptyMap() throws Exception {
new JsonPathResultMatchers("$.emptyMap").isEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.emptyMap").isEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForString() throws Exception { void isNotEmptyForString() throws Exception {
new JsonPathResultMatchers("$.str").isNotEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.str").isNotEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForNumber() throws Exception { void isNotEmptyForNumber() throws Exception {
new JsonPathResultMatchers("$.num").isNotEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.num").isNotEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForBoolean() throws Exception { void isNotEmptyForBoolean() throws Exception {
new JsonPathResultMatchers("$.bool").isNotEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.bool").isNotEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForArray() throws Exception { void isNotEmptyForArray() throws Exception {
new JsonPathResultMatchers("$.arr").isNotEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.arr").isNotEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForMap() throws Exception { void isNotEmptyForMap() throws Exception {
new JsonPathResultMatchers("$.colorMap").isNotEmpty().match(stubMvcResult); new JsonPathResultMatchers("$.colorMap").isNotEmpty().match(stubMvcResult);
} }
@Test @Test
public void isNotEmptyForAnEmptyString() throws Exception { void isNotEmptyForAnEmptyString() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.emptyString").isNotEmpty().match(stubMvcResult)); new JsonPathResultMatchers("$.emptyString").isNotEmpty().match(stubMvcResult));
} }
@Test @Test
public void isNotEmptyForAnEmptyArray() throws Exception { void isNotEmptyForAnEmptyArray() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.emptyArray").isNotEmpty().match(stubMvcResult)); new JsonPathResultMatchers("$.emptyArray").isNotEmpty().match(stubMvcResult));
} }
@Test @Test
public void isNotEmptyForAnEmptyMap() throws Exception { void isNotEmptyForAnEmptyMap() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.emptyMap").isNotEmpty().match(stubMvcResult)); new JsonPathResultMatchers("$.emptyMap").isNotEmpty().match(stubMvcResult));
} }
@Test @Test
public void isArray() throws Exception { void isArray() throws Exception {
new JsonPathResultMatchers("$.arr").isArray().match(stubMvcResult); new JsonPathResultMatchers("$.arr").isArray().match(stubMvcResult);
} }
@Test @Test
public void isArrayForAnEmptyArray() throws Exception { void isArrayForAnEmptyArray() throws Exception {
new JsonPathResultMatchers("$.emptyArray").isArray().match(stubMvcResult); new JsonPathResultMatchers("$.emptyArray").isArray().match(stubMvcResult);
} }
@Test @Test
public void isArrayNoMatch() throws Exception { void isArrayNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.bar").isArray().match(stubMvcResult)); new JsonPathResultMatchers("$.bar").isArray().match(stubMvcResult));
} }
@Test @Test
public void isMap() throws Exception { void isMap() throws Exception {
new JsonPathResultMatchers("$.colorMap").isMap().match(stubMvcResult); new JsonPathResultMatchers("$.colorMap").isMap().match(stubMvcResult);
} }
@Test @Test
public void isMapForAnEmptyMap() throws Exception { void isMapForAnEmptyMap() throws Exception {
new JsonPathResultMatchers("$.emptyMap").isMap().match(stubMvcResult); new JsonPathResultMatchers("$.emptyMap").isMap().match(stubMvcResult);
} }
@Test @Test
public void isMapNoMatch() throws Exception { void isMapNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.str").isMap().match(stubMvcResult)); new JsonPathResultMatchers("$.str").isMap().match(stubMvcResult));
} }
@Test @Test
public void isBoolean() throws Exception { void isBoolean() throws Exception {
new JsonPathResultMatchers("$.bool").isBoolean().match(stubMvcResult); new JsonPathResultMatchers("$.bool").isBoolean().match(stubMvcResult);
} }
@Test @Test
public void isBooleanNoMatch() throws Exception { void isBooleanNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.str").isBoolean().match(stubMvcResult)); new JsonPathResultMatchers("$.str").isBoolean().match(stubMvcResult));
} }
@Test @Test
public void isNumber() throws Exception { void isNumber() throws Exception {
new JsonPathResultMatchers("$.num").isNumber().match(stubMvcResult); new JsonPathResultMatchers("$.num").isNumber().match(stubMvcResult);
} }
@Test @Test
public void isNumberNoMatch() throws Exception { void isNumberNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.str").isNumber().match(stubMvcResult)); new JsonPathResultMatchers("$.str").isNumber().match(stubMvcResult));
} }
@Test @Test
public void isString() throws Exception { void isString() throws Exception {
new JsonPathResultMatchers("$.str").isString().match(stubMvcResult); new JsonPathResultMatchers("$.str").isString().match(stubMvcResult);
} }
@Test @Test
public void isStringNoMatch() throws Exception { void isStringNoMatch() throws Exception {
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
new JsonPathResultMatchers("$.arr").isString().match(stubMvcResult)); new JsonPathResultMatchers("$.arr").isString().match(stubMvcResult));
} }
@Test @Test
public void valueWithJsonPrefixNotConfigured() throws Exception { void valueWithJsonPrefixNotConfigured() throws Exception {
String jsonPrefix = "prefix"; String jsonPrefix = "prefix";
StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix); StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix);
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
@ -284,7 +286,7 @@ public class JsonPathResultMatchersTests {
} }
@Test @Test
public void valueWithJsonWrongPrefix() throws Exception { void valueWithJsonWrongPrefix() throws Exception {
String jsonPrefix = "prefix"; String jsonPrefix = "prefix";
StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix); StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix);
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
@ -292,17 +294,17 @@ public class JsonPathResultMatchersTests {
} }
@Test @Test
public void valueWithJsonPrefix() throws Exception { void valueWithJsonPrefix() throws Exception {
String jsonPrefix = "prefix"; String jsonPrefix = "prefix";
StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix); StubMvcResult result = createPrefixedStubMvcResult(jsonPrefix);
new JsonPathResultMatchers("$.str").prefix(jsonPrefix).value("foo").match(result); new JsonPathResultMatchers("$.str").prefix(jsonPrefix).value("foo").match(result);
} }
@Test @Test
public void prefixWithPayloadNotLongEnough() throws Exception { void prefixWithPayloadNotLongEnough() throws Exception {
MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletResponse response = new MockHttpServletResponse();
response.addHeader("Content-Type", "application/json"); response.addHeader("Content-Type", "application/json");
response.getWriter().print(new String("test".getBytes(StandardCharsets.ISO_8859_1))); response.getWriter().print(new String("test".getBytes(ISO_8859_1)));
StubMvcResult result = new StubMvcResult(null, null, null, null, null, null, response); StubMvcResult result = new StubMvcResult(null, null, null, null, null, null, response);
assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
@ -312,7 +314,7 @@ public class JsonPathResultMatchersTests {
private StubMvcResult createPrefixedStubMvcResult(String jsonPrefix) throws Exception { private StubMvcResult createPrefixedStubMvcResult(String jsonPrefix) throws Exception {
MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletResponse response = new MockHttpServletResponse();
response.addHeader("Content-Type", "application/json"); response.addHeader("Content-Type", "application/json");
response.getWriter().print(jsonPrefix + new String(RESPONSE_CONTENT.getBytes(StandardCharsets.ISO_8859_1))); response.getWriter().print(jsonPrefix + new String(RESPONSE_CONTENT.getBytes(ISO_8859_1)));
return new StubMvcResult(null, null, null, null, null, null, response); return new StubMvcResult(null, null, null, null, null, null, response);
} }

View File

@ -17,7 +17,6 @@
package org.springframework.test.web.servlet.result; package org.springframework.test.web.servlet.result;
import java.net.URI; import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -43,6 +42,8 @@ import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.FlashMap; import org.springframework.web.servlet.FlashMap;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import static java.nio.charset.StandardCharsets.UTF_16;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
@ -52,7 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen * @author Sam Brannen
* @see org.springframework.test.web.servlet.samples.standalone.resulthandlers.PrintingResultHandlerSmokeTests * @see org.springframework.test.web.servlet.samples.standalone.resulthandlers.PrintingResultHandlerSmokeTests
*/ */
public class PrintingResultHandlerTests { class PrintingResultHandlerTests {
private final TestPrintingResultHandler handler = new TestPrintingResultHandler(); private final TestPrintingResultHandler handler = new TestPrintingResultHandler();
@ -70,12 +71,12 @@ public class PrintingResultHandlerTests {
@Test @Test
public void printRequest() throws Exception { void printRequest() throws Exception {
this.request.addParameter("param", "paramValue"); this.request.addParameter("param", "paramValue");
this.request.addHeader("header", "headerValue"); this.request.addHeader("header", "headerValue");
this.request.setCharacterEncoding("UTF-16"); this.request.setCharacterEncoding("UTF-16");
String palindrome = "ablE was I ere I saw Elba"; String palindrome = "ablE was I ere I saw Elba";
byte[] bytes = palindrome.getBytes(StandardCharsets.UTF_16); byte[] bytes = palindrome.getBytes(UTF_16);
this.request.setContent(bytes); this.request.setContent(bytes);
this.request.getSession().setAttribute("foo", "bar"); this.request.getSession().setAttribute("foo", "bar");
@ -96,12 +97,12 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printRequestWithoutSession() throws Exception { void printRequestWithoutSession() throws Exception {
this.request.addParameter("param", "paramValue"); this.request.addParameter("param", "paramValue");
this.request.addHeader("header", "headerValue"); this.request.addHeader("header", "headerValue");
this.request.setCharacterEncoding("UTF-16"); this.request.setCharacterEncoding("UTF-16");
String palindrome = "ablE was I ere I saw Elba"; String palindrome = "ablE was I ere I saw Elba";
byte[] bytes = palindrome.getBytes(StandardCharsets.UTF_16); byte[] bytes = palindrome.getBytes(UTF_16);
this.request.setContent(bytes); this.request.setContent(bytes);
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
@ -120,12 +121,12 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printRequestWithEmptySessionMock() throws Exception { void printRequestWithEmptySessionMock() throws Exception {
this.request.addParameter("param", "paramValue"); this.request.addParameter("param", "paramValue");
this.request.addHeader("header", "headerValue"); this.request.addHeader("header", "headerValue");
this.request.setCharacterEncoding("UTF-16"); this.request.setCharacterEncoding("UTF-16");
String palindrome = "ablE was I ere I saw Elba"; String palindrome = "ablE was I ere I saw Elba";
byte[] bytes = palindrome.getBytes(StandardCharsets.UTF_16); byte[] bytes = palindrome.getBytes(UTF_16);
this.request.setContent(bytes); this.request.setContent(bytes);
this.request.setSession(Mockito.mock(HttpSession.class)); this.request.setSession(Mockito.mock(HttpSession.class));
@ -146,7 +147,7 @@ public class PrintingResultHandlerTests {
@Test @Test
@SuppressWarnings("removal") @SuppressWarnings("removal")
public void printResponse() throws Exception { void printResponse() throws Exception {
Cookie enigmaCookie = new Cookie("enigma", "42"); Cookie enigmaCookie = new Cookie("enigma", "42");
enigmaCookie.setHttpOnly(true); enigmaCookie.setHttpOnly(true);
enigmaCookie.setMaxAge(1234); enigmaCookie.setMaxAge(1234);
@ -203,9 +204,9 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printRequestWithCharacterEncoding() throws Exception { void printRequestWithCharacterEncoding() throws Exception {
this.request.setCharacterEncoding("UTF-8"); this.request.setCharacterEncoding("UTF-8");
this.request.setContent("text".getBytes(StandardCharsets.UTF_8)); this.request.setContent("text".getBytes(UTF_8));
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
@ -213,14 +214,14 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printRequestWithoutCharacterEncoding() throws Exception { void printRequestWithoutCharacterEncoding() throws Exception {
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
assertValue("MockHttpServletRequest", "Body", "<no character encoding set>"); assertValue("MockHttpServletRequest", "Body", "<no character encoding set>");
} }
@Test @Test
public void printResponseWithCharacterEncoding() throws Exception { void printResponseWithCharacterEncoding() throws Exception {
this.response.setCharacterEncoding("UTF-8"); this.response.setCharacterEncoding("UTF-8");
this.response.getWriter().print("text"); this.response.getWriter().print("text");
@ -229,7 +230,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printResponseWithDefaultCharacterEncoding() throws Exception { void printResponseWithDefaultCharacterEncoding() throws Exception {
this.response.getWriter().print("text"); this.response.getWriter().print("text");
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
@ -238,7 +239,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printHandlerNull() throws Exception { void printHandlerNull() throws Exception {
StubMvcResult mvcResult = new StubMvcResult(this.request, null, null, null, null, null, this.response); StubMvcResult mvcResult = new StubMvcResult(this.request, null, null, null, null, null, this.response);
this.handler.handle(mvcResult); this.handler.handle(mvcResult);
@ -246,7 +247,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printHandler() throws Exception { void printHandler() throws Exception {
this.mvcResult.setHandler(new Object()); this.mvcResult.setHandler(new Object());
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
@ -254,7 +255,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void printHandlerMethod() throws Exception { void printHandlerMethod() throws Exception {
HandlerMethod handlerMethod = new HandlerMethod(this, "handle"); HandlerMethod handlerMethod = new HandlerMethod(this, "handle");
this.mvcResult.setHandler(handlerMethod); this.mvcResult.setHandler(handlerMethod);
this.handler.handle(mvcResult); this.handler.handle(mvcResult);
@ -264,14 +265,14 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void resolvedExceptionNull() throws Exception { void resolvedExceptionNull() throws Exception {
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
assertValue("Resolved Exception", "Type", null); assertValue("Resolved Exception", "Type", null);
} }
@Test @Test
public void resolvedException() throws Exception { void resolvedException() throws Exception {
this.mvcResult.setResolvedException(new Exception()); this.mvcResult.setResolvedException(new Exception());
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
@ -279,7 +280,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void modelAndViewNull() throws Exception { void modelAndViewNull() throws Exception {
this.handler.handle(this.mvcResult); this.handler.handle(this.mvcResult);
assertValue("ModelAndView", "View name", null); assertValue("ModelAndView", "View name", null);
@ -288,7 +289,7 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void modelAndView() throws Exception { void modelAndView() throws Exception {
BindException bindException = new BindException(new Object(), "target"); BindException bindException = new BindException(new Object(), "target");
bindException.reject("errorCode"); bindException.reject("errorCode");
@ -307,14 +308,14 @@ public class PrintingResultHandlerTests {
} }
@Test @Test
public void flashMapNull() throws Exception { void flashMapNull() throws Exception {
this.handler.handle(mvcResult); this.handler.handle(mvcResult);
assertValue("FlashMap", "Type", null); assertValue("FlashMap", "Type", null);
} }
@Test @Test
public void flashMap() throws Exception { void flashMap() throws Exception {
FlashMap flashMap = new FlashMap(); FlashMap flashMap = new FlashMap();
flashMap.put("attrName", "attrValue"); flashMap.put("attrName", "attrValue");
this.request.setAttribute(DispatcherServlet.class.getName() + ".OUTPUT_FLASH_MAP", flashMap); this.request.setAttribute(DispatcherServlet.class.getName() + ".OUTPUT_FLASH_MAP", flashMap);

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -16,8 +16,6 @@
package org.springframework.test.web.servlet.samples.client.standalone.resultmatches; package org.springframework.test.web.servlet.samples.client.standalone.resultmatches;
import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@ -27,8 +25,11 @@ import org.springframework.test.web.servlet.client.MockMvcWebTestClient;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
import static org.springframework.http.MediaType.TEXT_PLAIN;
/** /**
* {@link MockMvcWebTestClient} equivalent of the MockMvc * {@link MockMvcWebTestClient} equivalent of the MockMvc
@ -36,20 +37,20 @@ import static org.hamcrest.Matchers.equalTo;
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
*/ */
public class ContentAssertionTests { class ContentAssertionTests {
private final WebTestClient testClient = private final WebTestClient testClient =
MockMvcWebTestClient.bindToController(new SimpleController()).build(); MockMvcWebTestClient.bindToController(new SimpleController()).build();
@Test @Test
public void testContentType() { void contentType() {
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN) testClient.get().uri("/handle").accept(TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectHeader().contentType(MediaType.valueOf("text/plain;charset=ISO-8859-1")) .expectHeader().contentType(MediaType.valueOf("text/plain;charset=ISO-8859-1"))
.expectHeader().contentType("text/plain;charset=ISO-8859-1") .expectHeader().contentType("text/plain;charset=ISO-8859-1")
.expectHeader().contentTypeCompatibleWith("text/plain") .expectHeader().contentTypeCompatibleWith("text/plain")
.expectHeader().contentTypeCompatibleWith(MediaType.TEXT_PLAIN); .expectHeader().contentTypeCompatibleWith(TEXT_PLAIN);
testClient.get().uri("/handleUtf8") testClient.get().uri("/handleUtf8")
.exchange() .exchange()
@ -57,24 +58,23 @@ public class ContentAssertionTests {
.expectHeader().contentType(MediaType.valueOf("text/plain;charset=UTF-8")) .expectHeader().contentType(MediaType.valueOf("text/plain;charset=UTF-8"))
.expectHeader().contentType("text/plain;charset=UTF-8") .expectHeader().contentType("text/plain;charset=UTF-8")
.expectHeader().contentTypeCompatibleWith("text/plain") .expectHeader().contentTypeCompatibleWith("text/plain")
.expectHeader().contentTypeCompatibleWith(MediaType.TEXT_PLAIN); .expectHeader().contentTypeCompatibleWith(TEXT_PLAIN);
} }
@Test @Test
public void testContentAsString() { void contentAsString() {
testClient.get().uri("/handle").accept(TEXT_PLAIN)
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(String.class).isEqualTo("Hello world!"); .expectBody(String.class).isEqualTo("Hello world!");
testClient.get().uri("/handleUtf8").accept(MediaType.TEXT_PLAIN) testClient.get().uri("/handleUtf8").accept(TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(String.class).isEqualTo("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01"); .expectBody(String.class).isEqualTo("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01");
// Hamcrest matchers... // Hamcrest matchers...
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN) testClient.get().uri("/handle").accept(TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(String.class).value(equalTo("Hello world!")); .expectBody(String.class).value(equalTo("Hello world!"));
@ -85,33 +85,31 @@ public class ContentAssertionTests {
} }
@Test @Test
public void testContentAsBytes() { void contentAsBytes() {
testClient.get().uri("/handle").accept(TEXT_PLAIN)
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(byte[].class).isEqualTo( .expectBody(byte[].class).isEqualTo(
"Hello world!".getBytes(StandardCharsets.ISO_8859_1)); "Hello world!".getBytes(ISO_8859_1));
testClient.get().uri("/handleUtf8") testClient.get().uri("/handleUtf8")
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(byte[].class).isEqualTo( .expectBody(byte[].class).isEqualTo(
"\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01".getBytes(StandardCharsets.UTF_8)); "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01".getBytes(UTF_8));
} }
@Test @Test
public void testContentStringMatcher() { void contentStringMatcher() {
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN) testClient.get().uri("/handle").accept(TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectBody(String.class).value(containsString("world")); .expectBody(String.class).value(containsString("world"));
} }
@Test @Test
public void testCharacterEncoding() { void characterEncoding() {
testClient.get().uri("/handle").accept(TEXT_PLAIN)
testClient.get().uri("/handle").accept(MediaType.TEXT_PLAIN)
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.expectHeader().contentType("text/plain;charset=ISO-8859-1") .expectHeader().contentType("text/plain;charset=ISO-8859-1")
@ -122,22 +120,22 @@ public class ContentAssertionTests {
.expectStatus().isOk() .expectStatus().isOk()
.expectHeader().contentType("text/plain;charset=UTF-8") .expectHeader().contentType("text/plain;charset=UTF-8")
.expectBody(byte[].class) .expectBody(byte[].class)
.isEqualTo("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01".getBytes(StandardCharsets.UTF_8)); .isEqualTo("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01".getBytes(UTF_8));
} }
@Controller @Controller
private static class SimpleController { private static class SimpleController {
@RequestMapping(value="/handle", produces="text/plain") @RequestMapping(path="/handle", produces="text/plain")
@ResponseBody @ResponseBody
public String handle() { String handle() {
return "Hello world!"; return "Hello world!";
} }
@RequestMapping(value="/handleUtf8", produces="text/plain;charset=UTF-8") @RequestMapping(path="/handleUtf8", produces="text/plain;charset=UTF-8")
@ResponseBody @ResponseBody
public String handleWithCharset() { String handleWithCharset() {
return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01"; // "Hello world! (Japanese) return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01"; // "Hello world! (Japanese)
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -155,13 +155,9 @@ public class XpathAssertionTests {
.andExpect(xpath("/ns:people/performers/performer", musicNamespace).nodeCount(equalTo(2))); .andExpect(xpath("/ns:people/performers/performer", musicNamespace).nodeCount(equalTo(2)));
} }
// SPR-10704
@Test @Test // SPR-10704
public void testFeedWithLinefeedChars() throws Exception { public void testFeedWithLinefeedChars() throws Exception {
// Map<String, String> namespace = Collections.singletonMap("ns", "");
standaloneSetup(new BlogFeedController()).build() standaloneSetup(new BlogFeedController()).build()
.perform(get("/blog.atom").accept(MediaType.APPLICATION_ATOM_XML)) .perform(get("/blog.atom").accept(MediaType.APPLICATION_ATOM_XML))
.andExpect(status().isOk()) .andExpect(status().isOk())