Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andrii-vysotskyi-cko committed Sep 12, 2024
1 parent 3d8eb35 commit 4c236be
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//
// MockWebAuthenticationSession.swift
// ProcessOut
//
// Created by Andrii Vysotskyi on 12.09.2024.
//

import Foundation
@testable @_spi(PO) import ProcessOut

final class MockWebAuthenticationSession: WebAuthenticationSession {

var authenticateCallsCount: Int {
lock.withLock { _authenticateCallsCount }
}

var authenticateFromClosure: ((URL, String?, [String: String]?) async throws -> URL)! {
get { lock.withLock { _authenticateFromClosure } }
set { lock.withLock { _authenticateFromClosure = newValue } }
}

// MARK: -

func authenticate(
using url: URL, callbackScheme: String?, additionalHeaderFields: [String: String]?
) async throws -> URL {
let authenticate = lock.withLock {
_authenticateCallsCount += 1
return _authenticateFromClosure
}
return try await authenticate!(url, callbackScheme, additionalHeaderFields)
}

// MARK: - Private Properties

private let lock = POUnfairlyLocked()

private nonisolated(unsafe) var _authenticateCallsCount = 0
private nonisolated(unsafe) var _authenticateFromClosure: ((URL, String?, [String: String]?) async throws -> URL)!
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,22 @@ final class DefaultAlternativePaymentMethodsServiceTests: XCTestCase {

override func setUp() {
super.setUp()
let configuration = AlternativePaymentMethodsServiceConfiguration(
let configuration = AlternativePaymentsServiceConfiguration(
projectId: "proj_test", baseUrl: URL(string: "https://example.com")!
)
sut = DefaultAlternativePaymentMethodsService(configuration: { configuration }, logger: .stub)
let webSession = MockWebAuthenticationSession()
sut = .init(configuration: { configuration }, webSession: webSession, logger: .stub)
}

func test_alternativePaymentMethodUrl_authorizationWithAdditionalData_succeeds() throws {
let request = POAlternativePaymentMethodRequest(
let request = POAlternativePaymentAuthorizationRequest(
invoiceId: "iv_test",
gatewayConfigurationId: "gway_conf_test",
additionalData: ["field1": "test", "field2": "test2"]
)

// When
let url = sut.alternativePaymentMethodUrl(request: request)
let url = try sut.url(for: request)

// Then
let expectedUrls = [
Expand All @@ -41,51 +42,54 @@ final class DefaultAlternativePaymentMethodsServiceTests: XCTestCase {
}

func test_alternativePaymentMethodUrl_tokenization_succeeds() throws {
let request = POAlternativePaymentMethodRequest(
let request = POAlternativePaymentTokenizationRequest(
customerId: "cust_test",
tokenId: "tok_test",
gatewayConfigurationId: "gway_conf_test"
)

// When
let url = sut.alternativePaymentMethodUrl(request: request)
let url = try sut.url(for: request)

// Then
let expectedUrl = "https://example.com/proj_test/cust_test/tok_test/redirect/gway_conf_test"
XCTAssertEqual(url.absoluteString, expectedUrl)
}

func test_alternativePaymentMethodUrl_authorizationWithToken_succeeds() throws {
let request = POAlternativePaymentMethodRequest(
let request = POAlternativePaymentAuthorizationRequest(
invoiceId: "iv_test", gatewayConfigurationId: "gway_conf_test", tokenId: "tok_test"
)

// When
let url = sut.alternativePaymentMethodUrl(request: request)
let url = try sut.url(for: request)

// Then
let expectedUrl = "https://example.com/proj_test/iv_test/redirect/gway_conf_test/tokenized/tok_test"
XCTAssertEqual(url.absoluteString, expectedUrl)
}

@available(*, deprecated)
func test_alternativePaymentMethodResponse_withOnlyGatewayToken_succeeds() throws {
let result: POAlternativePaymentMethodResponse? = try sut.alternativePaymentMethodResponse(
let result = try sut.alternativePaymentMethodResponse(
url: URL(string: "https://processout.return?token=gway_req_test")!
)

XCTAssertEqual(result?.gatewayToken, "gway_req_test")
XCTAssertEqual(result.gatewayToken, "gway_req_test")
}

@available(*, deprecated)
func test_alternativePaymentMethodResponse_withCustomerToken_succeeds() throws {
let result: POAlternativePaymentMethodResponse? = try sut.alternativePaymentMethodResponse(
let result = try sut.alternativePaymentMethodResponse(
url: URL(string: "https://processout.return?token=gway_req_test&token_id=tok_test&customer_id=cust_test")!
)

XCTAssertEqual(result?.gatewayToken, "gway_req_test")
XCTAssertEqual(result?.tokenId, "tok_test")
XCTAssertEqual(result?.customerId, "cust_test")
XCTAssertEqual(result.gatewayToken, "gway_req_test")
XCTAssertEqual(result.tokenId, "tok_test")
XCTAssertEqual(result.customerId, "cust_test")
}

@available(*, deprecated)
func test_alternativePaymentMethodResponse_whenTokenIsNotSet_succeeds() throws {
// When
let url = URL(string: "test://return")!
Expand All @@ -95,5 +99,5 @@ final class DefaultAlternativePaymentMethodsServiceTests: XCTestCase {
XCTAssertTrue(result.gatewayToken.isEmpty)
}

private var sut: DefaultAlternativePaymentMethodsService!
private var sut: DefaultAlternativePaymentsService!
}

0 comments on commit 4c236be

Please sign in to comment.