trusona 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|