Skip to content

Commit

Permalink
API Updates
Browse files Browse the repository at this point in the history
* Adds support for `simulate_increment`
* Adds support for `simulate_clearing`
* Adds support for `simulate_reversal`
  • Loading branch information
martinseco committed Jun 7, 2023
1 parent 186facc commit 1e62ea9
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 3 deletions.
36 changes: 35 additions & 1 deletion lib/checkout_sdk/issuing/issuing_client.rb
Expand Up @@ -14,6 +14,8 @@ class IssuingClient < Client
CONTROLS = 'controls'
SIMULATE = 'simulate'
AUTHORIZATIONS = 'authorizations'
PRESENTMENTS = 'presentments'
REVERSALS = 'reversals'
private_constant :ISSUING,
:CARDHOLDERS,
:CARDS,
Expand All @@ -24,7 +26,9 @@ class IssuingClient < Client
:SUSPEND,
:CONTROLS,
:SIMULATE,
:AUTHORIZATIONS
:AUTHORIZATIONS,
:PRESENTMENTS,
:REVERSALS

# @param [ApiClient] api_client
# @param [CheckoutConfiguration] configuration
Expand Down Expand Up @@ -127,6 +131,36 @@ def remove_card_control(control_id)
def simulate_authorization(authorization_request)
api_client.invoke_post(build_path(ISSUING, SIMULATE, AUTHORIZATIONS), sdk_authorization, authorization_request)
end

# @param [String] transaction_id
# @param [Hash] increment_request
def simulate_increment(transaction_id, increment_request)
api_client.invoke_post(
build_path(ISSUING, SIMULATE, AUTHORIZATIONS, transaction_id, AUTHORIZATIONS),
sdk_authorization,
increment_request
)
end

# @param [String] transaction_id
# @param [Hash] clearing_request
def simulate_clearing(transaction_id, clearing_request)
api_client.invoke_post(
build_path(ISSUING, SIMULATE, AUTHORIZATIONS, transaction_id, PRESENTMENTS),
sdk_authorization,
clearing_request
)
end

# @param [String] transaction_id
# @param [Hash] reversal_request
def simulate_reversal(transaction_id, reversal_request)
api_client.invoke_post(
build_path(ISSUING, SIMULATE, AUTHORIZATIONS, transaction_id, REVERSALS),
sdk_authorization,
reversal_request
)
end
end
end
end
21 changes: 21 additions & 0 deletions spec/checkout_sdk/issuing/issuing_helper.rb
Expand Up @@ -90,4 +90,25 @@ def create_control(card_id)

control
end

def simulate_transaction(card)
request = {
'card' => {
'id' => card.id,
'expiry_month' => card.expiry_month,
'expiry_year' => card.expiry_year
},
'transaction' => {
'type' => 'purchase',
'amount' => 100,
'currency' => CheckoutSdk::Common::Currency::GBP
}
}

auth = get_issuing_api.issuing.simulate_authorization request

assert_response auth

auth
end
end
34 changes: 32 additions & 2 deletions spec/checkout_sdk/issuing/testing_issuing_integration_spec.rb
Expand Up @@ -7,25 +7,55 @@
before(:all) do
@cardholder = create_cardholder
@card = create_card @cardholder.id, true
@transaction = simulate_transaction @card
end

describe '.simulate_authorization' do
context 'when simulating authorization with valid card' do
it { authorizes_transaction get_issuing_api.issuing.simulate_authorization get_authorization_request }
end
end

describe '.simulate_increment' do
context 'when simulating increment authorization with valid card' do
it { authorizes_transaction get_issuing_api.issuing.simulate_increment @transaction.id, { 'amount' => 300 } }
end
end

describe '.simulate_clearing' do
context 'when simulating a clearing of an existing transaction' do
it { authorizes_clearing get_issuing_api.issuing.simulate_clearing @transaction.id, { 'amount' => 100 } }
end
end

describe '.simulate_reversal' do
context 'when simulating a reversal of an existing transaction' do
it { reverses_transaction get_issuing_api.issuing.simulate_reversal @transaction.id, { 'amount' => 100 } }
end
end
end
end

private

def authorizes_transaction(response)
assert_response response, %w[id
status]
assert_response response, %w[status]

expect(response.status).to eq 'Authorized'
end

def authorizes_clearing(response)
assert_response response

expect(response.http_metadata.status_code).to eq 202
end

def reverses_transaction(response)
assert_response response, %w[status]

expect(response.status).to eq 'Reversed'
end

def get_authorization_request
{
'card' => {
Expand Down

0 comments on commit 1e62ea9

Please sign in to comment.