pscbonline-ios/PSCBOnlineTests/Sources/OOSAPIClientTests.swift

115 lines
3.5 KiB
Swift
Raw Normal View History

2024-07-08 15:20:00 +03:00
//
// OOSAPIClientTests.swift
// PSCB-OOS-iOSTests
//
// Created by Antonov Ilia on 21.10.2020.
//
#if canImport(PassKit)
import Foundation
import PassKit
import XCTest
@testable import PSCBOnline
final class OOSAPIClientTests: XCTestCase {
static let marketPlaceId = "1234567"
let subject = PSCBOnlineClient(environment: .sandbox, marketPlaceId: marketPlaceId, signingKey: "foobar")
// MARK: - OOS Payment request for PKPayment
func testCreatingRequestWrapper_PKPayment() {
// given:
let amount = Decimal(100)
let orderId = "123"
let payment = Self.createMockPayment()
// expect: No exception thrown
XCTAssertNoThrow(try subject.makeRequestWithPayment(payment: payment, amount: amount, orderId: orderId))
// when:
let request = try! subject.makeRequestWithPayment(payment: payment, amount: amount, orderId: orderId)
// then: Values equals
XCTAssertEqual(amount, request.payment.amount)
XCTAssertEqual(orderId, request.payment.orderId)
XCTAssertEqual(Self.marketPlaceId, request.marketPlaceId)
print("CardData : \(String(describing: request.cardData))")
// and: Card data is ApplePayCardData
// XCTAssertTrue(request.cardData)
}
// MARK: - OOS Payment request for CardData
func testCreatingRequestWrapper_CardData() {
// given:
let amount = Decimal(100)
let orderId = "123"
let payment = Payment(amount: amount, orderId: orderId)
let card = Self.createMockCard()
// expect: No exception thrown
XCTAssertNoThrow(try subject.makeRequestWithCardData(card: card, payment: payment))
// when:
let request = try! subject.makeRequestWithCardData(card: card, payment: payment)
// then: Values equals
XCTAssertEqual(amount, request.payment.amount)
XCTAssertEqual(orderId, request.payment.orderId)
XCTAssertEqual(Self.marketPlaceId, request.marketPlaceId)
print("CardData : \(String(describing: request.cardData))")
// and: Card data is ApplePayCardData
// XCTAssertTrue(request.cardData)
}
// MARK: - Checking JSON from encoded data
func testEncodingPaymentRequest() {
// givent:
let amount = Decimal(100)
let orderId = "1234"
let payment = Self.createMockPayment()
// and:
let request = try! subject.makeRequestWithPayment(payment: payment, amount: amount, orderId: orderId)
// expect:
XCTAssertNoThrow(try request.serializeToString())
// when:
let jsonString = try! request.serializeToString()
print("JSON Request: \(jsonString)")
// then:
XCTAssertTrue(!jsonString.isEmpty)
}
private static func createMockPayment() -> PKPayment {
let paymentMethod = MockPaymentMethod(type: .debit, network: .visa, displayName: "PSCB Visa")
let token = MockPaymentToken(paymentMethod: paymentMethod)
return MockPayment(token: token)
}
private static func createMockCard() -> CardData {
let current = Date()
let calendar = Calendar.current
return CardData(
pan: "4761120010000492",
expiryYear: calendar.component(.year, from: current) + 1,
expiryMonth: calendar.component(.month, from: current),
cvCode: "533"
)!
}
}
#endif