115 lines
3.5 KiB
Swift
115 lines
3.5 KiB
Swift
//
|
|
// 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
|