diff --git a/README.md b/README.md index 0fd52d2..748d885 100644 --- a/README.md +++ b/README.md @@ -360,6 +360,10 @@ bank_account = client.bank_accounts.find('1') ```ruby bank_account.deactivate ``` +Optionally a *mobile_pin* can be passed as argument. +```ruby +bank_account.deactivate('mobile_pin') +``` #####Get a bank account's users ```ruby bank_account.user diff --git a/lib/promisepay/models/bank_account.rb b/lib/promisepay/models/bank_account.rb index 81cc10a..bc436db 100644 --- a/lib/promisepay/models/bank_account.rb +++ b/lib/promisepay/models/bank_account.rb @@ -19,7 +19,7 @@ def user # @param mobile_pin [String] Mobile PIN. # # @return [Boolean] - def deactivate(mobile_pin) + def deactivate(mobile_pin = nil) @client.delete("bank_accounts/#{id}", mobile_pin: mobile_pin) @attributes['active'] = false true diff --git a/spec/fixtures/bank_accounts_deactivated_no_pin.yml b/spec/fixtures/bank_accounts_deactivated_no_pin.yml new file mode 100644 index 0000000..b865b02 --- /dev/null +++ b/spec/fixtures/bank_accounts_deactivated_no_pin.yml @@ -0,0 +1,66 @@ +--- +http_interactions: +- request: + method: delete + uri: https://:@test.api.promisepay.com/bank_accounts/a4355e4c-25e4-49e3-88bf-63de71bbbea9 + body: + encoding: UTF-8 + string: '{"mobile_pin":null}' + headers: + User-Agent: + - Faraday v0.11.0 + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Thu, 19 Jan 2017 04:44:21 GMT + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Access-Control-Allow-Headers: + - Origin, Content-Type, Accept, Authorization, Token + Access-Control-Allow-Methods: + - POST, GET, PUT, DELETE, OPTIONS + Access-Control-Allow-Origin: + - "*" + Access-Control-Max-Age: + - '1728000' + Access-Control-Request-Method: + - "*" + Cache-Control: + - max-age=0, private, must-revalidate + Etag: + - W/"652727d4dd734c741f93f8884be7f597" + Server: + - nginx/1.8.0 + Phusion Passenger 4.0.59 + Status: + - 200 OK + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Powered-By: + - Phusion Passenger 4.0.59 + X-Request-Id: + - 3dc30844-c5f4-4f31-8d70-a84fb3224676 + X-Runtime: + - '0.244601' + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"bank_account":"Successfully redacted"}' + http_version: + recorded_at: Thu, 19 Jan 2017 04:44:22 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/bank_accounts_single_2.yml b/spec/fixtures/bank_accounts_single_2.yml new file mode 100644 index 0000000..3bb79b2 --- /dev/null +++ b/spec/fixtures/bank_accounts_single_2.yml @@ -0,0 +1,65 @@ +--- +http_interactions: +- request: + method: get + uri: https://:@test.api.promisepay.com/bank_accounts/a4355e4c-25e4-49e3-88bf-63de71bbbea9 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Faraday v0.11.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Thu, 19 Jan 2017 04:44:20 GMT + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Access-Control-Allow-Headers: + - Origin, Content-Type, Accept, Authorization, Token + Access-Control-Allow-Methods: + - POST, GET, PUT, DELETE, OPTIONS + Access-Control-Allow-Origin: + - "*" + Access-Control-Max-Age: + - '1728000' + Access-Control-Request-Method: + - "*" + Cache-Control: + - max-age=0, private, must-revalidate + Etag: + - W/"09c612afc7b10f01b4b41275ff7bf85d" + Server: + - nginx/1.8.0 + Phusion Passenger 4.0.59 + Status: + - 200 OK + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Powered-By: + - Phusion Passenger 4.0.59 + X-Request-Id: + - fea6add5-977c-4af2-9bca-02bfe89ed25b + X-Runtime: + - '0.268324' + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"bank_accounts":{"id":"a4355e4c-25e4-49e3-88bf-63de71bbbea9","active":true,"created_at":"2017-01-19T04:41:01.747Z","updated_at":"2017-01-19T04:41:01.747Z","verification_status":"not_verified","currency":"AUD","bank":{"bank_name":"Bank + test","country":"AUS","account_name":"Mr x","routing_number":"XXXXX3","account_number":"XXX345","holder_type":"personal","account_type":"savings","direct_debit_authority_status":null},"links":{"self":"/bank_accounts/a4355e4c-25e4-49e3-88bf-63de71bbbea9","users":"/bank_accounts/a4355e4c-25e4-49e3-88bf-63de71bbbea9/users","direct_debit_authorities":"/bank_accounts/a4355e4c-25e4-49e3-88bf-63de71bbbea9/direct_debit_authorities"}}}' + http_version: + recorded_at: Thu, 19 Jan 2017 04:44:20 GMT +recorded_with: VCR 3.0.3 diff --git a/spec/promisepay/models/bank_account_spec.rb b/spec/promisepay/models/bank_account_spec.rb index e812411..9f368f2 100644 --- a/spec/promisepay/models/bank_account_spec.rb +++ b/spec/promisepay/models/bank_account_spec.rb @@ -8,6 +8,12 @@ end end + let(:account2) do + VCR.use_cassette('bank_accounts_single_2') do + client.bank_accounts.find('a4355e4c-25e4-49e3-88bf-63de71bbbea9') + end + end + describe 'user', vcr: { cassette_name: 'bank_accounts_user' } do it 'gives back the account owner' do expect(account.user).to be_a(Promisepay::User) @@ -15,10 +21,15 @@ end describe 'deactivate' do - it 'deactivates the account', vcr: { cassette_name: 'bank_accounts_deactivated' } do + it 'with mobile-pin', vcr: { cassette_name: 'bank_accounts_deactivated' } do expect(account.active).to be(true) account.deactivate('123') expect(account.active).to be(false) end + it 'without mobile-pin', vcr: { cassette_name: 'bank_accounts_deactivated_no_pin'} do + expect(account2.active).to be(true) + account2.deactivate() + expect(account2.active).to be(false) + end end end