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 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