func test200Response()

in source/UberCoreTests/RefreshEndpointTests.swift [54:99]


    func test200Response() {
        stub(condition: isHost("auth.uber.com")) { _ in
            return HTTPStubsResponse(fileAtPath:OHPathForFile("refresh.json", type(of: self))!, statusCode:200, headers:self.headers)
        }
        let refreshToken = "ThisIsRefresh"
        let expectation = self.expectation(description: "200 success response")
        let endpoint = OAuth.refresh(clientID: clientID, refreshToken: refreshToken)
        guard let request = Request(session: session, endpoint: endpoint) else {
            XCTFail("unable to create request")
            return
        }

        request.execute({ response in
            XCTAssertEqual(response.statusCode, 200)
            XCTAssertNil(response.error)

            expectation.fulfill()
        })

        XCTAssertEqual(request.urlRequest.httpMethod, "POST")

        guard let bodyData = request.urlRequest.httpBody, let dataString = String(data: bodyData, encoding: String.Encoding.utf8) else {
            XCTFail("Missing HTTP Body!")
            return
        }
        var components = URLComponents()
        components.query = dataString

        let expectedClientID = URLQueryItem(name: "client_id", value: clientID)
        let expectedRefreshToken = URLQueryItem(name: "refresh_token", value: refreshToken)

        guard let queryItems = components.queryItems else {
            XCTFail("Invalid HTTP Body!")
            return
        }

        XCTAssertTrue(queryItems.contains(expectedClientID))
        XCTAssertTrue(queryItems.contains(expectedRefreshToken))
        
        waitForExpectations(timeout: timeout, handler: { error in
            if let error = error {
                print("Error: \(error.localizedDescription)")
            }
            request.cancelTasks()
        })
    }