1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.mock.web.test;
18
19 import java.util.Collections;
20 import java.util.Enumeration;
21 import java.util.Iterator;
22 import java.util.List;
23 import java.util.Map;
24 import javax.servlet.ServletContext;
25
26 import org.springframework.http.HttpHeaders;
27 import org.springframework.http.HttpMethod;
28 import org.springframework.util.Assert;
29 import org.springframework.util.LinkedMultiValueMap;
30 import org.springframework.util.MultiValueMap;
31 import org.springframework.web.multipart.MultipartFile;
32 import org.springframework.web.multipart.MultipartHttpServletRequest;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class MockMultipartHttpServletRequest extends MockHttpServletRequest implements MultipartHttpServletRequest {
51
52 private final MultiValueMap<String, MultipartFile> multipartFiles =
53 new LinkedMultiValueMap<String, MultipartFile>();
54
55
56
57
58
59
60
61 public MockMultipartHttpServletRequest() {
62 this(null);
63 }
64
65
66
67
68
69
70 public MockMultipartHttpServletRequest(ServletContext servletContext) {
71 super(servletContext);
72 setMethod("POST");
73 setContentType("multipart/form-data");
74 }
75
76
77
78
79
80
81
82 public void addFile(MultipartFile file) {
83 Assert.notNull(file, "MultipartFile must not be null");
84 this.multipartFiles.add(file.getName(), file);
85 }
86
87 @Override
88 public Iterator<String> getFileNames() {
89 return this.multipartFiles.keySet().iterator();
90 }
91
92 @Override
93 public MultipartFile getFile(String name) {
94 return this.multipartFiles.getFirst(name);
95 }
96
97 @Override
98 public List<MultipartFile> getFiles(String name) {
99 List<MultipartFile> multipartFiles = this.multipartFiles.get(name);
100 if (multipartFiles != null) {
101 return multipartFiles;
102 }
103 else {
104 return Collections.emptyList();
105 }
106 }
107
108 @Override
109 public Map<String, MultipartFile> getFileMap() {
110 return this.multipartFiles.toSingleValueMap();
111 }
112
113 @Override
114 public MultiValueMap<String, MultipartFile> getMultiFileMap() {
115 return new LinkedMultiValueMap<String, MultipartFile>(this.multipartFiles);
116 }
117
118 @Override
119 public String getMultipartContentType(String paramOrFileName) {
120 MultipartFile file = getFile(paramOrFileName);
121 if (file != null) {
122 return file.getContentType();
123 }
124 else {
125 return null;
126 }
127 }
128
129 @Override
130 public HttpMethod getRequestMethod() {
131 return HttpMethod.valueOf(getMethod());
132 }
133
134 @Override
135 public HttpHeaders getRequestHeaders() {
136 HttpHeaders headers = new HttpHeaders();
137 Enumeration<String> headerNames = getHeaderNames();
138 while (headerNames.hasMoreElements()) {
139 String headerName = headerNames.nextElement();
140 headers.put(headerName, Collections.list(getHeaders(headerName)));
141 }
142 return headers;
143 }
144
145 @Override
146 public HttpHeaders getMultipartHeaders(String paramOrFileName) {
147 String contentType = getMultipartContentType(paramOrFileName);
148 if (contentType != null) {
149 HttpHeaders headers = new HttpHeaders();
150 headers.add("Content-Type", contentType);
151 return headers;
152 }
153 else {
154 return null;
155 }
156 }
157
158 }