diff --git a/NetworkInfrastructure/NetworkInfrastructure/Core/FeedResults/RequestTokenResult.swift b/NetworkInfrastructure/NetworkInfrastructure/Core/FeedResults/RequestTokenResult.swift index d8df2f38..bf2ad1d4 100644 --- a/NetworkInfrastructure/NetworkInfrastructure/Core/FeedResults/RequestTokenResult.swift +++ b/NetworkInfrastructure/NetworkInfrastructure/Core/FeedResults/RequestTokenResult.swift @@ -6,7 +6,7 @@ // Copyright © 2019 Alonso. All rights reserved. // -struct RequestTokenResult: Decodable { +struct RequestTokenResult: Codable { let success: Bool let token: String diff --git a/NetworkInfrastructure/NetworkInfrastructureTests/Services/AuthClientTests.swift b/NetworkInfrastructure/NetworkInfrastructureTests/Services/AuthClientTests.swift new file mode 100644 index 00000000..81494740 --- /dev/null +++ b/NetworkInfrastructure/NetworkInfrastructureTests/Services/AuthClientTests.swift @@ -0,0 +1,69 @@ +// +// AuthClientTests.swift +// NetworkInfrastructure-Unit-NetworkInfrastructureTests +// +// Created by Alonso on 12/09/23. +// + +import XCTest +@testable import NetworkInfrastructure + +final class AuthClientTests: XCTestCase { + + private var urlSession: MockURLSession! + private var authClient: AuthClient! + + override func setUpWithError() throws { + try super.setUpWithError() + urlSession = MockURLSession() + authClient = AuthClient(session: urlSession) + } + + override func tearDownWithError() throws { + urlSession = nil + authClient = nil + try super.tearDownWithError() + } + + func testGetRequestTokenSuccess() throws { + // Arrange + let data = try JSONEncoder().encode(RequestTokenResult(success: true, token: "")) + guard let url = URL(string: "www.google.com") else { + XCTFail("Invalid URL") + return + } + urlSession.dataTaskWithRequestCompletionHandler = (data, HTTPURLResponse(url: url, statusCode: 200, httpVersion: nil, headerFields: nil), nil) + let expectation = XCTestExpectation(description: "Get request token success") + // Act + authClient.getRequestToken(with: "") { result in + switch result { + case .success: + break + case .failure: + XCTFail("Get request token error") + } + expectation.fulfill() + } + // Assert + wait(for: [expectation], timeout: 1.0) + } + + func testGetRequestTokenError() throws { + // Arrange + urlSession.dataTaskWithRequestCompletionHandler = (nil, nil, nil) + let expectation = XCTestExpectation(description: "Get request token error") + // Act + authClient.getRequestToken(with: "") { result in + switch result { + case .success: + XCTFail("Get request token success") + case .failure: + break + } + expectation.fulfill() + } + // Assert + wait(for: [expectation], timeout: 1.0) + } + +}