spec/integration/errors_spec.rb in currency_cloud-0.9.0 vs spec/integration/errors_spec.rb in currency_cloud-0.10.0
- old
+ new
@@ -1,31 +1,26 @@
require 'spec_helper'
require 'net/http'
describe 'Error', vcr: true do
+ include CurrencyCloud::ErrorUtils
+
before(:each) do
CurrencyCloud.reset_session
CurrencyCloud.environment = :demonstration
- CurrencyCloud.login_id = 'rjnienaber@gmail.com'
- CurrencyCloud.api_key = 'ef0fd50fca1fb14c1fab3a8436b9ecb65f02f129fd87eafa45ded8ae257528f0'
+ CurrencyCloud.login_id = 'development@currencycloud.com'
+ CurrencyCloud.api_key = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
CurrencyCloud.token = nil
end
it 'contains full details for api error' do
CurrencyCloud.login_id = 'non-existent-login-id'
- CurrencyCloud.api_key = 'ef0fd50fca1fb14c1fab3a8436b9ecb57528f0'
+ CurrencyCloud.api_key = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
- error = nil
- begin
- CurrencyCloud.session
- raise 'Should have failed'
- rescue CurrencyCloud::BadRequestError => error
- end
-
expected_error = %{CurrencyCloud::BadRequestError
---
-platform: #{error.platform}
+platform: #{platform}
request:
parameters:
login_id: REDACTED
api_key: REDACTED
verb: post
@@ -39,165 +34,152 @@
code: api_key_length_is_invalid
message: api_key should be 64 character(s) long
params:
length: 64
}
- expect(error.to_s).to eq(expected_error)
+
+ expect { CurrencyCloud.session }.to raise_error(CurrencyCloud::BadRequestError, expected_error)
end
it 'is raised on a bad request' do
CurrencyCloud.login_id = 'non-existent-login-id'
- CurrencyCloud.api_key = 'ef0fd50fca1fb14c1fab3a8436b9ecb57528f0'
+ CurrencyCloud.api_key = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::BadRequestError => error
- end
+ expect(error.code).to eq('auth_invalid_user_login_details')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(400)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('auth_invalid_user_login_details')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(400)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('api_key')
- expect(error_message.code).to eq('api_key_length_is_invalid')
- expect(error_message.message).to eq('api_key should be 64 character(s) long')
- expect(error_message.params).to include('length' => 64)
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('api_key')
+ expect(error_message.code).to eq('api_key_length_is_invalid')
+ expect(error_message.message).to eq('api_key should be 64 character(s) long')
+ expect(error_message.params).to include('length' => 64)
+ end
end
it 'is raised on incorrect authentication details' do
CurrencyCloud.login_id = 'non-existent-login-id'
- CurrencyCloud.api_key = 'efb5ae2af84978b7a37f18dd61c8bbe139b403009faea83484405a3dcb64c4d8'
+ CurrencyCloud.api_key = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::AuthenticationError => error
- end
+ expect(error.code).to eq('auth_failed')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(401)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('auth_failed')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(401)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('username')
- expect(error_message.code).to eq('invalid_supplied_credentials')
- expect(error_message.message).to eq('Authentication failed with the supplied credentials')
- expect(error_message.params).to be_empty
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('username')
+ expect(error_message.code).to eq('invalid_supplied_credentials')
+ expect(error_message.message).to eq('Authentication failed with the supplied credentials')
+ expect(error_message.params).to be_empty
+ end
end
it 'is raised on unexpected error' do
allow(HTTParty).to receive(:post).and_raise(Timeout::Error)
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::UnexpectedError => error
- end
-
- expected_error = %(CurrencyCloud::UnexpectedError
+ expected_error = %(CurrencyCloud::UnexpectedError
---
-platform: #{error.platform}
+platform: #{platform}
request:
parameters:
login_id: REDACTED
api_key: REDACTED
verb: post
url: https://devapi.currencycloud.com/v2/authenticate/api
inner_error: Timeout::Error
)
- expect(error.to_s).to eq(expected_error)
- expect(error.inner_error).to_not be_nil
- expect(error.inner_error.class).to eq(Timeout::Error)
+ expect(error.to_s).to eq(expected_error)
+ expect(error.inner_error).to_not be_nil
+ expect(error.inner_error.class).to eq(Timeout::Error)
+ end
end
it 'is raised on a forbidden request' do
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::ForbiddenError => error
- end
+ expect(error.code).to eq('auth_failed')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(403)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('auth_failed')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(403)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('username')
- expect(error_message.code).to eq('invalid_supplied_credentials')
- expect(error_message.message).to eq('Authentication failed with the supplied credentials')
- expect(error_message.params).to be_empty
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('username')
+ expect(error_message.code).to eq('invalid_supplied_credentials')
+ expect(error_message.message).to eq('Authentication failed with the supplied credentials')
+ expect(error_message.params).to be_empty
+ end
end
it 'is raised when a resource is not found' do
CurrencyCloud.token = '656485646b068f6e9c81e3d885fa54f5'
- error = nil
begin
CurrencyCloud::Beneficiary.retrieve('081596c9-02de-483e-9f2a-4cf55dcdf98c')
- raise 'Should fail'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::NotFoundError => error
- end
+ expect(error.code).to eq('beneficiary_not_found')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(404)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('beneficiary_not_found')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(404)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('id')
- expect(error_message.code).to eq('beneficiary_not_found')
- expect(error_message.message).to eq('Beneficiary was not found for this id')
- expect(error_message.params).to be_empty
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('id')
+ expect(error_message.code).to eq('beneficiary_not_found')
+ expect(error_message.message).to eq('Beneficiary was not found for this id')
+ expect(error_message.params).to be_empty
+ end
end
it 'is raised on an internal server error' do
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::InternalApplicationError => error
- end
+ expect(error.code).to eq('internal_application_error')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(500)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('internal_application_error')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(500)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('base')
- expect(error_message.code).to eq('internal_application_error')
- expect(error_message.message).to eq('A general application error occurred')
- expect(error_message.params).to include('request_id' => 2771875643610572878)
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('base')
+ expect(error_message.code).to eq('internal_application_error')
+ expect(error_message.message).to eq('A general application error occurred')
+ expect(error_message.params).to include('request_id' => 2771875643610572878)
+ end
end
it 'is raised when too many requests have been issued' do
- CurrencyCloud.login_id = 'rjnienaber@gmail.com2'
+ CurrencyCloud.login_id = 'development@currencycloud.com'
- error = nil
begin
CurrencyCloud.session
- raise 'Should have failed'
+ expect(0).to eq 1, 'expected exception that was not raised'
rescue CurrencyCloud::TooManyRequestsError => error
- end
+ expect(error.code).to eq('too_many_requests')
+ expect(error.raw_response).to_not be_nil
+ expect(error.status_code).to eq(429)
+ expect(error.messages.length).to eq(1)
- expect(error.code).to eq('too_many_requests')
- expect(error.raw_response).to_not be_nil
- expect(error.status_code).to eq(429)
- expect(error.messages.length).to eq(1)
-
- error_message = error.messages[0]
- expect(error_message.field).to eq('base')
- expect(error_message.code).to eq('too_many_requests')
- expect(error_message.message).to eq('Too many requests have been made to the api. Please refer to the Developer Center for more information')
- expect(error_message.params).to be_empty
+ error_message = error.messages[0]
+ expect(error_message.field).to eq('base')
+ expect(error_message.code).to eq('too_many_requests')
+ expect(error_message.message).to eq('Too many requests have been made to the api. Please refer to the Developer Center for more information')
+ expect(error_message.params).to be_empty
+ end
end
end