passfort 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +17 -0
  3. data/.rubocop.yml +2 -0
  4. data/.ruby-version +1 -0
  5. data/CHANGELOG.md +13 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +89 -0
  8. data/LICENCE.txt +22 -0
  9. data/README.md +6 -0
  10. data/lib/passfort.rb +35 -0
  11. data/lib/passfort/client.rb +23 -0
  12. data/lib/passfort/endpoint.rb +10 -0
  13. data/lib/passfort/endpoint/checks.rb +19 -0
  14. data/lib/passfort/endpoint/profiles.rb +46 -0
  15. data/lib/passfort/endpoint/tasks.rb +16 -0
  16. data/lib/passfort/errors.rb +12 -0
  17. data/lib/passfort/errors/api_error.rb +15 -0
  18. data/lib/passfort/errors/chargeable_limit_reached_error.rb +12 -0
  19. data/lib/passfort/errors/invalid_api_key_error.rb +12 -0
  20. data/lib/passfort/errors/invalid_input_data_error.rb +12 -0
  21. data/lib/passfort/errors/request_error.rb +12 -0
  22. data/lib/passfort/http.rb +60 -0
  23. data/lib/passfort/resource.rb +12 -0
  24. data/lib/passfort/resource/base.rb +21 -0
  25. data/lib/passfort/resource/check.rb +10 -0
  26. data/lib/passfort/resource/company_data.rb +11 -0
  27. data/lib/passfort/resource/individual_data.rb +11 -0
  28. data/lib/passfort/resource/profile.rb +15 -0
  29. data/lib/passfort/resource/task.rb +9 -0
  30. data/lib/passfort/version.rb +5 -0
  31. data/passfort.gemspec +29 -0
  32. data/spec/fixtures/check.json +67 -0
  33. data/spec/fixtures/collected_data.json +7 -0
  34. data/spec/fixtures/company_ownership_check/check.json +78 -0
  35. data/spec/fixtures/company_ownership_check/collected_data.json +7 -0
  36. data/spec/fixtures/company_ownership_check/collected_data_update_request.json +63 -0
  37. data/spec/fixtures/company_ownership_check/profile.json +128 -0
  38. data/spec/fixtures/profile.json +128 -0
  39. data/spec/fixtures/task.json +6 -0
  40. data/spec/integration/company_ownership_check_spec.rb +74 -0
  41. data/spec/passfort/endpoint/checks_spec.rb +22 -0
  42. data/spec/passfort/endpoint/profiles_spec.rb +79 -0
  43. data/spec/passfort/endpoint/tasks_spec.rb +21 -0
  44. data/spec/passfort/http_spec.rb +91 -0
  45. data/spec/spec_helper.rb +9 -0
  46. metadata +200 -0
