Browse Source

Merge branch '6.2.x'

pull/34429/head
Sébastien Deleuze 10 months ago
parent
commit
3956a36837
  1. 15
      spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt
  2. 57
      spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt

15
spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2024 the original author or authors.
* Copyright 2002-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -129,6 +129,18 @@ open class MockHttpServletRequestDsl(private val builder: AbstractMockHttpServle @@ -129,6 +129,18 @@ open class MockHttpServletRequestDsl(private val builder: AbstractMockHttpServle
*/
var queryParams: MultiValueMap<String, String>? = null
/**
* @see [MockHttpServletRequestBuilder.formField]
*/
fun formField(name: String, vararg values: String) {
builder.formField(name, *values)
}
/**
* @see [MockHttpServletRequestBuilder.formFields]
*/
var formFields: MultiValueMap<String, String>? = null
/**
* @see [MockHttpServletRequestBuilder.cookie]
*/
@ -215,6 +227,7 @@ open class MockHttpServletRequestDsl(private val builder: AbstractMockHttpServle @@ -215,6 +227,7 @@ open class MockHttpServletRequestDsl(private val builder: AbstractMockHttpServle
contentType?.also { builder.contentType(it) }
params?.also { builder.params(it) }
queryParams?.also { builder.queryParams(it) }
formFields?.also { builder.formFields(it) }
sessionAttrs?.also { builder.sessionAttrs(it) }
flashAttrs?.also { builder.flashAttrs(it) }
session?.also { builder.session(it) }

57
spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2024 the original author or authors.
* Copyright 2002-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -23,6 +23,7 @@ import org.hamcrest.CoreMatchers @@ -23,6 +23,7 @@ import org.hamcrest.CoreMatchers
import org.junit.jupiter.api.Test
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE
import org.springframework.http.MediaType.APPLICATION_ATOM_XML
import org.springframework.http.MediaType.APPLICATION_JSON
import org.springframework.http.MediaType.APPLICATION_XML
@ -30,6 +31,7 @@ import org.springframework.http.MediaType.TEXT_PLAIN @@ -30,6 +31,7 @@ import org.springframework.http.MediaType.TEXT_PLAIN
import org.springframework.test.json.JsonCompareMode
import org.springframework.test.web.Person
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.springframework.util.LinkedMultiValueMap
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
@ -221,15 +223,62 @@ class MockMvcExtensionsTests { @@ -221,15 +223,62 @@ class MockMvcExtensionsTests {
}
@Test
fun queryParameter() {
fun queryParam() {
val result = mockMvc.get("/") {
queryParam("foo", "bar")
queryParam("foo", "baz")
queryParam("foo", "bar", "baz")
}.andReturn()
assertThat(result.request.parameterMap["foo"]).containsExactly("bar", "baz")
assertThat(result.request.queryString).isEqualTo("foo=bar&foo=baz")
}
@Test
fun queryParams() {
val result = mockMvc.get("/") {
queryParams = LinkedMultiValueMap(mapOf("foo" to listOf("bar", "baz")))
}.andReturn()
assertThat(result.request.parameterMap["foo"]).containsExactly("bar", "baz")
assertThat(result.request.queryString).isEqualTo("foo=bar&foo=baz")
}
@Test
fun formField() {
val result = mockMvc.post("/person") {
formField("name", "foo", "bar")
formField("someDouble", "1.23")
}.andReturn()
assertThat(result.request.contentType).startsWith(APPLICATION_FORM_URLENCODED_VALUE)
assertThat(result.request.contentAsString).isEqualTo("name=foo&name=bar&someDouble=1.23")
}
@Test
fun formFields() {
val result = mockMvc.post("/person") {
formFields = LinkedMultiValueMap(mapOf("name" to listOf("foo", "bar"), "someDouble" to listOf("1.23")))
}.andReturn()
assertThat(result.request.contentType).startsWith(APPLICATION_FORM_URLENCODED_VALUE)
assertThat(result.request.contentAsString).isEqualTo("name=foo&name=bar&someDouble=1.23")
}
@Test
fun sessionAttr() {
val result = mockMvc.post("/person") {
sessionAttr("name", "foo")
sessionAttr("someDouble", 1.23)
}.andReturn()
val session = result.request.session!!
assertThat(session.getAttribute("name")).isEqualTo("foo")
assertThat(session.getAttribute("someDouble")).isEqualTo(1.23)
}
@Test
fun sessionAttrs() {
val result = mockMvc.post("/person") {
sessionAttrs = mapOf("name" to "foo", "someDouble" to 1.23)
}.andReturn()
val session = result.request.session!!
assertThat(session.getAttribute("name")).isEqualTo("foo")
assertThat(session.getAttribute("someDouble")).isEqualTo(1.23)
}
@RestController
private class PersonController {

Loading…
Cancel
Save