@@ -21,10 +21,13 @@ class TestNSURLResponse : XCTestCase {
21
21
static var allTests : [ ( String , TestNSURLResponse -> ( ) throws -> Void ) ] {
22
22
return [
23
23
( " test_URL " , test_URL) ,
24
- ( " test_MIMEType " , test_MIMEType) ,
24
+ ( " test_MIMEType_1 " , test_MIMEType_1) ,
25
+ ( " test_MIMEType_2 " , test_MIMEType_2) ,
25
26
( " test_ExpectedContentLength " , test_ExpectedContentLength) ,
26
27
( " test_TextEncodingName " , test_TextEncodingName) ,
27
28
( " test_suggestedFilename " , test_suggestedFilename) ,
29
+ ( " test_suggestedFilename_2 " , test_suggestedFilename_2) ,
30
+ ( " test_suggestedFilename_3 " , test_suggestedFilename_3) ,
28
31
]
29
32
}
30
33
@@ -34,15 +37,18 @@ class TestNSURLResponse : XCTestCase {
34
37
XCTAssertEqual ( res. URL, url, " should be the expected url " )
35
38
}
36
39
37
- func test_MIMEType( ) {
38
- let mimetype1 = " text/plain "
39
- let mimetype2 = " application/wordperfect "
40
- let res1 = NSURLResponse ( URL: NSURL ( string: " test " ) !, MIMEType: mimetype1, expectedContentLength: 0 , textEncodingName: nil )
41
- XCTAssertEqual ( res1. MIMEType, mimetype1, " should be the passed in mimetype " )
42
- let res2 = NSURLResponse ( URL: NSURL ( string: " test " ) !, MIMEType: mimetype2, expectedContentLength: 0 , textEncodingName: nil )
43
- XCTAssertEqual ( res2. MIMEType, mimetype2, " should be the other mimetype " )
40
+ func test_MIMEType_1( ) {
41
+ let mimetype = " text/plain "
42
+ let res = NSURLResponse ( URL: NSURL ( string: " test " ) !, MIMEType: mimetype, expectedContentLength: 0 , textEncodingName: nil )
43
+ XCTAssertEqual ( res. MIMEType, mimetype, " should be the passed in mimetype " )
44
44
}
45
45
46
+ func test_MIMEType_2( ) {
47
+ let mimetype = " APPlication/wordperFECT "
48
+ let res = NSURLResponse ( URL: NSURL ( string: " test " ) !, MIMEType: mimetype, expectedContentLength: 0 , textEncodingName: nil )
49
+ XCTAssertEqual ( res. MIMEType, mimetype, " should be the other mimetype " )
50
+ }
51
+
46
52
func test_ExpectedContentLength( ) {
47
53
let zeroContentLength = 0
48
54
let positiveContentLength = 100
@@ -63,9 +69,21 @@ class TestNSURLResponse : XCTestCase {
63
69
}
64
70
65
71
func test_suggestedFilename( ) {
66
- let url = NSURL ( string: " a/test/path " ) !
72
+ let url = NSURL ( string: " a/test/name.extension " ) !
73
+ let res = NSURLResponse ( URL: url, MIMEType: " txt " , expectedContentLength: 0 , textEncodingName: nil )
74
+ XCTAssertEqual ( res. suggestedFilename, " name.extension " )
75
+ }
76
+
77
+ func test_suggestedFilename_2( ) {
78
+ let url = NSURL ( string: " a/test/name.extension?foo=bar " ) !
67
79
let res = NSURLResponse ( URL: url, MIMEType: " txt " , expectedContentLength: 0 , textEncodingName: nil )
68
- XCTAssertNil ( res. suggestedFilename)
80
+ XCTAssertEqual ( res. suggestedFilename, " name.extension " )
81
+ }
82
+
83
+ func test_suggestedFilename_3( ) {
84
+ let url = NSURL ( string: " a://bar " ) !
85
+ let res = NSURLResponse ( URL: url, MIMEType: " txt " , expectedContentLength: 0 , textEncodingName: nil )
86
+ XCTAssertEqual ( res. suggestedFilename, " Unknown " )
69
87
}
70
88
}
71
89
@@ -84,20 +102,20 @@ class TestNSHTTPURLResponse : XCTestCase {
84
102
( " test_contentLength_available_2 " , test_contentLength_available_2) ,
85
103
( " test_contentLength_available_3 " , test_contentLength_available_3) ,
86
104
( " test_contentLength_available_4 " , test_contentLength_available_4) ,
87
- ( " test_contentLength_notAvailable_1 " , test_contentLength_notAvailable_1 ) ,
88
- ( " test_contentLength_notAvailable_2 " , test_contentLength_notAvailable_2 ) ,
89
- ( " test_contentLength_notAvailable_3 " , test_contentLength_notAvailable_3 ) ,
90
- ( " test_contentLength_notAvailable_4 " , test_contentLength_notAvailable_4 ) ,
91
- ( " test_contentLength_notAvailable_5 " , test_contentLength_notAvailable_5 ) ,
105
+ ( " test_contentLength_notAvailable " , test_contentLength_notAvailable ) ,
106
+ ( " test_contentLength_withTransferEncoding " , test_contentLength_withTransferEncoding ) ,
107
+ ( " test_contentLength_withContentEncoding " , test_contentLength_withContentEncoding ) ,
108
+ ( " test_contentLength_withContentEncodingAndTransferEncoding " , test_contentLength_withContentEncodingAndTransferEncoding ) ,
109
+ ( " test_contentLength_withContentEncodingAndTransferEncoding_2 " , test_contentLength_withContentEncodingAndTransferEncoding_2 ) ,
92
110
93
111
( " test_suggestedFilename_notAvailable_1 " , test_suggestedFilename_notAvailable_1) ,
94
112
( " test_suggestedFilename_notAvailable_2 " , test_suggestedFilename_notAvailable_2) ,
95
113
( " test_suggestedFilename_1 " , test_suggestedFilename_1) ,
96
114
( " test_suggestedFilename_2 " , test_suggestedFilename_2) ,
97
115
( " test_suggestedFilename_3 " , test_suggestedFilename_3) ,
98
116
( " test_suggestedFilename_4 " , test_suggestedFilename_4) ,
99
- ( " test_suggestedFilename_onlyTheLastPathComponent_1 " , test_suggestedFilename_onlyTheLastPathComponent_1 ) ,
100
- ( " test_suggestedFilename_onlyTheLastPathComponent_2 " , test_suggestedFilename_onlyTheLastPathComponent_2 ) ,
117
+ ( " test_suggestedFilename_removeSlashes_1 " , test_suggestedFilename_removeSlashes_1 ) ,
118
+ ( " test_suggestedFilename_removeSlashes_2 " , test_suggestedFilename_removeSlashes_2 ) ,
101
119
102
120
( " test_MIMETypeAndCharacterEncoding_1 " , test_MIMETypeAndCharacterEncoding_1) ,
103
121
( " test_MIMETypeAndCharacterEncoding_2 " , test_MIMETypeAndCharacterEncoding_2) ,
@@ -164,30 +182,30 @@ class TestNSHTTPURLResponse : XCTestCase {
164
182
XCTAssertEqual ( sut? . expectedContentLength, 997 )
165
183
}
166
184
167
- func test_contentLength_notAvailable_1 ( ) {
185
+ func test_contentLength_notAvailable ( ) {
168
186
let f = [ " Server " : " Apache " ]
169
187
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
170
188
XCTAssertEqual ( sut? . expectedContentLength, - 1 )
171
189
}
172
- func test_contentLength_notAvailable_2 ( ) {
190
+ func test_contentLength_withTransferEncoding ( ) {
173
191
let f = [ " Content-Length " : " 997 " , " Transfer-Encoding " : " chunked " ]
174
192
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
175
- XCTAssertEqual ( sut? . expectedContentLength, - 1 )
193
+ XCTAssertEqual ( sut? . expectedContentLength, 997 )
176
194
}
177
- func test_contentLength_notAvailable_3 ( ) {
195
+ func test_contentLength_withContentEncoding ( ) {
178
196
let f = [ " Content-Length " : " 997 " , " Content-Encoding " : " deflate " ]
179
197
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
180
- XCTAssertEqual ( sut? . expectedContentLength, - 1 )
198
+ XCTAssertEqual ( sut? . expectedContentLength, 997 )
181
199
}
182
- func test_contentLength_notAvailable_4 ( ) {
200
+ func test_contentLength_withContentEncodingAndTransferEncoding ( ) {
183
201
let f = [ " Content-Length " : " 997 " , " Content-Encoding " : " deflate " , " Transfer-Encoding " : " identity " ]
184
202
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
185
- XCTAssertEqual ( sut? . expectedContentLength, - 1 )
203
+ XCTAssertEqual ( sut? . expectedContentLength, 997 )
186
204
}
187
- func test_contentLength_notAvailable_5 ( ) {
205
+ func test_contentLength_withContentEncodingAndTransferEncoding_2 ( ) {
188
206
let f = [ " Content-Length " : " 997 " , " Content-Encoding " : " identity " , " Transfer-Encoding " : " chunked " ]
189
207
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
190
- XCTAssertEqual ( sut? . expectedContentLength, - 1 )
208
+ XCTAssertEqual ( sut? . expectedContentLength, 997 )
191
209
}
192
210
193
211
// The `suggestedFilename` can be derived from the "Content-Disposition"
@@ -206,12 +224,12 @@ class TestNSHTTPURLResponse : XCTestCase {
206
224
func test_suggestedFilename_notAvailable_1( ) {
207
225
let f : [ String : String ] = [ : ]
208
226
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
209
- XCTAssertNil ( sut? . suggestedFilename)
227
+ XCTAssertEqual ( sut? . suggestedFilename, " Unknown " )
210
228
}
211
229
func test_suggestedFilename_notAvailable_2( ) {
212
230
let f = [ " Content-Disposition " : " inline " ]
213
231
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
214
- XCTAssertNil ( sut? . suggestedFilename)
232
+ XCTAssertEqual ( sut? . suggestedFilename, " Unknown " )
215
233
}
216
234
217
235
func test_suggestedFilename_1( ) {
@@ -234,15 +252,15 @@ class TestNSHTTPURLResponse : XCTestCase {
234
252
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
235
253
XCTAssertEqual ( sut? . suggestedFilename, " fname.ext " )
236
254
}
237
- func test_suggestedFilename_onlyTheLastPathComponent_1 ( ) {
255
+ func test_suggestedFilename_removeSlashes_1 ( ) {
238
256
let f = [ " Content-Disposition " : " attachment; filename= \" /a/b/name \" " ]
239
257
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
240
- XCTAssertEqual ( sut? . suggestedFilename, " name " )
258
+ XCTAssertEqual ( sut? . suggestedFilename, " _a_b_name " )
241
259
}
242
- func test_suggestedFilename_onlyTheLastPathComponent_2 ( ) {
260
+ func test_suggestedFilename_removeSlashes_2 ( ) {
243
261
let f = [ " Content-Disposition " : " attachment; filename= \" a/../b/name \" " ]
244
262
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
245
- XCTAssertEqual ( sut? . suggestedFilename, " name " )
263
+ XCTAssertEqual ( sut? . suggestedFilename, " a_.._b_name " )
246
264
}
247
265
248
266
// The MIME type / character encoding
@@ -260,9 +278,9 @@ class TestNSHTTPURLResponse : XCTestCase {
260
278
XCTAssertNil ( sut? . textEncodingName)
261
279
}
262
280
func test_MIMETypeAndCharacterEncoding_3( ) {
263
- let f = [ " Content-Type " : " text/html ; charset=ISO-8859-4 " ]
281
+ let f = [ " Content-Type " : " text/HTML ; charset=ISO-8859-4 " ]
264
282
let sut = NSHTTPURLResponse ( URL: url, statusCode: 200 , HTTPVersion: " HTTP/1.1 " , headerFields: f)
265
283
XCTAssertEqual ( sut? . MIMEType, " text/html " )
266
- XCTAssertEqual ( sut? . textEncodingName, " ISO -8859-4" )
284
+ XCTAssertEqual ( sut? . textEncodingName, " iso -8859-4" )
267
285
}
268
286
}
0 commit comments