         
     }
     
+    func testJSONGET() {
+        // This is nice because we only needed to write one struct, and we inherit
+        // expected behavior from the other protocol extensions
+        let fakeNaive = FakeNaive()
+        let asyncExpectation = self.expectationWithDescription("async expectation")
+        fakeNaive.GET("http://example.com/whatever", params: nil, successJSON: { (json, response) -> () in
+            XCTAssertEqual("somevalue", json["somekey"].stringValue)
+            asyncExpectation.fulfill()
+        }) { (error) -> Void in
+            XCTFail()
+            asyncExpectation.fulfill()
+        }
+        
+        self.waitForExpectationsWithTimeout(1.0, handler: nil)
+    }
+    
 }
        
        fakeNaive.GET("http://example.com", params: nil, success: { [asyncExpectation](data, response) -> () in
            let resultString = NSString(data: data, encoding: NSUTF8StringEncoding)
            XCTAssertEqual("derp", resultString)
            asyncExpectation.fulfill()
        }) { (error) -> Void in
            XCTFail()


class FakeTests: XCTestCase {
    
    
    struct FakeNaive: NaiveHTTPProtocol {
        var urlSession: NSURLSession {
            return NSURLSession(configuration: configuration)
