Skip to content

Commit

Permalink
release version 2.0.7
Browse files Browse the repository at this point in the history
  • Loading branch information
ledgecrucible committed Aug 30, 2019
1 parent b954cdb commit ed8f14a
Show file tree
Hide file tree
Showing 25 changed files with 212 additions and 122 deletions.
4 changes: 2 additions & 2 deletions AptoUISDK.podspec
Expand Up @@ -8,15 +8,15 @@

Pod::Spec.new do |s|
s.name = "AptoUISDK"
s.version = "2.0.6"
s.version = "2.0.7"
s.summary = "The Apto UI platform iOS SDK."
s.description = <<-DESC
Apto iOS UI SDK
DESC
s.homepage = "https://github.com/ShiftFinancial/apto-ui-sdk-ios.git"
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.authors = { "Ivan Oliver" => "ivan@aptopayments.com", "Takeichi Kanzaki" => "takeichi@aptopayments.com" }
s.source = { :git => "https://github.com/ShiftFinancial/apto-ui-sdk-ios.git", :tag => "2.0.6" }
s.source = { :git => "https://github.com/ShiftFinancial/apto-ui-sdk-ios.git", :tag => "2.0.7" }

s.platform = :ios
s.ios.deployment_target = '10.0'
Expand Down
2 changes: 1 addition & 1 deletion Example/Demo/Info.plist
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>BuildDate</key>
<date>2019-08-27T16:46:11Z</date>
<date>2019-08-30T11:52:17Z</date>
<key>BuildType</key>
<string>Local</string>
<key>CFBundleDevelopmentRegion</key>
Expand Down
2 changes: 1 addition & 1 deletion Example/Demo/ViewControllers/MainViewController.swift
Expand Up @@ -90,7 +90,7 @@ class MainViewController: UIViewController {
fileprivate func showCardSDK() {
// Launch Card Flow
self.showLoadingSpinner(tintColor: .white, position: .bottomCenter)
let options = CardOptions(features: [.useBalanceVersionV2: true, .showStatsButton: true, .showNotificationPreferences: true, .showDetailedCardActivityOption: true])
let options = CardOptions(features: [.showStatsButton: true, .showNotificationPreferences: true, .showDetailedCardActivityOption: true])
AptoPlatform.defaultManager().startCardFlow(from: self, mode: .standalone, options: options) { [weak self] result in
self?.hideLoadingSpinner()
switch result {
Expand Down
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
8 changes: 4 additions & 4 deletions Example/Podfile
@@ -1,11 +1,11 @@
platform :ios, '10.0'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://cdn.cocoapods.org/'
use_frameworks!

def runtimepods
pod 'AptoSDK', :path => '../'
pod 'AptoUISDK', :path => '../'
pod 'AptoObjCSDK', :path => '../'
pod 'AptoSDK'
pod 'AptoUISDK'
pod 'AptoObjCSDK'
pod 'Alamofire', '~> 4.8'
pod 'AlamofireNetworkActivityIndicator', '2.3.0'
pod 'FTLinearActivityIndicator', '1.1.2'
Expand Down
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
Expand Up @@ -207,8 +207,8 @@ class AptoPlatformFake: AptoPlatformProtocol {
var nextVerifyOauthAttemptStatusResult: Result<Custodian?, NSError>?
private(set) var verifyOauthAttemptStatusCalled = false
private(set) var lastVerifyOauthAttemptStatusAttempt: OauthAttempt?
private(set) var lastVerifyOauthAttemptStatusCustodianType: CustodianType?
func verifyOauthAttemptStatus(_ attempt: OauthAttempt, custodianType: CustodianType,
private(set) var lastVerifyOauthAttemptStatusCustodianType: String?
func verifyOauthAttemptStatus(_ attempt: OauthAttempt, custodianType: String,
callback: @escaping Result<Custodian?, NSError>.Callback) {
verifyOauthAttemptStatusCalled = true
lastVerifyOauthAttemptStatusAttempt = attempt
Expand Down
Expand Up @@ -431,7 +431,7 @@ class ModelDataProvider {
newUserAction: "newUserAction",
allowedBalanceTypes: [coinbaseBalanceType])

lazy var custodian = Custodian(custodianType: .coinbase, name: "Coinbase")
lazy var custodian = Custodian(custodianType: "coinbase", name: "Coinbase")

lazy var oauthCredential = OauthCredential(oauthTokenId: "oauth_token_id")

Expand All @@ -442,7 +442,7 @@ class ModelDataProvider {

lazy var usa = Country(isoCode: "US", name: "United States")

lazy var coinbaseBalanceType = AllowedBalanceType(type: .coinbase, baseUri: "baseUri")
lazy var coinbaseBalanceType = AllowedBalanceType(type: "coinbase", baseUri: "baseUri")

lazy var url = URL(string: "https://shiftpayments.com")! // swiftlint:disable:this implicitly_unwrapped_optional

Expand Down
Expand Up @@ -39,10 +39,6 @@ class FinancialAccountsStorageSpy: FinancialAccountsStorageProtocol {
callback: @escaping Result<FundingSource, NSError>.Callback) {
}

func addBankAccounts(userToken: String, apiKey: String, publicToken: String,
callback: @escaping Result<[BankAccount], NSError>.Callback) {
}

func activatePhysical(_ apiKey: String, userToken: String, accountId: String, code: String,
callback: @escaping Result<PhysicalCardActivationResult, NSError>.Callback) {
}
Expand Down Expand Up @@ -73,18 +69,16 @@ class FinancialAccountsStorageSpy: FinancialAccountsStorageProtocol {
private(set) var lastIssueCardUserToken: String?
private(set) var lastIssueCardCardProduct: CardProduct?
private(set) var lastIssueCardCustodian: Custodian?
private(set) var lastIssueCardBalanceVersion: BalanceVersion?
private(set) var lastIssueCardAdditionalFields: [String: AnyObject]?
private(set) var lastIssueCardInitialFundingSourceId: String?
func issueCard(_ apiKey: String, userToken: String, cardProduct: CardProduct, custodian: Custodian?,
balanceVersion: BalanceVersion, additionalFields: [String: AnyObject]?,
initialFundingSourceId: String?, callback: @escaping Result<Card, NSError>.Callback) {
additionalFields: [String: AnyObject]?, initialFundingSourceId: String?,
callback: @escaping Result<Card, NSError>.Callback) {
issueCardCalled = true
lastIssueCardApiKey = apiKey
lastIssueCardUserToken = userToken
lastIssueCardCardProduct = cardProduct
lastIssueCardCustodian = custodian
lastIssueCardBalanceVersion = balanceVersion
lastIssueCardAdditionalFields = additionalFields
lastIssueCardInitialFundingSourceId = initialFundingSourceId
}
Expand All @@ -93,11 +87,11 @@ class FinancialAccountsStorageSpy: FinancialAccountsStorageProtocol {
class FinancialAccountsStorageFake: FinancialAccountsStorageSpy {
var nextIssueCardResult: Result<Card, NSError>?
override func issueCard(_ apiKey: String, userToken: String, cardProduct: CardProduct, custodian: Custodian?,
balanceVersion: BalanceVersion, additionalFields: [String: AnyObject]?,
initialFundingSourceId: String?, callback: @escaping Result<Card, NSError>.Callback) {
additionalFields: [String: AnyObject]?, initialFundingSourceId: String?,
callback: @escaping Result<Card, NSError>.Callback) {
super.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: initialFundingSourceId, callback: callback)
additionalFields: additionalFields, initialFundingSourceId: initialFundingSourceId,
callback: callback)
if let result = nextIssueCardResult {
callback(result)
}
Expand Down
Expand Up @@ -18,7 +18,6 @@ class FinancialAccountsStorageTest: XCTestCase {
private let userToken = "user_token"
private let cardProduct = ModelDataProvider.provider.cardProduct
private let custodian = ModelDataProvider.provider.custodian
private let balanceVersion = BalanceVersion.v2
private let additionalFields: [String: AnyObject] = [
"field1": "field1 value" as AnyObject,
"nestedField": [
Expand All @@ -35,17 +34,15 @@ class FinancialAccountsStorageTest: XCTestCase {

func testIssueCardCallTransport() {
// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: nil, initialFundingSourceId: nil) { _ in }
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian, additionalFields: nil,
initialFundingSourceId: nil) { _ in }

// Then
XCTAssertTrue(transport.postCalled)
XCTAssertNotNil(transport.lastPostURL)
XCTAssertNotNil(transport.lastPostAuthorization)
XCTAssertNotNil(transport.lastPostParameters)
XCTAssertNotNil(transport.lastPostParameters?["card_product_id"])
XCTAssertNotNil(transport.lastPostParameters?["balance_version"])
XCTAssertEqual("v2", transport.lastPostParameters?["balance_version"] as? String)
XCTAssertNil(transport.lastPostParameters?["additional_fields"])
XCTAssertEqual(true, transport.lastPostFilterInvalidTokenResult)
}
Expand All @@ -56,8 +53,7 @@ class FinancialAccountsStorageTest: XCTestCase {

// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: nil) { _ in }
additionalFields: additionalFields, initialFundingSourceId: nil) { _ in }

// Then
guard let urlWrapper = transport.lastPostURL as? URLWrapper else {
Expand All @@ -70,8 +66,7 @@ class FinancialAccountsStorageTest: XCTestCase {
func testIssueCardWithAdditionalFieldsAddAdditionalFieldsToParameters() {
// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: nil) { _ in }
additionalFields: additionalFields, initialFundingSourceId: nil) { _ in }

// Then
XCTAssertNotNil(transport.lastPostParameters?["additional_fields"])
Expand All @@ -80,8 +75,7 @@ class FinancialAccountsStorageTest: XCTestCase {
func testIssueCardWithInitialFundingSourceIdAddInitialFundingSourceIdToParameters() {
// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: initialFundingSourceId) { _ in }
additionalFields: additionalFields, initialFundingSourceId: initialFundingSourceId) { _ in }

// Then
XCTAssertNotNil(transport.lastPostParameters?["initial_funding_source_id"])
Expand All @@ -94,8 +88,7 @@ class FinancialAccountsStorageTest: XCTestCase {

// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: nil) { result in
additionalFields: additionalFields, initialFundingSourceId: nil) { result in
returnedResult = result
}

Expand All @@ -110,8 +103,7 @@ class FinancialAccountsStorageTest: XCTestCase {

// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: nil) { result in
additionalFields: additionalFields, initialFundingSourceId: nil) { result in
returnedResult = result
}

Expand All @@ -126,8 +118,7 @@ class FinancialAccountsStorageTest: XCTestCase {

// When
sut.issueCard(apiKey, userToken: userToken, cardProduct: cardProduct, custodian: custodian,
balanceVersion: balanceVersion, additionalFields: additionalFields,
initialFundingSourceId: nil) { result in
additionalFields: additionalFields, initialFundingSourceId: nil) { result in
returnedResult = result
}

Expand Down
Expand Up @@ -11,7 +11,7 @@ import XCTest
class CustodianSerializerTest: XCTestCase {
func testSerializeNil() {
// Given
let sut = Custodian(custodianType: .uphold, name: nil)
let sut = Custodian(custodianType: "uphold", name: nil)
sut.externalCredentials = nil
let expectedJson = [
"balance_store": [
Expand All @@ -29,7 +29,7 @@ class CustodianSerializerTest: XCTestCase {

func testSerializeOauthCredential() {
// Given
let sut = Custodian(custodianType: .coinbase, name: nil)
let sut = Custodian(custodianType: "coinbase", name: nil)
sut.externalCredentials = .oauth(OauthCredential(oauthTokenId: "oauth_token_id"))
let expectedJson = ["oauth_token_id": "oauth_token_id"]

Expand All @@ -42,7 +42,7 @@ class CustodianSerializerTest: XCTestCase {

func testSerializeOauthNone() {
// Given
let sut = Custodian(custodianType: .coinbase, name: nil)
let sut = Custodian(custodianType: "coinbase", name: nil)
sut.externalCredentials = ExternalCredential.none

// When
Expand All @@ -58,7 +58,7 @@ class CustodianSerializerTest: XCTestCase {

func testSerializeExternalOauthCredential() {
// Given
let sut = Custodian(custodianType: .coinbase, name: nil)
let sut = Custodian(custodianType: "coinbase", name: nil)
sut.externalCredentials = .externalOauth(ExternalOauthCredential(oauthToken: "token", refreshToken: "refresh"))
let expectedCredential = [
"access_token": "token",
Expand Down
18 changes: 0 additions & 18 deletions Example/UnitTests/ledgefoundation/Manager/AptoPlatformTest.swift
Expand Up @@ -190,24 +190,10 @@ class AptoPlatformTest: XCTestCase {
XCTAssertNotNil(storage.lastIssueCardUserToken)
XCTAssertNotNil(storage.lastIssueCardCardProduct)
XCTAssertNotNil(storage.lastIssueCardCustodian)
XCTAssertEqual(BalanceVersion.v1, storage.lastIssueCardBalanceVersion)
XCTAssertNotNil(storage.lastIssueCardAdditionalFields)
XCTAssertNotNil(storage.lastIssueCardInitialFundingSourceId)
}

func testBalanceV2EnabledIssueCardUseBalanceV2() {
// Given
givenCurrentUser()
givenBalanceV2Enabled()

// When
sut.issueCard(cardProduct: dataProvider.cardProduct, custodian: nil) { _ in }

// Then
let storage = storageLocator.financialAccountsStorageFake
XCTAssertEqual(BalanceVersion.v2, storage.lastIssueCardBalanceVersion)
}

func testIssueCardFailCallbackFailure() {
// Given
givenCurrentUser()
Expand Down Expand Up @@ -281,10 +267,6 @@ class AptoPlatformTest: XCTestCase {
storageLocator.userTokenStorageFake.setCurrent(token: "token", withPrimaryCredential: .email,
andSecondaryCredential: .phoneNumber)
}

private func givenBalanceV2Enabled() {
storageLocator.featuresStorageSpy.update(features: [FeatureKey.useBalanceVersionV2: true])
}
}

private class AptoPlatformDelegateSpy: AptoPlatformDelegate {
Expand Down
Expand Up @@ -140,7 +140,7 @@ class ManageShiftCardPresenterTest: XCTestCase {

func testCardTappedForCreatedCardDoNotCallRouter() {
// Given
sut.viewModel.state.next(.created)
sut.viewModel.state.send(.created)

// When
sut.cardTapped()
Expand All @@ -151,7 +151,7 @@ class ManageShiftCardPresenterTest: XCTestCase {

func testCardTappedForInvalidFundingSourceCallRouterToShowBalance() {
// Given
sut.viewModel.fundingSource.next(dataProvider.invalidFundingSource)
sut.viewModel.fundingSource.send(dataProvider.invalidFundingSource)

// When
sut.cardTapped()
Expand All @@ -171,7 +171,7 @@ class ManageShiftCardPresenterTest: XCTestCase {

func testCardSettingsTappedForCreatedCardDoNotCallRouter() {
// Given
sut.viewModel.state.next(.created)
sut.viewModel.state.send(.created)

// When
sut.cardSettingsTapped()
Expand Down
Expand Up @@ -170,7 +170,7 @@ class NotificationPreferencesPresenterTest: XCTestCase {
let viewModel = sut.viewModel
let row = viewModel.categories.value[0].rows[0]
interactor.nextUpdatePreferencesResult = .success(notificationPreferences)
viewModel.categories.next([])
viewModel.categories.send([])

// When
sut.didUpdateNotificationRow(row)
Expand Down
8 changes: 8 additions & 0 deletions Example/fastlane/Fastfile
Expand Up @@ -105,6 +105,7 @@ platform :ios do
update_ui_pod_version(version)

# Update public repo
reference_remote_repos
update_ui_repo
validate_ui_pod
publish_ui_repo(version)
Expand Down Expand Up @@ -235,6 +236,7 @@ def update_ui_repo
sh("mkdir -p #{repo_code}")
sh("cp -r ../../Pod/Classes/ui #{repo_code}")
sh("cp -r ../../Example #{repo}")
sh("cp ../../README-UI.md #{repo}/README.md")

# Clean Example App
sh("rm -rf #{repo}/Example/Pods | true")
Expand Down Expand Up @@ -348,3 +350,9 @@ def update_objc_cocoapods
sh("pod trunk push AptoObjCSDK.podspec --allow-warnings --skip-tests")
end
end

def reference_remote_repos
text = File.read("../Podfile")
text.gsub! ", :path => '../'", ""
File.open("../Podfile", "w") {|file| file.puts text }
end
Expand Up @@ -14,7 +14,7 @@ class ExternalOAuthInteractor: ExternalOAuthInteractorProtocol {
weak var presenter: ExternalOAuthPresenterProtocol!

private var attempt: OauthAttempt?
private var custodianType: CustodianType?
private var custodianType: String?

init(platform: AptoPlatformProtocol) {
self.platform = platform
Expand Down
Expand Up @@ -42,7 +42,7 @@ class ExternalOAuthViewControllerTheme1: ShiftViewController {
let callToActionTitle = "select_balance_store.login.call_to_action.title".podLocalized()
self.actionButton = ComponentCatalog.buttonWith(title: callToActionTitle,
uiConfig: uiConfiguration) { [unowned self] in
let custodianType: CustodianType = self.allowedBalanceTypes.first?.type ?? .coinbase
let custodianType: String = self.allowedBalanceTypes.first?.type ?? ""
self.custodianSelected(type: custodianType)
}
let newUserTitle = "select_balance_store.login.new_user.title".podLocalized()
Expand All @@ -67,7 +67,7 @@ class ExternalOAuthViewControllerTheme1: ShiftViewController {
presenter.closeTapped()
}

private func custodianSelected(type: CustodianType) {
private func custodianSelected(type: String) {
if let balanceType = allowedBalanceTypes.first(where: { $0.type == type }) {
presenter.balanceTypeTapped(balanceType)
}
Expand Down

0 comments on commit ed8f14a

Please sign in to comment.