Skip to content

Commit 3c416cc

Browse files
committed
Remove support for streaming content for non-breaking release
1 parent 881b6e5 commit 3c416cc

File tree

7 files changed

+132
-149
lines changed

7 files changed

+132
-149
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Mockingjay Changelog
2-
## Master
2+
3+
## Future
34
### Breaking
45

56
- Responses now use a `Download` enum instead of an optional `NSData`. This

Mockingjay/Builders.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public func failure(error:NSError) -> (request:NSURLRequest) -> Response {
1515
return { _ in return .Failure(error) }
1616
}
1717

18-
public func http(status:Int = 200, headers:[String:String]? = nil, download:Download=nil) -> (request:NSURLRequest) -> Response {
18+
public func http(status:Int = 200, headers:[String:String]? = nil, data:NSData? = nil) -> (request:NSURLRequest) -> Response {
1919
return { (request:NSURLRequest) in
2020
if let response = NSHTTPURLResponse(URL: request.URL!, statusCode: status, HTTPVersion: nil, headerFields: headers) {
21-
return Response.Success(response, download)
21+
return Response.Success(response, data)
2222
}
2323

2424
return .Failure(NSError(domain: NSInternalInconsistencyException, code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to construct response for stub."]))
@@ -43,6 +43,6 @@ public func jsonData(data: NSData, status: Int = 200, headers: [String:String]?
4343
headers["Content-Type"] = "application/json; charset=utf-8"
4444
}
4545

46-
return http(status, headers: headers, download: .Content(data))(request:request)
46+
return http(status, headers: headers, data: data)(request:request)
4747
}
4848
}

Mockingjay/Mockingjay.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public func ==(lhs:Download, rhs:Download) -> Bool {
3535
}
3636

3737
public enum Response : Equatable {
38-
case Success(NSURLResponse, Download)
38+
case Success(NSURLResponse, NSData?)
3939
case Failure(NSError)
4040
}
4141

Mockingjay/MockingjayProtocol.swift

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -91,22 +91,14 @@ public class MockingjayProtocol : NSURLProtocol {
9191
switch stub.builder(request) {
9292
case .Failure(let error):
9393
client?.URLProtocol(self, didFailWithError: error)
94-
case .Success(var response, let download):
95-
let headers = self.request.allHTTPHeaderFields
96-
97-
switch(download) {
98-
case .Content(var data):
99-
applyRangeFromHTTPHeaders(headers, toData: &data, andUpdateResponse: &response)
94+
case .Success(let response, let data):
95+
client?.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
96+
97+
if let data = data {
10098
client?.URLProtocol(self, didLoadData: data)
101-
client?.URLProtocolDidFinishLoading(self)
102-
case .StreamContent(data: var data, inChunksOf: let bytes):
103-
applyRangeFromHTTPHeaders(headers, toData: &data, andUpdateResponse: &response)
104-
self.download(data, inChunksOfBytes: bytes)
105-
return
106-
case .NoContent:
107-
client?.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
108-
client?.URLProtocolDidFinishLoading(self)
10999
}
100+
101+
client?.URLProtocolDidFinishLoading(self)
110102
}
111103
} else {
112104
let error = NSError(domain: NSInternalInconsistencyException, code: 0, userInfo: [ NSLocalizedDescriptionKey: "Handling request without a matching stub." ])
@@ -197,4 +189,4 @@ extension NSRange {
197189
let endLoc = self.location + self.length - 1
198190
return "bytes " + String(self.location) + "-" + String(endLoc) + "/" + String(fullLength)
199191
}
200-
}
192+
}

MockingjayTests/BuildersTests.swift

Lines changed: 34 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -38,42 +38,37 @@ class FailureBuilderTests : XCTestCase {
3838
XCTFail("Test Failure")
3939
}
4040
}
41-
42-
func testHTTPDownloadStream() {
43-
let request = NSURLRequest(URL: NSURL(string: "http://test.com/")!)
44-
let response = http(download: .StreamContent(data: NSData(), inChunksOf: 1024))(request: request)
45-
46-
switch response {
47-
case let .Success(_, download):
48-
switch download {
49-
case let .StreamContent(data: _, inChunksOf: bytes):
50-
XCTAssertEqual(bytes, 1024)
51-
default:
52-
XCTFail("Test Failure")
53-
}
54-
case let .Failure(error):
55-
XCTFail("Test Failure: " + error.debugDescription)
56-
}
57-
}
58-
41+
42+
// func testHTTPDownloadStream() {
43+
// let request = NSURLRequest(URL: NSURL(string: "http://test.com/")!)
44+
// let response = http(download: .StreamContent(data: NSData(), inChunksOf: 1024))(request: request)
45+
//
46+
// switch response {
47+
// case let .Success(_, download):
48+
// switch download {
49+
// case let .StreamContent(data: _, inChunksOf: bytes):
50+
// XCTAssertEqual(bytes, 1024)
51+
// default:
52+
// XCTFail("Test Failure")
53+
// }
54+
// case let .Failure(error):
55+
// XCTFail("Test Failure: " + error.debugDescription)
56+
// }
57+
// }
58+
5959
func testJSON() {
6060
let request = NSURLRequest(URL: NSURL(string: "http://test.com/")!)
6161
let response = json(["A"])(request: request)
6262

6363
switch response {
64-
case let .Success(response, download):
65-
switch download {
66-
case .Content(let data):
67-
if let response = response as? NSHTTPURLResponse {
68-
XCTAssertEqual(response.statusCode, 200)
69-
XCTAssertEqual(response.MIMEType!, "application/json")
70-
XCTAssertEqual(response.textEncodingName!, "utf-8")
71-
let body = NSString(data:data, encoding:NSUTF8StringEncoding) as! String
72-
XCTAssertEqual(body, "[\"A\"]")
73-
} else {
74-
XCTFail("Test Failure")
75-
}
76-
default:
64+
case let .Success(response, data):
65+
if let response = response as? NSHTTPURLResponse {
66+
XCTAssertEqual(response.statusCode, 200)
67+
XCTAssertEqual(response.MIMEType!, "application/json")
68+
XCTAssertEqual(response.textEncodingName!, "utf-8")
69+
let body = NSString(data: data!, encoding:NSUTF8StringEncoding) as! String
70+
XCTAssertEqual(body, "[\"A\"]")
71+
} else {
7772
XCTFail("Test Failure")
7873
}
7974
default:
@@ -89,21 +84,16 @@ class FailureBuilderTests : XCTestCase {
8984
let response = jsonData(data)(request: request)
9085

9186
switch response {
92-
case let .Success(response, download):
93-
switch download {
94-
case .Content(let data):
95-
guard let response = response as? NSHTTPURLResponse else {
96-
XCTFail("Test Failure")
97-
return
98-
}
99-
XCTAssertEqual(response.statusCode, 200)
100-
XCTAssertEqual(response.MIMEType!, "application/json")
101-
XCTAssertEqual(response.textEncodingName!, "utf-8")
102-
let body = NSString(data:data, encoding:NSUTF8StringEncoding) as! String
103-
XCTAssertEqual(body, "[\"B\"]")
104-
default:
87+
case let .Success(response, data):
88+
guard let response = response as? NSHTTPURLResponse else {
10589
XCTFail("Test Failure")
90+
return
10691
}
92+
XCTAssertEqual(response.statusCode, 200)
93+
XCTAssertEqual(response.MIMEType!, "application/json")
94+
XCTAssertEqual(response.textEncodingName!, "utf-8")
95+
let body = NSString(data:data!, encoding:NSUTF8StringEncoding) as! String
96+
XCTAssertEqual(body, "[\"B\"]")
10797
default:
10898
XCTFail("Test Failure")
10999
}

MockingjayTests/MockingjayAsyncProtocolTests.swift

Lines changed: 82 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -32,90 +32,90 @@ class MockingjayAsyncProtocolTests: XCTestCase, NSURLSessionDataDelegate {
3232

3333
// MARK: Tests
3434

35-
func testDownloadOfTextInChunks() {
36-
let request = NSURLRequest(URL: NSURL(string: "https://fuller.li/")!)
37-
let stubResponse = NSURLResponse(URL: request.URL!, MIMEType: "text/plain", expectedContentLength: 6, textEncodingName: "utf-8")
38-
let stubData = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
39-
40-
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
41-
return true
42-
}) { (request) -> (Response) in
43-
return Response.Success(stubResponse, .StreamContent(data: stubData, inChunksOf: 22))
44-
}
45-
46-
let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
47-
let dataTask = urlSession.dataTaskWithRequest(request)
48-
dataTask.resume()
49-
50-
let mutableData = NSMutableData()
51-
while mutableData.length < stubData.length {
52-
let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
53-
self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
54-
mutableData.appendData(data)
55-
expectation.fulfill()
56-
}
57-
waitForExpectationsWithTimeout(2.0, handler: nil)
58-
}
59-
XCTAssertEqual(mutableData, stubData)
60-
}
35+
// func testDownloadOfTextInChunks() {
36+
// let request = NSURLRequest(URL: NSURL(string: "https://fuller.li/")!)
37+
// let stubResponse = NSURLResponse(URL: request.URL!, MIMEType: "text/plain", expectedContentLength: 6, textEncodingName: "utf-8")
38+
// let stubData = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
39+
//
40+
// MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
41+
// return true
42+
// }) { (request) -> (Response) in
43+
// return Response.Success(stubResponse, .StreamContent(data: stubData, inChunksOf: 22))
44+
// }
45+
//
46+
// let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
47+
// let dataTask = urlSession.dataTaskWithRequest(request)
48+
// dataTask.resume()
49+
//
50+
// let mutableData = NSMutableData()
51+
// while mutableData.length < stubData.length {
52+
// let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
53+
// self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
54+
// mutableData.appendData(data)
55+
// expectation.fulfill()
56+
// }
57+
// waitForExpectationsWithTimeout(2.0, handler: nil)
58+
// }
59+
// XCTAssertEqual(mutableData, stubData)
60+
// }
6161

62-
func testDownloadOfAudioFileInChunks() {
63-
let request = NSURLRequest(URL: NSURL(string: "https://fuller.li/")!)
64-
let path = NSBundle(forClass: self.classForCoder).pathForResource("TestAudio", ofType: "m4a")
65-
let data = NSData(contentsOfFile: path!)!
66-
67-
let stubResponse = NSHTTPURLResponse(URL: request.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Content-Length" : String(data.length)])!
68-
69-
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
70-
return true
71-
}) { (request) -> (Response) in
72-
return Response.Success(stubResponse, Download.StreamContent(data: data, inChunksOf: 2000))
73-
}
74-
let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
75-
let dataTask = urlSession.dataTaskWithRequest(request)
76-
dataTask.resume()
77-
78-
let mutableData = NSMutableData()
79-
while mutableData.length < data.length {
80-
let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
81-
self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
82-
mutableData.appendData(data)
83-
expectation.fulfill()
84-
}
85-
waitForExpectationsWithTimeout(2.0, handler: nil)
86-
}
87-
XCTAssertEqual(mutableData, data)
88-
}
62+
// func testDownloadOfAudioFileInChunks() {
63+
// let request = NSURLRequest(URL: NSURL(string: "https://fuller.li/")!)
64+
// let path = NSBundle(forClass: self.classForCoder).pathForResource("TestAudio", ofType: "m4a")
65+
// let data = NSData(contentsOfFile: path!)!
66+
//
67+
// let stubResponse = NSHTTPURLResponse(URL: request.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Content-Length" : String(data.length)])!
68+
//
69+
// MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
70+
// return true
71+
// }) { (request) -> (Response) in
72+
// return Response.Success(stubResponse, Download.StreamContent(data: data, inChunksOf: 2000))
73+
// }
74+
// let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
75+
// let dataTask = urlSession.dataTaskWithRequest(request)
76+
// dataTask.resume()
77+
//
78+
// let mutableData = NSMutableData()
79+
// while mutableData.length < data.length {
80+
// let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
81+
// self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
82+
// mutableData.appendData(data)
83+
// expectation.fulfill()
84+
// }
85+
// waitForExpectationsWithTimeout(2.0, handler: nil)
86+
// }
87+
// XCTAssertEqual(mutableData, data)
88+
// }
8989

90-
func testByteRanges() {
91-
let length = 100000
92-
let request = NSMutableURLRequest(URL: NSURL(string: "https://fuller.li/")!)
93-
request.addValue("bytes=50000-149999", forHTTPHeaderField: "Range")
94-
let path = NSBundle(forClass: self.classForCoder).pathForResource("TestAudio", ofType: "m4a")
95-
let data = NSData(contentsOfFile: path!)!
96-
97-
let stubResponse = NSHTTPURLResponse(URL: request.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Content-Length" : String(length)])!
98-
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
99-
return true
100-
}) { (request) -> (Response) in
101-
return Response.Success(stubResponse, .StreamContent(data: data, inChunksOf: 2000))
102-
}
103-
104-
let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
105-
let dataTask = urlSession.dataTaskWithRequest(request)
106-
dataTask.resume()
107-
108-
let mutableData = NSMutableData()
109-
while mutableData.length < length {
110-
let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
111-
self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
112-
mutableData.appendData(data)
113-
expectation.fulfill()
114-
}
115-
waitForExpectationsWithTimeout(2.0, handler: nil)
116-
}
117-
XCTAssertEqual(mutableData, data.subdataWithRange(NSMakeRange(50000, length)))
118-
}
90+
// func testByteRanges() {
91+
// let length = 100000
92+
// let request = NSMutableURLRequest(URL: NSURL(string: "https://fuller.li/")!)
93+
// request.addValue("bytes=50000-149999", forHTTPHeaderField: "Range")
94+
// let path = NSBundle(forClass: self.classForCoder).pathForResource("TestAudio", ofType: "m4a")
95+
// let data = NSData(contentsOfFile: path!)!
96+
//
97+
// let stubResponse = NSHTTPURLResponse(URL: request.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Content-Length" : String(length)])!
98+
// MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
99+
// return true
100+
// }) { (request) -> (Response) in
101+
// return Response.Success(stubResponse, .StreamContent(data: data, inChunksOf: 2000))
102+
// }
103+
//
104+
// let urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.currentQueue())
105+
// let dataTask = urlSession.dataTaskWithRequest(request)
106+
// dataTask.resume()
107+
//
108+
// let mutableData = NSMutableData()
109+
// while mutableData.length < length {
110+
// let expectation = expectationWithDescription("testProtocolCanReturnedDataInChunks")
111+
// self.didReceiveDataHandler = { (session: NSURLSession, dataTask: NSURLSessionDataTask, data: NSData) in
112+
// mutableData.appendData(data)
113+
// expectation.fulfill()
114+
// }
115+
// waitForExpectationsWithTimeout(2.0, handler: nil)
116+
// }
117+
// XCTAssertEqual(mutableData, data.subdataWithRange(NSMakeRange(50000, length)))
118+
// }
119119

120120
// MARK: NSURLSessionDataDelegate
121121
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {

MockingjayTests/MockingjayProtocolTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class MockingjayProtocolTests : XCTestCase {
6969
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
7070
return true
7171
}) { (request) -> (Response) in
72-
return Response.Success(stubResponse, .Content(stubData))
72+
return Response.Success(stubResponse, stubData)
7373
}
7474

7575
var response:NSURLResponse?
@@ -89,13 +89,13 @@ class MockingjayProtocolTests : XCTestCase {
8989
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
9090
return true
9191
}) { (request) -> (Response) in
92-
return Response.Success(stubResponse, .Content(stub1Data))
92+
return Response.Success(stubResponse, stub1Data)
9393
}
9494

9595
MockingjayProtocol.addStub({ (requestedRequest) -> (Bool) in
9696
return true
9797
}) { (request) -> (Response) in
98-
return Response.Success(stubResponse, .Content(stub2Data))
98+
return Response.Success(stubResponse, stub2Data)
9999
}
100100

101101
var response:NSURLResponse?

0 commit comments

Comments
 (0)