@@ -0,0 +1,128 @@
1
+ {
2
+ "applications": [
3
+ {
4
+ "approval_blockers": [
5
+ {
6
+ "blocker_type": "INCOMPLETE_TASK",
7
+ "task_type": "COMPANY_VERIFY_IDENTITY"
8
+ },
9
+ {
10
+ "blocker_type": "INCOMPLETE_TASK",
11
+ "task_type": "COMPANY_IDENTIFY_AUTHORIZED_PERSONS"
12
+ },
13
+ {
14
+ "blocker_type": "INCOMPLETE_TASK",
15
+ "task_type": "COMPANY_IDENTIFY_OFFICERS"
16
+ },
17
+ {
18
+ "blocker_type": "INCOMPLETE_TASK",
19
+ "task_type": "COMPANY_IDENTIFY_BENEFICIAL_OWNERS"
20
+ },
21
+ {
22
+ "blocker_type": "INCOMPLETE_TASK",
23
+ "task_type": "COMPANY_ASSESS_SANCTIONS_EXPOSURE"
24
+ },
25
+ {
26
+ "blocker_type": "INCOMPLETE_TASK",
27
+ "task_type": "COMPANY_REVIEW_FILINGS"
28
+ }
29
+ ],
30
+ "history": [
31
+ {
32
+ "date": "2018-01-15 11:39:17",
33
+ "status": "APPLIED"
34
+ }
35
+ ],
36
+ "id": "b83a64ec-f9e8-11e7-82a7-000000000000",
37
+ "product": {
38
+ "id": "eb299330-f63a-11e7-bc01-000000000000",
39
+ "name": "Mortgage"
40
+ },
41
+ "status": "APPLIED"
42
+ }
43
+ ],
44
+ "category": "APPLICANT",
45
+ "checks": [],
46
+ "collected_data": {
47
+ "entity_type": "COMPANY",
48
+ "metadata": {
49
+ "country_of_incorporation": "GBR",
50
+ "number": "09565115"
51
+ }
52
+ },
53
+ "collection_steps": [],
54
+ "display_name": "PassFort Limited",
55
+ "document_images": [],
56
+ "events": [],
57
+ "has_associates": false,
58
+ "has_collection_steps": false,
59
+ "id": "b82b0434-f9e8-11e7-8397-000000000000",
60
+ "linked_to": [],
61
+ "risk": {},
62
+ "role": "COMPANY_CUSTOMER",
63
+ "status": "NORMAL",
64
+ "tags": [],
65
+ "task_progress": {
66
+ "completed_count": 0,
67
+ "total_count": 6
68
+ },
69
+ "task_types": [
70
+ "COMPANY_VERIFY_IDENTITY",
71
+ "COMPANY_IDENTIFY_AUTHORIZED_PERSONS",
72
+ "COMPANY_IDENTIFY_OFFICERS",
73
+ "COMPANY_IDENTIFY_BENEFICIAL_OWNERS",
74
+ "COMPANY_ASSESS_SANCTIONS_EXPOSURE",
75
+ "COMPANY_REVIEW_FILINGS"
76
+ ],
77
+ "tasks": [
78
+ {
79
+ "check_ids": [],
80
+ "creation_date": "2018-01-15 11:39:17",
81
+ "id": "b83e2d7e-f9e8-11e7-8229-000000000000",
82
+ "is_complete": false,
83
+ "is_expired": false,
84
+ "type": "COMPANY_VERIFY_IDENTITY"
85
+ },
86
+ {
87
+ "check_ids": [],
88
+ "creation_date": "2018-01-15 11:39:17",
89
+ "id": "b841b73e-f9e8-11e7-b17f-000000000000",
90
+ "is_complete": false,
91
+ "is_expired": false,
92
+ "type": "COMPANY_IDENTIFY_AUTHORIZED_PERSONS"
93
+ },
94
+ {
95
+ "check_ids": [],
96
+ "creation_date": "2018-01-15 11:39:17",
97
+ "id": "b843d282-f9e8-11e7-b539-000000000000",
98
+ "is_complete": false,
99
+ "is_expired": false,
100
+ "type": "COMPANY_IDENTIFY_OFFICERS"
101
+ },
102
+ {
103
+ "check_ids": [],
104
+ "creation_date": "2018-01-15 11:39:17",
105
+ "id": "b845e7f4-f9e8-11e7-a4d1-000000000000",
106
+ "is_complete": false,
107
+ "is_expired": false,
108
+ "type": "COMPANY_IDENTIFY_BENEFICIAL_OWNERS"
109
+ },
110
+ {
111
+ "check_ids": [],
112
+ "creation_date": "2018-01-15 11:39:17",
113
+ "id": "b8485a78-f9e8-11e7-86ee-000000000000",
114
+ "is_complete": false,
115
+ "is_expired": false,
116
+ "type": "COMPANY_ASSESS_SANCTIONS_EXPOSURE"
117
+ },
118
+ {
119
+ "check_ids": [],
120
+ "creation_date": "2018-01-15 11:39:17",
121
+ "id": "b84ad2de-f9e8-11e7-806b-000000000000",
122
+ "is_complete": false,
123
+ "is_expired": false,
124
+ "type": "COMPANY_REVIEW_FILINGS"
125
+ }
126
+ ],
127
+ "unresolved_event_types": []
128
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "INDIVIDUAL_VERIFY_ADDRESS",
3
+ "check_ids": [],
4
+ "id": "33cdc540-61e0-11e7-b07b-acbc32b67d7b",
5
+ "is_complete": false
6
+ }
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ # https://www.passfort.com/developer/recipes/running-a-company-ownership-check
6
+ # rubocop:disable RSpec/DescribeClass
7
+ # rubocop:disable RSpec/ExampleLength
8
+ RSpec.describe "running a company ownership check" do
9
+ let(:api_key) { "api_key" }
10
+ let(:client) { Passfort::Client.new(api_key: api_key) }
11
+
12
+ let(:profile_fixture) { load_fixture("company_ownership_check/profile.json") }
13
+ let(:check_fixture) { load_fixture("company_ownership_check/check.json") }
14
+ let(:collected_data_fixture) do
15
+ load_fixture("company_ownership_check/collected_data.json")
16
+ end
17
+ let(:collected_data_update_fixture) do
18
+ load_fixture("company_ownership_check/collected_data_update_request.json")
19
+ end
20
+
21
+ let(:profile_id) { JSON.parse(profile_fixture)["id"] }
22
+ let(:create_profile_args) do
23
+ {
24
+ role: Passfort::Role::COMPANY_CUSTOMER,
25
+ collected_data: {
26
+ entity_type: Passfort::EntityType::COMPANY,
27
+ metadata: {
28
+ country_of_incorporation: "GBR",
29
+ number: "09565115",
30
+ },
31
+ },
32
+ }
33
+ end
34
+
35
+ before do
36
+ stub_request(:post, %r{/profiles\z}).
37
+ with(body: create_profile_args).
38
+ to_return(status: 201, body: profile_fixture)
39
+ stub_request(:post, %r{/profiles/#{profile_id}/checks\z}).
40
+ with(body: { check_type: "COMPANY_OWNERSHIP" }).
41
+ to_return(status: 201, body: check_fixture)
42
+ stub_request(:get, %r{/profiles/#{profile_id}/collected_data\z}).
43
+ to_return(
44
+ status: 200,
45
+ body: collected_data_fixture,
46
+ )
47
+ stub_request(:post, %r{/profiles/#{profile_id}/collected_data\z}).
48
+ with(body: JSON.parse(collected_data_update_fixture)).
49
+ to_return(
50
+ status: 200,
51
+ body: collected_data_fixture,
52
+ )
53
+ end
54
+
55
+ it "succeeds" do
56
+ profile = client.profiles.create(create_profile_args)
57
+
58
+ expect(profile.id).to eq(profile_id)
59
+
60
+ check = client.checks.create(profile_id: profile.id, check_type: "COMPANY_OWNERSHIP")
61
+
62
+ shareholders = check.output_data[:ownership_structure][:shareholders]
63
+ beneficial_owners = shareholders.select { |sh| sh[:total_percentage] >= 25 }
64
+
65
+ collected_data = client.profiles.collected_data(profile.id).to_h
66
+
67
+ collected_data[:ownership_structure] ||= {}
68
+ collected_data[:ownership_structure][:shareholders] = beneficial_owners
69
+
70
+ client.profiles.update_collected_data(profile.id, collected_data)
71
+ end
72
+ end
73
+ # rubocop:enable RSpec/DescribeClass
74
+ # rubocop:enable RSpec/ExampleLength
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Passfort::Endpoint::Checks do
6
+ let(:endpoint) { described_class.new(Passfort::Http.new("api_key")) }
7
+
8
+ describe "#create" do
9
+ subject { endpoint.create(profile_id: profile_id, check_type: check_type) }
10
+
11
+ let(:profile_id) { "a_profile_id" }
12
+ let(:check_type) { "a_check_type" }
13
+
14
+ before do
15
+ stub_request(:post, %r{/profiles/#{profile_id}/checks\z}).
16
+ with(body: { check_type: check_type }).
17
+ to_return(status: 200, body: load_fixture("check.json"))
18
+ end
19
+
20
+ it { is_expected.to have_attributes(id: "6c1d594a-496e-11e7-911e-acbc32b67d7b") }
21
+ end
22
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Passfort::Endpoint::Profiles do
6
+ let(:profiles) { described_class.new(client) }
7
+
8
+ let(:client) { instance_double(Passfort::Http) }
9
+
10
+ let(:profile_fixture) { JSON.parse(load_fixture("profile.json")) }
11
+ let(:collected_data_fixture) { JSON.parse(load_fixture("collected_data.json")) }
12
+
13
+ describe "#create" do
14
+ subject { profiles.create(role: role, collected_data: collected_data) }
15
+
16
+ let(:role) { Passfort::Role::COMPANY_CUSTOMER }
17
+ let(:collected_data) { {} }
18
+
19
+ before do
20
+ allow(client).
21
+ to receive(:post).
22
+ with("/profiles", body: { role: role, collected_data: collected_data }).
23
+ and_return(profile_fixture)
24
+ end
25
+
26
+ it { is_expected.to have_attributes(id: profile_fixture["id"]) }
27
+ end
28
+
29
+ describe "#find" do
30
+ subject { profiles.find(id) }
31
+
32
+ let(:id) { profile_fixture["id"] }
33
+
34
+ before do
35
+ allow(client).to receive(:get).with("/profiles/#{id}").and_return(profile_fixture)
36
+ end
37
+
38
+ it { is_expected.to have_attributes(id: id) }
39
+ end
40
+
41
+ describe "#collected_data" do
42
+ subject { profiles.collected_data(id) }
43
+
44
+ let(:id) { profile_fixture["id"] }
45
+
46
+ before do
47
+ allow(client).
48
+ to receive(:get).
49
+ with("/profiles/#{id}/collected_data").
50
+ and_return(collected_data_fixture)
51
+ end
52
+
53
+ it { is_expected.to have_attributes(entity_type: Passfort::EntityType::COMPANY) }
54
+ it { is_expected.to be_a(Passfort::Resource::CompanyData) }
55
+ end
56
+
57
+ describe "#update_collected_data" do
58
+ subject { profiles.update_collected_data(id, data) }
59
+
60
+ let(:id) { profile_fixture["id"] }
61
+ let(:data) do
62
+ collected_data_fixture.merge(metadata: { country_of_incorporation: "FR" })
63
+ end
64
+
65
+ before do
66
+ allow(client).
67
+ to receive(:post).
68
+ with("/profiles/#{id}/collected_data", body: data).
69
+ and_return(data)
70
+ end
71
+
72
+ it do
73
+ is_expected.to have_attributes(
74
+ entity_type: Passfort::EntityType::COMPANY,
75
+ metadata: { country_of_incorporation: "FR" },
76
+ )
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Passfort::Endpoint::Tasks do
6
+ let(:endpoint) { described_class.new(Passfort::Http.new("api_key")) }
7
+
8
+ describe "#find" do
9
+ subject { endpoint.find(profile_id: profile_id, task_id: task_id) }
10
+
11
+ let(:profile_id) { "a_profile_id" }
12
+ let(:task_id) { "a_task_id" }
13
+
14
+ before do
15
+ stub_request(:get, %r{/profiles/#{profile_id}/tasks/#{task_id}\z}).
16
+ to_return(status: 200, body: load_fixture("task.json"))
17
+ end
18
+
19
+ it { is_expected.to have_attributes(id: "33cdc540-61e0-11e7-b07b-acbc32b67d7b") }
20
+ end
21
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Passfort::Http do
6
+ let(:http) { described_class.new("api_key") }
7
+ let(:path) { "a/path" }
8
+
9
+ shared_examples "an API call that handles all errors" do
10
+ let(:api_path) { Passfort::Http::DOMAIN + Passfort::Http::ROOT_PATH + path }
11
+ let(:status) { 200 }
12
+ let(:error_code) { 0 }
13
+ let(:body) { { errors: { code: error_code } }.to_json }
14
+
15
+ before { stub_request(method, api_path). to_return(status: status, body: body) }
16
+
17
+ context "when returning a request error" do
18
+ let(:status) { 404 }
19
+ let(:error_class) { Passfort::Errors::RequestError }
20
+
21
+ it "raises a specific APIError" do
22
+ is_expected.to raise_error(instance_of(error_class))
23
+ end
24
+ end
25
+
26
+ context "when returning an invalid API Key error" do
27
+ let(:error_code) { 204 }
28
+ let(:error_class) { Passfort::Errors::InvalidAPIKeyError }
29
+
30
+ it "raises a specific APIError" do
31
+ is_expected.to raise_error(instance_of(error_class))
32
+ end
33
+ end
34
+
35
+ context "when returning an invalid input data error" do
36
+ let(:error_code) { 201 }
37
+ let(:error_class) { Passfort::Errors::InvalidInputDataError }
38
+
39
+ it "raises a specific APIError" do
40
+ is_expected.to raise_error(instance_of(error_class))
41
+ end
42
+ end
43
+
44
+ context "when returning a chargeable limit reached error" do
45
+ let(:error_code) { 104 }
46
+ let(:error_class) { Passfort::Errors::ChargeableLimitReachedError }
47
+
48
+ it "raises a specific APIError" do
49
+ is_expected.to raise_error(instance_of(error_class))
50
+ end
51
+ end
52
+
53
+ context "when returning an unknown API error" do
54
+ let(:error_code) { 203 }
55
+ let(:error_class) { Passfort::Errors::APIError }
56
+
57
+ it "raises a specific APIError" do
58
+ is_expected.to raise_error(instance_of(error_class))
59
+ end
60
+ end
61
+
62
+ context "when returning a successful result" do
63
+ let(:result) { subject.call }
64
+
65
+ before do
66
+ stub_request(method, api_path).
67
+ to_return(status: status, body: load_fixture("check.json"))
68
+ end
69
+
70
+ it "includes the id response" do
71
+ expect(result).to include("id" => "6c1d594a-496e-11e7-911e-acbc32b67d7b")
72
+ end
73
+ end
74
+ end
75
+
76
+ describe "#get" do
77
+ subject { -> { http.get(path) } }
78
+
79
+ let(:method) { :get }
80
+
81
+ it_behaves_like "an API call that handles all errors"
82
+ end
83
+
84
+ describe "#post" do
85
+ subject { -> { http.post(path, body: {}) } }
86
+
87
+ let(:method) { :post }
88
+
89
+ it_behaves_like "an API call that handles all errors"
90
+ end
91
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "passfort"
4
+ require "pry"
5
+ require "webmock/rspec"
6
+
7
+ def load_fixture(path)
8
+ File.read(File.join(__dir__, "fixtures", path))
9
+ end
metadata ADDED
@@ -0,0 +1,200 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: passfort
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - GoCardless
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: excon
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.60'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.60'
41
+ - !ruby/object:Gem::Dependency
42
+ name: gc_ruboconfig
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec_junit_formatter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.3'
111
+ description:
112
+ email:
113
+ - developers@gocardless.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".circleci/config.yml"
119
+ - ".rubocop.yml"
120
+ - ".ruby-version"
121
+ - CHANGELOG.md
122
+ - Gemfile
123
+ - Gemfile.lock
124
+ - LICENCE.txt
125
+ - README.md
126
+ - lib/passfort.rb
127
+ - lib/passfort/client.rb
128
+ - lib/passfort/endpoint.rb
129
+ - lib/passfort/endpoint/checks.rb
130
+ - lib/passfort/endpoint/profiles.rb
131
+ - lib/passfort/endpoint/tasks.rb
132
+ - lib/passfort/errors.rb
133
+ - lib/passfort/errors/api_error.rb
134
+ - lib/passfort/errors/chargeable_limit_reached_error.rb
135
+ - lib/passfort/errors/invalid_api_key_error.rb
136
+ - lib/passfort/errors/invalid_input_data_error.rb
137
+ - lib/passfort/errors/request_error.rb
138
+ - lib/passfort/http.rb
139
+ - lib/passfort/resource.rb
140
+ - lib/passfort/resource/base.rb
141
+ - lib/passfort/resource/check.rb
142
+ - lib/passfort/resource/company_data.rb
143
+ - lib/passfort/resource/individual_data.rb
144
+ - lib/passfort/resource/profile.rb
145
+ - lib/passfort/resource/task.rb
146
+ - lib/passfort/version.rb
147
+ - passfort.gemspec
148
+ - spec/fixtures/check.json
149
+ - spec/fixtures/collected_data.json
150
+ - spec/fixtures/company_ownership_check/check.json
151
+ - spec/fixtures/company_ownership_check/collected_data.json
152
+ - spec/fixtures/company_ownership_check/collected_data_update_request.json
153
+ - spec/fixtures/company_ownership_check/profile.json
154
+ - spec/fixtures/profile.json
155
+ - spec/fixtures/task.json
156
+ - spec/integration/company_ownership_check_spec.rb
157
+ - spec/passfort/endpoint/checks_spec.rb
158
+ - spec/passfort/endpoint/profiles_spec.rb
159
+ - spec/passfort/endpoint/tasks_spec.rb
160
+ - spec/passfort/http_spec.rb
161
+ - spec/spec_helper.rb
162
+ homepage: https://github.com/gocardless/passfort
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.7.3
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: Client for the PassFort API
186
+ test_files:
187
+ - spec/fixtures/check.json
188
+ - spec/fixtures/collected_data.json
189
+ - spec/fixtures/company_ownership_check/check.json
190
+ - spec/fixtures/company_ownership_check/collected_data.json
191
+ - spec/fixtures/company_ownership_check/collected_data_update_request.json
192
+ - spec/fixtures/company_ownership_check/profile.json
193
+ - spec/fixtures/profile.json
194
+ - spec/fixtures/task.json
195
+ - spec/integration/company_ownership_check_spec.rb
196
+ - spec/passfort/endpoint/checks_spec.rb
197
+ - spec/passfort/endpoint/profiles_spec.rb
198
+ - spec/passfort/endpoint/tasks_spec.rb
199
+ - spec/passfort/http_spec.rb
200
+ - spec/spec_helper.rb