creditsafe 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +1 -1
- data/lib/creditsafe/client.rb +4 -4
- data/lib/creditsafe/errors.rb +7 -1
- data/lib/creditsafe/messages.rb +14 -0
- data/lib/creditsafe/version.rb +1 -1
- data/spec/creditsafe/client_spec.rb +10 -10
- data/spec/creditsafe/messages_spec.rb +36 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8da2890acd61ed7db41e62b44682b13cf9963203
|
4
|
+
data.tar.gz: 03bdc4029107f5c89556dd0f44b1892ca1d64dc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ae7bd7b7dddfc87b7b7868dcae3696e324b0e5d15ac1a5f924f915a8c1b74c60a60ca0a5e1d4a095fbe63a52dd9cfaf1834a84dcf9d6a991bbb3af3894c3c0
|
7
|
+
data.tar.gz: bb9c7e7e14efd24014efc9270a31a788511f1e1fa9f4b4cf9fe26ab89988f74c9da9c0e4dcfb641e7cb0530a0a91c12f65e360f989e61460006f7e389bd09bcb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v0.2.0, 16 March 2016
|
2
|
+
|
3
|
+
- Subclass `ApiError` to distinguish between different Creditsafe error types
|
4
|
+
(patch by [greysteil](https://github.com/greysteil))
|
5
|
+
|
6
|
+
|
1
7
|
## v0.1.1, 15 February 2016
|
2
8
|
|
3
9
|
- Allow `city` parameter in `find_company` for German company lookups
|
data/Gemfile.lock
CHANGED
data/lib/creditsafe/client.rb
CHANGED
@@ -123,7 +123,7 @@ module Creditsafe
|
|
123
123
|
api_error_message = api_message.message
|
124
124
|
api_error_message += " (#{message.text})" unless message.text.blank?
|
125
125
|
|
126
|
-
raise
|
126
|
+
raise api_message.error_class, api_error_message if api_message.error?
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
@@ -141,12 +141,12 @@ module Creditsafe
|
|
141
141
|
def handle_error(error)
|
142
142
|
raise error
|
143
143
|
rescue Savon::SOAPFault => error
|
144
|
-
raise
|
144
|
+
raise UnknownApiError, error.message
|
145
145
|
rescue Savon::HTTPError => error
|
146
146
|
if error.to_hash[:code] == 401
|
147
|
-
raise
|
147
|
+
raise AccountError, 'Unauthorized: invalid credentials'
|
148
148
|
end
|
149
|
-
raise
|
149
|
+
raise UnknownApiError, error.message
|
150
150
|
rescue Excon::Errors::Error => err
|
151
151
|
raise HttpError, "Error making HTTP request: #{err.message}"
|
152
152
|
end
|
data/lib/creditsafe/errors.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
module Creditsafe
|
2
2
|
class Error < StandardError; end
|
3
3
|
|
4
|
-
class ApiError < Error; end
|
5
4
|
class HttpError < Error; end
|
5
|
+
class ApiError < Error; end
|
6
|
+
|
7
|
+
class DataError < ApiError; end
|
8
|
+
class AccountError < ApiError; end
|
9
|
+
class RequestError < ApiError; end
|
10
|
+
class ProcessingError < ApiError; end
|
11
|
+
class UnknownApiError < ApiError; end
|
6
12
|
end
|
data/lib/creditsafe/messages.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'creditsafe/errors'
|
2
|
+
|
1
3
|
module Creditsafe
|
2
4
|
module Messages
|
3
5
|
class Message
|
@@ -12,6 +14,18 @@ module Creditsafe
|
|
12
14
|
end
|
13
15
|
|
14
16
|
alias error? error
|
17
|
+
|
18
|
+
def error_class
|
19
|
+
return unless error?
|
20
|
+
|
21
|
+
case code[1].to_i
|
22
|
+
when 1 then Creditsafe::DataError
|
23
|
+
when 2 then Creditsafe::AccountError
|
24
|
+
when 3 then Creditsafe::RequestError
|
25
|
+
when 4 then Creditsafe::ProcessingError
|
26
|
+
else Creditsafe::UnknownApiError
|
27
|
+
end
|
28
|
+
end
|
15
29
|
end
|
16
30
|
|
17
31
|
# rubocop:disable Metrics/LineLength
|
data/lib/creditsafe/version.rb
CHANGED
@@ -17,14 +17,14 @@ RSpec.describe(Creditsafe::Client) do
|
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
20
|
-
it 'raises an
|
21
|
-
expect { method_call }.to raise_error(Creditsafe::
|
20
|
+
it 'raises an AccountError' do
|
21
|
+
expect { method_call }.to raise_error(Creditsafe::AccountError)
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'gives a useful error message' do
|
25
25
|
begin
|
26
26
|
method_call
|
27
|
-
rescue Creditsafe::
|
27
|
+
rescue Creditsafe::AccountError => err
|
28
28
|
expect(err.message).to include 'invalid credentials'
|
29
29
|
end
|
30
30
|
end
|
@@ -36,8 +36,8 @@ RSpec.describe(Creditsafe::Client) do
|
|
36
36
|
to_return(body: load_fixture('error-fault.xml'))
|
37
37
|
end
|
38
38
|
|
39
|
-
it 'raises an
|
40
|
-
expect { method_call }.to raise_error(Creditsafe::
|
39
|
+
it 'raises an UnknownApiError' do
|
40
|
+
expect { method_call }.to raise_error(Creditsafe::UnknownApiError)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -170,7 +170,7 @@ RSpec.describe(Creditsafe::Client) do
|
|
170
170
|
it 'gives a useful error, with the specific error in the response' do
|
171
171
|
begin
|
172
172
|
method_call
|
173
|
-
rescue Creditsafe::
|
173
|
+
rescue Creditsafe::RequestError => err
|
174
174
|
expect(err.message).to eq 'Invalid operation parameters ' \
|
175
175
|
'(Invalid countries list specified.)'
|
176
176
|
end
|
@@ -187,7 +187,7 @@ RSpec.describe(Creditsafe::Client) do
|
|
187
187
|
it 'gives a useful error, with the specific error in the response' do
|
188
188
|
begin
|
189
189
|
method_call
|
190
|
-
rescue Creditsafe::
|
190
|
+
rescue Creditsafe::RequestError => err
|
191
191
|
expect(err.message).to eq 'Invalid operation parameters'
|
192
192
|
end
|
193
193
|
end
|
@@ -221,14 +221,14 @@ RSpec.describe(Creditsafe::Client) do
|
|
221
221
|
to_return(body: load_fixture('company-report-not-found.xml'))
|
222
222
|
end
|
223
223
|
|
224
|
-
it '
|
225
|
-
expect { company_report }.to raise_error(Creditsafe::
|
224
|
+
it 'raises an error' do
|
225
|
+
expect { company_report }.to raise_error(Creditsafe::DataError)
|
226
226
|
end
|
227
227
|
|
228
228
|
it 'gives a useful error message' do
|
229
229
|
begin
|
230
230
|
company_report
|
231
|
-
rescue Creditsafe::
|
231
|
+
rescue Creditsafe::DataError => err
|
232
232
|
expect(err.message).to include 'Report unavailable'
|
233
233
|
end
|
234
234
|
end
|
@@ -2,25 +2,28 @@ require 'spec_helper'
|
|
2
2
|
require 'creditsafe/messages'
|
3
3
|
|
4
4
|
RSpec.describe(Creditsafe::Messages) do
|
5
|
-
describe "
|
5
|
+
describe ".for_code" do
|
6
6
|
subject(:message) { described_class.for_code(code) }
|
7
7
|
|
8
8
|
context "for a valid code" do
|
9
9
|
let(:code) { "020101" }
|
10
10
|
its(:code) { is_expected.to eq(code) }
|
11
11
|
its(:message) { is_expected.to eq('Invalid credentials') }
|
12
|
+
its(:error_class) { is_expected.to eq(Creditsafe::AccountError) }
|
12
13
|
end
|
13
14
|
|
14
15
|
context "for a code without leading zero" do
|
15
16
|
let(:code) { "20101" }
|
16
17
|
its(:code) { is_expected.to eq("0#{code}") }
|
17
18
|
its(:message) { is_expected.to eq('Invalid credentials') }
|
19
|
+
its(:error_class) { is_expected.to eq(Creditsafe::AccountError) }
|
18
20
|
end
|
19
21
|
|
20
22
|
context "for an unknown code" do
|
21
23
|
let(:code) { "999999" }
|
22
24
|
its(:code) { is_expected.to eq(code) }
|
23
25
|
its(:message) { is_expected.to eq('Unknown error') }
|
26
|
+
its(:error_class) { is_expected.to eq(Creditsafe::UnknownApiError) }
|
24
27
|
end
|
25
28
|
|
26
29
|
context "for an empty code" do
|
@@ -30,4 +33,36 @@ RSpec.describe(Creditsafe::Messages) do
|
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
36
|
+
|
37
|
+
describe(Creditsafe::Messages::Message) do
|
38
|
+
subject(:message) do
|
39
|
+
described_class.new(code: code, message: text, error: error)
|
40
|
+
end
|
41
|
+
let(:text) { "Error message" }
|
42
|
+
let(:code) { "020101" }
|
43
|
+
let(:error) { true }
|
44
|
+
|
45
|
+
describe "#error_class" do
|
46
|
+
subject { message.error_class }
|
47
|
+
|
48
|
+
context "when there is no error" do
|
49
|
+
let(:error) { false }
|
50
|
+
it { is_expected.to be_nil }
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when there is an error" do
|
54
|
+
let(:error) { true }
|
55
|
+
|
56
|
+
context "for a processing error code" do
|
57
|
+
let(:code) { "040102" }
|
58
|
+
it { is_expected.to eq(Creditsafe::ProcessingError) }
|
59
|
+
end
|
60
|
+
|
61
|
+
context "for an unknown error code" do
|
62
|
+
let(:code) { "060102" }
|
63
|
+
it { is_expected.to eq(Creditsafe::UnknownApiError) }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
33
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: creditsafe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Hamilton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: savon
|