// // 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