Fix MockHttpServletRequest.setCookies to produce single cookie header
Prior to this commit, MockHttpServletRequest.setCookies() produced one
Cookie header per supplied cookie, resulting in multiple Cookie headers
which violates the specification.
This commit fixes this by ensuring that all cookie name-value pairs are
stored under a single Cookie header, separated by a semicolon.
Closes gh-23074
pull/25598/head
Ilya Lukyanovich7 years agocommitted bySam Brannen
@ -951,14 +953,20 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -951,14 +953,20 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -1272,6 +1280,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1272,6 +1280,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*Otherwiseitsimplyreturnsthecurrentsessionid.
*@since4.0.3
*/
@Override
publicStringchangeSessionId(){
Assert.isTrue(this.session!=null,"The request does not have a session");
@ -168,10 +171,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -168,10 +171,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -205,6 +211,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -205,6 +211,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -214,32 +221,42 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -214,32 +221,42 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -273,7 +290,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -273,7 +290,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -283,7 +300,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -283,7 +300,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -300,7 +317,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -300,7 +317,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -369,12 +386,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -369,12 +386,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -399,7 +417,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -399,7 +417,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*@see#getContentAsByteArray()
*@see#getContentAsString()
*/
publicvoidsetContent(byte[]content){
publicvoidsetContent(@Nullablebyte[]content){
this.content=content;
}
@ -410,6 +428,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -410,6 +428,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*@see#setContent(byte[])
*@see#getContentAsString()
*/
@Nullable
publicbyte[]getContentAsByteArray(){
returnthis.content;
}
@ -425,6 +444,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -425,6 +444,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
"Cannot get content as a String for a null character encoding. "+
@ -446,7 +466,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -446,7 +466,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -467,6 +487,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -467,6 +487,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
@Override
@Nullable
publicStringgetContentType(){
returnthis.contentType;
}
@ -507,8 +528,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -507,8 +528,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*/
publicvoidsetParameters(Map<String,?>params){
Assert.notNull(params,"Parameter map must not be null");
for(Stringkey:params.keySet()){
Objectvalue=params.get(key);
params.forEach((key,value)->{
if(valueinstanceofString){
setParameter(key,(String)value);
}
@ -519,7 +539,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -519,7 +539,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
thrownewIllegalArgumentException(
"Parameter map value must be single value "+" or array of type ["+String.class.getName()+"]");
}
}
});
}
/**
@ -527,7 +547,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -527,7 +547,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -557,8 +577,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -557,8 +577,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*/
publicvoidaddParameters(Map<String,?>params){
Assert.notNull(params,"Parameter map must not be null");
for(Stringkey:params.keySet()){
Objectvalue=params.get(key);
params.forEach((key,value)->{
if(valueinstanceofString){
addParameter(key,(String)value);
}
@ -569,7 +588,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -569,7 +588,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
thrownewIllegalArgumentException("Parameter map value must be single value "+
" or array of type ["+String.class.getName()+"]");
}
}
});
}
/**
@ -588,6 +607,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -588,6 +607,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
@Override
@Nullable
publicStringgetParameter(Stringname){
Assert.notNull(name,"Parameter name must not be null");
String[]arr=this.parameters.get(name);
@ -708,7 +728,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -708,7 +728,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
Assert.notNull(name,"Attribute name must not be null");
if(value!=null){
@ -872,7 +892,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -872,7 +892,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -897,11 +917,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -897,11 +917,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -920,26 +941,34 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -920,26 +941,34 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -983,7 +1012,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -983,7 +1012,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
Assert.notNull(value,"Header value must not be null");
if(header==null||replace){
@ -1059,6 +1088,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1059,6 +1088,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -1093,25 +1123,28 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1093,25 +1123,28 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -1125,20 +1158,22 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1125,20 +1158,22 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -1153,29 +1188,32 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1153,29 +1188,32 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -1216,6 +1254,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1216,6 +1254,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
@Override
@Nullable
publicHttpSessiongetSession(booleancreate){
checkActive();
// Reset session if invalidated.
@ -1230,6 +1269,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1230,6 +1269,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
@Override
@Nullable
publicHttpSessiongetSession(){
returngetSession(true);
}
@ -1240,6 +1280,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1240,6 +1280,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
*Otherwiseitsimplyreturnsthecurrentsessionid.
*@since4.0.3
*/
@Override
publicStringchangeSessionId(){
Assert.isTrue(this.session!=null,"The request does not have a session");
if(this.sessioninstanceofMockHttpSession){
@ -1303,6 +1344,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -1303,6 +1344,7 @@ public class MockHttpServletRequest implements HttpServletRequest {