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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d7dcf565b866754150b98eff9c086093ef77bb1
4
- data.tar.gz: 32c9eb74488c07fe534f3c1fc6060bce95c19a19
3
+ metadata.gz: 5dc92807458496cc372e1677fb0ea1ea0b7de6ac
4
+ data.tar.gz: 2689baece986ce2b1c29e0b5dc5800132365942d
5
5
  SHA512:
6
- metadata.gz: 511921672c8a23e8b1d67a58911bfba6329ad9a687e8319eb29a83e380774aedb8a8b4fe00025db150c0412b1fc10dda680511a39d8910966cecb86b02fb14ab
7
- data.tar.gz: 3be6d6bee99c64e6b0c2dd2c7a05afca8b0309d27713e4510ad468a0cfb4c7b8faeee71efd83837109529dd9ce004de0dc57e8b20937b0c8c9296087e5d767cf
6
+ metadata.gz: 0cfb9ab9584badb3eef44d5365facc89a89aa1b0f57ed2159ab209991c5c0e30195da9462fe6069014e4b7833ff8a3bc00c6605d0df7214ab6ede9b8e50c1017
7
+ data.tar.gz: ebd7c4eff42bd88de0dca65a1f222c829a0e5522ded8a4ebd10f8fd7334275da542b3a9620fb88b987e7b13900eb2b8705d5593b5cbb1dcc08a06bab525c8892
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1 +1 @@
1
- 2.5.1
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
- ## Examples
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
@@ -9,6 +9,9 @@ end
9
9
  require 'bundler/setup'
10
10
  require 'trusona'
11
11
  require 'securerandom'
12
+ require 'webmock/rspec'
13
+
14
+ WebMock.allow_net_connect!
12
15
 
13
16
  RSpec.configure do |config|
14
17
  # Enable flags like --only-failures and --next-failure
@@ -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 'retreiving a user identifier' do
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
- xcontext 'when a valid identifier exists' do
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
@@ -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,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Mappers
5
+ class PairedTruCodeMapper < BaseMapper
6
+ def resource
7
+ Trusona::Resources::PairedTruCode
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ ##
5
+ # A TruCode that has already been paired by a device.
6
+ class PairedTruCode
7
+ def self.find(trucode_id)
8
+ Trusona::Workers::PairedTruCodeFinder.new.find(trucode_id)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Resources
5
+ class PairedTruCode < BaseResource
6
+ attr_reader :identifier
7
+
8
+ def initialize(params = {})
9
+ super(params)
10
+ @identifier = params[:identifier]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Trusona
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.0'
5
5
  end
@@ -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
@@ -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', '~> 1.15'
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.0.0
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: 2018-12-21 00:00:00.000000000 Z
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: '1.15'
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: '1.15'
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