trusona 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.ruby-version +1 -1
- data/DEVELOP.md +2 -0
- data/README.md +13 -1
- data/integrations/paired_tru_code_spec.rb +31 -0
- data/integrations/spec_helper.rb +3 -0
- data/integrations/tru_code_spec.rb +8 -37
- data/integrations/user_identifiers_spec.rb +5 -2
- data/lib/trusona.rb +6 -0
- data/lib/trusona/mappers/paired_tru_code_mapper.rb +11 -0
- data/lib/trusona/paired_tru_code.rb +11 -0
- data/lib/trusona/resources/paired_tru_code.rb +14 -0
- data/lib/trusona/services/paired_tru_code_service.rb +12 -0
- data/lib/trusona/tru_code.rb +0 -11
- data/lib/trusona/version.rb +1 -1
- data/lib/trusona/workers/paired_tru_code_finder.rb +17 -0
- data/trusona.gemspec +2 -1
- metadata +26 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dc92807458496cc372e1677fb0ea1ea0b7de6ac
|
4
|
+
data.tar.gz: 2689baece986ce2b1c29e0b5dc5800132365942d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cfb9ab9584badb3eef44d5365facc89a89aa1b0f57ed2159ab209991c5c0e30195da9462fe6069014e4b7833ff8a3bc00c6605d0df7214ab6ede9b8e50c1017
|
7
|
+
data.tar.gz: ebd7c4eff42bd88de0dca65a1f222c829a0e5522ded8a4ebd10f8fd7334275da542b3a9620fb88b987e7b13900eb2b8705d5593b5cbb1dcc08a06bab525c8892
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.3
|
data/DEVELOP.md
CHANGED
@@ -54,6 +54,8 @@ TRUSONA_API_HOST=https://api.staging.trusona.net
|
|
54
54
|
INTEGRATION_TEST_EMAIL=<your UAT email>
|
55
55
|
```
|
56
56
|
|
57
|
+
The token needs to belong to relying party id `5dfc5568-fbd3-4c1c-80f6-d0cf3d9edc82` to work with the existing tests.
|
58
|
+
|
57
59
|
##### Running the tests
|
58
60
|
|
59
61
|
`bundle exec rspec integrations/`
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Easily interact with the Trusona REST API.
|
|
11
11
|
## Requirements
|
12
12
|
The Trusona SDK requires Ruby version 2.4.0 or higher.
|
13
13
|
|
14
|
-
##
|
14
|
+
## Usage
|
15
15
|
|
16
16
|
* [Installation](#installation)
|
17
17
|
* [Configuration](#configuration)
|
@@ -19,6 +19,7 @@ The Trusona SDK requires Ruby version 2.4.0 or higher.
|
|
19
19
|
* [Trusonafications](#trusonafications)
|
20
20
|
* [Devices](#devices)
|
21
21
|
* [Users](#users)
|
22
|
+
* [TruCodes](#trucodes)
|
22
23
|
|
23
24
|
### Installation
|
24
25
|
|
@@ -231,3 +232,14 @@ Trusona.config do |c|
|
|
231
232
|
c.token = ENV['TRUSONA_TOKEN']
|
232
233
|
end
|
233
234
|
```
|
235
|
+
|
236
|
+
### TruCodes
|
237
|
+
|
238
|
+
After a user has scanned a TruCode, it's possible to acquire that user's information by getting the
|
239
|
+
scanned TruCode from the server. The code sample below shows how to do that:
|
240
|
+
|
241
|
+
```ruby
|
242
|
+
tru_code = Trusona::PairedTruCode.find('DB0C0B0B-0DC9-4118-BF73-68AB864E67FF')
|
243
|
+
user_id = tru_code.identifier
|
244
|
+
```
|
245
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Trusona::PairedTruCode do
|
6
|
+
before do
|
7
|
+
Trusona.config do |config|
|
8
|
+
config.token = 'token'
|
9
|
+
config.secret = 'secret'
|
10
|
+
end
|
11
|
+
body =<<EOF
|
12
|
+
{
|
13
|
+
"id": "myid",
|
14
|
+
"identifier": "myidentifier"
|
15
|
+
}
|
16
|
+
EOF
|
17
|
+
signature = 'ODQ1YmVjNTAxNWRhOTFiZTEwMDljOTc4Y2NmOTE4ZDU1YzY0NDQ2YzhkNWJiMjIyMzA0ZjhiYzdlNGI2NjlmNQ=='
|
18
|
+
|
19
|
+
stub_request(:get, 'https://api.trusona.net/api/v2/paired_trucodes/abc123').
|
20
|
+
to_return(status: 200, body: body, headers: {"x-signature" => signature})
|
21
|
+
end
|
22
|
+
context 'a trucode exists and is paired' do
|
23
|
+
it 'loads the trucode' do
|
24
|
+
paired_tru_code = Trusona::PairedTruCode.find('abc123')
|
25
|
+
|
26
|
+
expect(paired_tru_code).not_to be_nil
|
27
|
+
expect(paired_tru_code.id).to eq 'myid'
|
28
|
+
expect(paired_tru_code.identifier).to eq 'myidentifier'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/integrations/spec_helper.rb
CHANGED
@@ -5,6 +5,14 @@ require 'tempfile'
|
|
5
5
|
|
6
6
|
# rubocop:disable Metrics/BlockLength
|
7
7
|
RSpec.describe 'TruCodes' do
|
8
|
+
before do
|
9
|
+
Trusona.config do |c|
|
10
|
+
c.api_host = ENV['TRUSONA_API_HOST']
|
11
|
+
c.secret = ENV['TRUSONA_SECRET']
|
12
|
+
c.token = ENV['TRUSONA_TOKEN']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
8
16
|
describe 'creating a TruCode to show on your website' do
|
9
17
|
before do
|
10
18
|
@reference_id = SecureRandom.uuid
|
@@ -23,43 +31,6 @@ RSpec.describe 'TruCodes' do
|
|
23
31
|
expect(result.id).to be
|
24
32
|
expect(result.payload).to be
|
25
33
|
end
|
26
|
-
|
27
|
-
xdescribe 'and when you want to check the status of that TruCode' do
|
28
|
-
before do
|
29
|
-
@qr = Tempfile.new('tru_code')
|
30
|
-
code = Trusona::Resources::TruCode.new(
|
31
|
-
reference_id: @reference_id,
|
32
|
-
action: 'verify',
|
33
|
-
resource: 'integration-test',
|
34
|
-
level: 1
|
35
|
-
)
|
36
|
-
|
37
|
-
@created = Trusona::TruCode.create(code)
|
38
|
-
end
|
39
|
-
|
40
|
-
after do
|
41
|
-
@qr.close
|
42
|
-
@qr.unlink
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'can be checked by using the tru code resource' do
|
46
|
-
expect { Trusona::TruCode.status(@created) }.to(
|
47
|
-
raise_error(Trusona::ResourceNotFoundError)
|
48
|
-
)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'can be checked by using the tru_code resource' do
|
52
|
-
expect { Trusona::TruCode.status(@created.tru_code) }.to(
|
53
|
-
raise_error(Trusona::ResourceNotFoundError)
|
54
|
-
)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'can be checked by using the tru_code id' do
|
58
|
-
expect { Trusona::TruCode.status(tru_code_id: @created.tru_code.id) }.to(
|
59
|
-
raise_error(Trusona::ResourceNotFoundError)
|
60
|
-
)
|
61
|
-
end
|
62
|
-
end
|
63
34
|
end
|
64
35
|
end
|
65
36
|
# rubocop:enable Metrics/BlockLength
|
@@ -4,10 +4,13 @@ require_relative 'spec_helper'
|
|
4
4
|
|
5
5
|
RSpec.describe 'Trusona User Identifiers' do
|
6
6
|
before do
|
7
|
+
# this depends on existing data in staging. if it fails, try running this:
|
8
|
+
# insert into user_identifiers (identifier, trusona_id, created_at, updated_at, account_handle, relying_party_id)
|
9
|
+
# values ('am9uZXNAdGFjb3MubmV0Cg==', '264683802', now(), now(), uuid_generate_v4(), '5dfc5568-fbd3-4c1c-80f6-d0cf3d9edc82')
|
7
10
|
@identifier = Trusona::Resources::UserIdentifier.new(identifier: 'am9uZXNAdGFjb3MubmV0Cg==', trusona_id: '264683802')
|
8
11
|
end
|
9
12
|
|
10
|
-
describe '
|
13
|
+
describe 'retrieving a user identifier' do
|
11
14
|
context 'when no identifier exists' do
|
12
15
|
it 'then we should see a Trusona::ResourceNotFound error raised' do
|
13
16
|
expect { Trusona::UserIdentifier.find_by(identifier: 'asdf') }.to(
|
@@ -16,7 +19,7 @@ RSpec.describe 'Trusona User Identifiers' do
|
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
19
|
-
|
22
|
+
context 'when a valid identifier exists' do
|
20
23
|
it 'should be successful' do
|
21
24
|
res = Trusona::UserIdentifier.find_by(identifier: @identifier.identifier)
|
22
25
|
expect(res.trusona_id).to eq @identifier.trusona_id
|
data/lib/trusona.rb
CHANGED
@@ -16,6 +16,7 @@ require 'trusona/device_user_binding'
|
|
16
16
|
require 'trusona/identity_document'
|
17
17
|
require 'trusona/device'
|
18
18
|
require 'trusona/user'
|
19
|
+
require 'trusona/paired_tru_code'
|
19
20
|
|
20
21
|
require 'trusona/api/signed_request'
|
21
22
|
require 'trusona/api/verified_response'
|
@@ -34,6 +35,7 @@ require 'trusona/workers/trusonafication_finder'
|
|
34
35
|
require 'trusona/workers/identity_document_finder'
|
35
36
|
require 'trusona/workers/device_finder'
|
36
37
|
require 'trusona/workers/user_deactivator'
|
38
|
+
require 'trusona/workers/paired_tru_code_finder'
|
37
39
|
|
38
40
|
require 'trusona/services/base_service'
|
39
41
|
require 'trusona/services/user_accounts_service'
|
@@ -46,6 +48,7 @@ require 'trusona/services/device_user_bindings_service'
|
|
46
48
|
require 'trusona/services/identity_documents_service'
|
47
49
|
require 'trusona/services/devices_service'
|
48
50
|
require 'trusona/services/users_service'
|
51
|
+
require 'trusona/services/paired_tru_code_service'
|
49
52
|
|
50
53
|
require 'trusona/mappers/base_mapper'
|
51
54
|
require 'trusona/mappers/tru_code_mapper'
|
@@ -58,6 +61,7 @@ require 'trusona/mappers/device_user_binding_mapper'
|
|
58
61
|
require 'trusona/mappers/identity_document_mapper'
|
59
62
|
require 'trusona/mappers/device_mapper'
|
60
63
|
require 'trusona/mappers/user_mapper'
|
64
|
+
require 'trusona/mappers/paired_tru_code_mapper'
|
61
65
|
|
62
66
|
require 'trusona/resources/validators'
|
63
67
|
require 'trusona/resources/base_resource'
|
@@ -70,6 +74,7 @@ require 'trusona/resources/device_user_binding_activation'
|
|
70
74
|
require 'trusona/resources/identity_document'
|
71
75
|
require 'trusona/resources/device'
|
72
76
|
require 'trusona/resources/user'
|
77
|
+
require 'trusona/resources/paired_tru_code'
|
73
78
|
|
74
79
|
# Trusona
|
75
80
|
module Trusona
|
@@ -112,6 +117,7 @@ module Trusona
|
|
112
117
|
yield(@config)
|
113
118
|
end
|
114
119
|
|
120
|
+
raise Trusona::ConfigurationError unless @config
|
115
121
|
@config
|
116
122
|
end
|
117
123
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trusona
|
4
|
+
module Services
|
5
|
+
class PairedTruCodeService < BaseService
|
6
|
+
def initialize(client: Trusona::Api::HTTPClient.new)
|
7
|
+
super(client: client, mapper: Trusona::Mappers::PairedTruCodeMapper.new)
|
8
|
+
@resource_path = '/api/v2/paired_trucodes'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/trusona/tru_code.rb
CHANGED
@@ -20,17 +20,6 @@ module Trusona
|
|
20
20
|
Trusona::Workers::TruCodeFinder.new.find(id)
|
21
21
|
end
|
22
22
|
|
23
|
-
##
|
24
|
-
# Finds a TruCode using its ID
|
25
|
-
#
|
26
|
-
# @param id [String] The id of the TruCode we're looking for
|
27
|
-
# @return [Trusona::Resources::TruCode] The found TruCode
|
28
|
-
# @raise (see .find)
|
29
|
-
#
|
30
|
-
def self.status(id)
|
31
|
-
Trusona::Workers::TruCodeStatus.new.status(id)
|
32
|
-
end
|
33
|
-
|
34
23
|
def self.create(code)
|
35
24
|
Trusona::Workers::TruCodeCreator.new.create(code)
|
36
25
|
end
|
data/lib/trusona/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trusona
|
4
|
+
module Workers
|
5
|
+
class PairedTruCodeFinder
|
6
|
+
def initialize(service: Trusona::Services::PairedTruCodeService.new)
|
7
|
+
@service = service
|
8
|
+
end
|
9
|
+
|
10
|
+
def find(trucode_id)
|
11
|
+
raise 'A TruCode ID is required' unless trucode_id
|
12
|
+
|
13
|
+
@service.get(Trusona::Resources::PairedTruCode.new(id: trucode_id))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/trusona.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
|
30
30
|
|
31
31
|
spec.add_development_dependency 'bump', '~> 0.5'
|
32
|
-
spec.add_development_dependency 'bundler'
|
32
|
+
spec.add_development_dependency 'bundler'
|
33
33
|
spec.add_development_dependency 'dotenv', '~> 2.2'
|
34
34
|
spec.add_development_dependency 'guard', '~> 2.14'
|
35
35
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
@@ -40,4 +40,5 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_development_dependency 'rubocop', '~> 0.49'
|
41
41
|
spec.add_development_dependency 'simplecov', '~> 0.14'
|
42
42
|
spec.add_development_dependency 'yard', '~> 0.9'
|
43
|
+
spec.add_development_dependency 'webmock'
|
43
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trusona
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trusona
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
vbhUT8kOS+bZTalorEol37DD/P4Bbv0fMpw+ozetR2RmwhwTKPKJ5r0oQP6tiqHn
|
36
36
|
hQ==
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2019-05-28 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: httparty
|
@@ -69,16 +69,16 @@ dependencies:
|
|
69
69
|
name: bundler
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '0'
|
75
75
|
type: :development
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '0'
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: dotenv
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,6 +219,20 @@ dependencies:
|
|
219
219
|
- - "~>"
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0.9'
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: webmock
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
type: :development
|
230
|
+
prerelease: false
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
222
236
|
description: Easily interact with the Trusona REST API
|
223
237
|
email:
|
224
238
|
- engineering@trusona.com
|
@@ -243,6 +257,7 @@ files:
|
|
243
257
|
- checksum/trusona-0.16.0.gem.sha512
|
244
258
|
- integrations/device_user_binding_integration_spec.rb
|
245
259
|
- integrations/identity_documents_spec.rb
|
260
|
+
- integrations/paired_tru_code_spec.rb
|
246
261
|
- integrations/spec_helper.rb
|
247
262
|
- integrations/tru_code_spec.rb
|
248
263
|
- integrations/trusonafication_spec.rb
|
@@ -264,16 +279,19 @@ files:
|
|
264
279
|
- lib/trusona/mappers/device_user_binding_mapper.rb
|
265
280
|
- lib/trusona/mappers/identity_document_mapper.rb
|
266
281
|
- lib/trusona/mappers/nil_mapper.rb
|
282
|
+
- lib/trusona/mappers/paired_tru_code_mapper.rb
|
267
283
|
- lib/trusona/mappers/tru_code_mapper.rb
|
268
284
|
- lib/trusona/mappers/trusonafication_mapper.rb
|
269
285
|
- lib/trusona/mappers/user_account_mapper.rb
|
270
286
|
- lib/trusona/mappers/user_identifier_mapper.rb
|
271
287
|
- lib/trusona/mappers/user_mapper.rb
|
288
|
+
- lib/trusona/paired_tru_code.rb
|
272
289
|
- lib/trusona/resources/base_resource.rb
|
273
290
|
- lib/trusona/resources/device.rb
|
274
291
|
- lib/trusona/resources/device_user_binding.rb
|
275
292
|
- lib/trusona/resources/device_user_binding_activation.rb
|
276
293
|
- lib/trusona/resources/identity_document.rb
|
294
|
+
- lib/trusona/resources/paired_tru_code.rb
|
277
295
|
- lib/trusona/resources/tru_code.rb
|
278
296
|
- lib/trusona/resources/trusonafication.rb
|
279
297
|
- lib/trusona/resources/user.rb
|
@@ -285,6 +303,7 @@ files:
|
|
285
303
|
- lib/trusona/services/device_user_bindings_service.rb
|
286
304
|
- lib/trusona/services/devices_service.rb
|
287
305
|
- lib/trusona/services/identity_documents_service.rb
|
306
|
+
- lib/trusona/services/paired_tru_code_service.rb
|
288
307
|
- lib/trusona/services/tru_codes_service.rb
|
289
308
|
- lib/trusona/services/trusonafication_service.rb
|
290
309
|
- lib/trusona/services/user_accounts_service.rb
|
@@ -301,6 +320,7 @@ files:
|
|
301
320
|
- lib/trusona/workers/device_user_binding_activator.rb
|
302
321
|
- lib/trusona/workers/device_user_binding_creator.rb
|
303
322
|
- lib/trusona/workers/identity_document_finder.rb
|
323
|
+
- lib/trusona/workers/paired_tru_code_finder.rb
|
304
324
|
- lib/trusona/workers/tru_code_creator.rb
|
305
325
|
- lib/trusona/workers/tru_code_finder.rb
|
306
326
|
- lib/trusona/workers/trusonafication_creator.rb
|
metadata.gz.sig
CHANGED
Binary file
|