stormpath-sdk 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +3 -3
  4. data/CHANGES.md +8 -0
  5. data/lib/stormpath-sdk.rb +8 -0
  6. data/lib/stormpath-sdk/auth/create_factor.rb +64 -0
  7. data/lib/stormpath-sdk/data_store.rb +17 -1
  8. data/lib/stormpath-sdk/oauth/authenticator.rb +2 -1
  9. data/lib/stormpath-sdk/oauth/challenge_factor_grant.rb +25 -0
  10. data/lib/stormpath-sdk/oauth/challenge_factor_grant_request.rb +16 -0
  11. data/lib/stormpath-sdk/resource/account.rb +6 -0
  12. data/lib/stormpath-sdk/resource/account_link.rb +1 -1
  13. data/lib/stormpath-sdk/resource/challenge.rb +26 -0
  14. data/lib/stormpath-sdk/resource/collection.rb +0 -1
  15. data/lib/stormpath-sdk/resource/directory.rb +1 -0
  16. data/lib/stormpath-sdk/resource/factor.rb +26 -0
  17. data/lib/stormpath-sdk/resource/field.rb +20 -0
  18. data/lib/stormpath-sdk/resource/linked_account.rb +1 -1
  19. data/lib/stormpath-sdk/resource/phone.rb +21 -0
  20. data/lib/stormpath-sdk/resource/schema.rb +21 -0
  21. data/lib/stormpath-sdk/version.rb +2 -2
  22. data/spec/auth/create_factor_spec.rb +92 -0
  23. data/spec/auth/http_basic_authentication_spec.rb +3 -3
  24. data/spec/auth/http_bearer_authentication_spec.rb +3 -3
  25. data/spec/client_spec.rb +25 -25
  26. data/spec/oauth/access_token_authentication_result_spec.rb +3 -3
  27. data/spec/provider/provider_spec.rb +2 -2
  28. data/spec/resource/account_creation_policy_spec.rb +2 -2
  29. data/spec/resource/account_link_spec.rb +2 -2
  30. data/spec/resource/account_spec.rb +196 -12
  31. data/spec/resource/account_store_mapping_spec.rb +3 -3
  32. data/spec/resource/account_store_spec.rb +4 -4
  33. data/spec/resource/api_key_spec.rb +3 -3
  34. data/spec/resource/application_spec.rb +74 -33
  35. data/spec/resource/challenge_spec.rb +53 -0
  36. data/spec/resource/collection_spec.rb +6 -6
  37. data/spec/resource/custom_data_spec.rb +2 -2
  38. data/spec/resource/directory_spec.rb +27 -21
  39. data/spec/resource/email_template_spec.rb +2 -2
  40. data/spec/resource/factor_spec.rb +124 -0
  41. data/spec/resource/field_spec.rb +35 -0
  42. data/spec/resource/group_membership_spec.rb +3 -3
  43. data/spec/resource/group_spec.rb +3 -3
  44. data/spec/resource/linked_account_spec.rb +2 -2
  45. data/spec/resource/organization_spec.rb +6 -6
  46. data/spec/resource/password_policy_spec.rb +2 -2
  47. data/spec/resource/password_strength_spec.rb +2 -2
  48. data/spec/resource/phone_spec.rb +63 -0
  49. data/spec/resource/schema_spec.rb +39 -0
  50. data/spec/resource/status_spec.rb +4 -4
  51. data/spec/spec_helper.rb +6 -3
  52. data/spec/support/custom_data_storage_behavior.rb +2 -2
  53. data/spec/support/mocked_provider_accounts.rb +106 -0
  54. data/spec/support/resource_helpers.rb +20 -16
  55. metadata +16 -2
@@ -28,6 +28,30 @@ module Stormpath
28
28
  MultiJson.dump(STORMPATH_GRANT_RESPONSE)
29
29
  end
30
30
 
31
+ def self.mocked_challenge_factor_grant_response
32
+ MultiJson.dump(STORMPATH_GRANT_RESPONSE)
33
+ end
34
+
35
+ def self.mocked_factor_response
36
+ MultiJson.dump(FACTOR_RESPONSE)
37
+ end
38
+
39
+ def self.mocked_empty_challenge_response
40
+ MultiJson.dump(EMPTY_CHALLENGE_COLLECTION_RESPONSE)
41
+ end
42
+
43
+ def self.mocked_challenges_response
44
+ MultiJson.dump(CHALLENGE_COLLECTION_RESPONSE)
45
+ end
46
+
47
+ def self.mocked_challenge
48
+ MultiJson.dump(CHALLENGE)
49
+ end
50
+
51
+ def self.mocked_successfull_challenge
52
+ MultiJson.dump(SUCCESSFULL_CHALLENGE)
53
+ end
54
+
31
55
  FACEBOOK_ACCOUNT = {
32
56
  href: "https://api.stormpath.com/v1/accounts/7jdiPam0PWES317hwRR5a7",
33
57
  username: "damir.svrtan",
@@ -140,5 +164,87 @@ module Stormpath
140
164
  'expires_in' => 3600,
141
165
  'stormpath_access_token_href' => 'random_href'
142
166
  }.freeze
167
+
168
+ FACTOR_RESPONSE = {
169
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904',
170
+ 'type' => 'SMS',
171
+ 'verificationStatus' => 'UNVERIFIED',
172
+ 'status' => 'ENABLED',
173
+ 'account' => {
174
+ 'href' => 'https://api.stormpath.com/v1/accounts/20959204030'
175
+ },
176
+ 'phone' => {
177
+ 'href' => 'https://api.stormpath.com/v1/phones/28394029583'
178
+ },
179
+ 'mostRecentChallenge' => {
180
+ 'href' => 'https://api.stormpath.com/v1/challenges/70xfDsguePApNdnExample'
181
+ },
182
+ 'challenges' => {
183
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904/challenges'
184
+ }
185
+ }.freeze
186
+
187
+ EMPTY_CHALLENGE_COLLECTION_RESPONSE = {
188
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904/challenges',
189
+ 'type' => 'SMS',
190
+ 'createdAt' => '2016-09-22T21:34:00.881Z',
191
+ 'modifiedAt' => '2016-09-22T21:34:00.881Z',
192
+ 'status' => 'ENABLED',
193
+ 'verificationStatus' => 'UNVERIFIED',
194
+ 'offset' => 0,
195
+ 'limit' => 25,
196
+ 'size' => 0
197
+ }.freeze
198
+
199
+ CHALLENGE_COLLECTION_RESPONSE = {
200
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904/challenges',
201
+ 'type' => 'SMS',
202
+ 'createdAt' => '2016-09-22T21:34:00.881Z',
203
+ 'modifiedAt' => '2016-09-22T21:34:00.881Z',
204
+ 'status' => 'ENABLED',
205
+ 'verificationStatus' => 'UNVERIFIED',
206
+ 'offset' => 0,
207
+ 'limit' => 25,
208
+ 'size' => 1,
209
+ 'items' => [
210
+ {
211
+ 'href' => 'https://api.stormpath.com/v1/challenges/70xfDsguePApNdnExample',
212
+ 'createdAt' => '2016-09-22T22:35:44.799Z',
213
+ 'modifiedAt' => '2016-09-22T22:39:06.822Z',
214
+ 'message' => 'For the sake of example, your code is ${code}.',
215
+ 'factor' => {
216
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904'
217
+ },
218
+ 'account' => {
219
+ 'href' => 'https://api.stormpath.com/v1/accounts/5IvkjoqcYNe3TYMYiX98vc'
220
+ },
221
+ 'status' => 'SUCCESS'
222
+ }
223
+ ]
224
+ }.freeze
225
+
226
+ CHALLENGE = {
227
+ 'href' => 'https://api.stormpath.com/v1/challenges/70xfDsguePApNdnExample',
228
+ 'createdAt' => '2016-09-22T22:35:44.799Z',
229
+ 'modifiedAt' => '2016-09-22T22:39:06.822Z',
230
+ 'message' => 'For the sake of example, your code is ${code}.',
231
+ 'factor' => {
232
+ 'href' => 'https://api.stormpath.com/v1/factors/29300284904'
233
+ },
234
+ 'account' => {
235
+ 'href' => 'https://api.stormpath.com/v1/accounts/5IvkjoqcYNe3TYMYiX98vc'
236
+ },
237
+ 'status' => 'SUCCESS'
238
+ }.freeze
239
+
240
+ SUCCESSFULL_CHALLENGE = {
241
+ 'href' => 'https://api.stormpath.com/v1/challenges/2p5jkx09ykTSDWMmyMDdgU',
242
+ 'createdAt' => '2016-11-17T14:01:40.138Z',
243
+ 'modifiedAt' => '2016-11-17T14:02:38.773Z',
244
+ 'status' => 'SUCCESS',
245
+ 'message' => '${code}',
246
+ 'account' => { 'href' => 'https://api.stormpath.com/v1/accounts/1vxQr1xUSxftDytaO45KH2' },
247
+ 'factor' => { 'href' => 'https://api.stormpath.com/v1/factors/2p5jktg54AATahGvm6MN4Q' }
248
+ }.freeze
143
249
  end
144
250
  end
@@ -1,7 +1,7 @@
1
1
  module Stormpath
2
2
  module Test
3
3
  module ResourceHelpers
4
- def build_account(opts = {})
4
+ def account_attrs(opts = {})
5
5
  opts.tap do |o|
6
6
  if !opts[:email].blank? && opts[:email]
7
7
  if opts[:email].include?('@')
@@ -13,9 +13,9 @@ module Stormpath
13
13
  end
14
14
  o[:username] = (!opts[:username].blank? && opts[:username]) || "ruby#{random_number}"
15
15
  o[:password] = (!opts[:password].blank? && opts[:password]) || 'P@$$w0rd'
16
- o[:surname] = (!opts[:surname].blank? && opts[:surname]) || 'surname'
17
- o[:given_name] = (!opts[:given_name].blank? && opts[:given_name]) || 'givenname'
18
- o[:middle_name] = (!opts[:middle_name].blank? && opts[:middle_name]) || 'middle_name'
16
+ o[:surname] = (!opts[:surname].blank? && opts[:surname]) || 'ruby'
17
+ o[:given_name] = (!opts[:given_name].blank? && opts[:given_name]) || 'ruby'
18
+ o[:middle_name] = (!opts[:middle_name].blank? && opts[:middle_name]) || 'ruby'
19
19
  o[:status] = (!opts[:status].blank? && opts[:status]) || 'ENABLED'
20
20
  end
21
21
  end
@@ -24,30 +24,34 @@ module Stormpath
24
24
  '@testmail.stormpath.com'
25
25
  end
26
26
 
27
- def build_application(opts = {})
27
+ def test_host
28
+ Stormpath::DataStore::DEFAULT_SERVER_HOST
29
+ end
30
+
31
+ def application_attrs(opts = {})
28
32
  opts.tap do |o|
29
- o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby#{random_number}-app"
30
- o[:description] = (!opts[:description].blank? && opts[:description]) || "ruby#{random_number}-desc"
33
+ o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby-app-#{random_number}"
34
+ o[:description] = (!opts[:description].blank? && opts[:description]) || 'ruby desc'
31
35
  end
32
36
  end
33
37
 
34
- def build_directory(opts = {})
38
+ def directory_attrs(opts = {})
35
39
  opts.tap do |o|
36
- o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby#{random_number}-dir"
37
- o[:description] = (!opts[:description].blank? && opts[:description]) || "ruby#{random_number}-desc"
40
+ o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby-dir-#{random_number}"
41
+ o[:description] = (!opts[:description].blank? && opts[:description]) || 'ruby desc'
38
42
  end
39
43
  end
40
44
 
41
- def build_organization(opts = {})
45
+ def organization_attrs(opts = {})
42
46
  opts.tap do |o|
43
- o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby#{random_number}-org"
44
- o[:name_key] = (!opts[:name_key].blank? && opts[:name_key]) || "ruby#{random_number}-org"
47
+ o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby-org-#{random_number}"
48
+ o[:name_key] = (!opts[:name_key].blank? && opts[:name_key]) || "ruby-org-#{random_number}"
45
49
  end
46
50
  end
47
51
 
48
- def build_group(opts = {})
52
+ def group_attrs(opts = {})
49
53
  opts.tap do |o|
50
- o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby#{random_number}-group"
54
+ o[:name] = (!opts[:name].blank? && opts[:name]) || "ruby-group-#{random_number}"
51
55
  end
52
56
  end
53
57
 
@@ -77,7 +81,7 @@ module Stormpath
77
81
  end
78
82
 
79
83
  def random_number
80
- Random.rand(1..10_000)
84
+ SecureRandom.hex(15)
81
85
  end
82
86
  end
83
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stormpath-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stormpath, Inc
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-07 00:00:00.000000000 Z
12
+ date: 2016-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -324,6 +324,7 @@ files:
324
324
  - lib/stormpath-sdk/auth/authentication_result.rb
325
325
  - lib/stormpath-sdk/auth/basic_authenticator.rb
326
326
  - lib/stormpath-sdk/auth/basic_login_attempt.rb
327
+ - lib/stormpath-sdk/auth/create_factor.rb
327
328
  - lib/stormpath-sdk/auth/http_basic_authentication.rb
328
329
  - lib/stormpath-sdk/auth/http_bearer_authentication.rb
329
330
  - lib/stormpath-sdk/auth/username_password_request.rb
@@ -346,6 +347,8 @@ files:
346
347
  - lib/stormpath-sdk/id_site/id_site_result.rb
347
348
  - lib/stormpath-sdk/oauth/access_token_authentication_result.rb
348
349
  - lib/stormpath-sdk/oauth/authenticator.rb
350
+ - lib/stormpath-sdk/oauth/challenge_factor_grant.rb
351
+ - lib/stormpath-sdk/oauth/challenge_factor_grant_request.rb
349
352
  - lib/stormpath-sdk/oauth/client_credentials_grant.rb
350
353
  - lib/stormpath-sdk/oauth/client_credentials_grant_request.rb
351
354
  - lib/stormpath-sdk/oauth/error.rb
@@ -395,6 +398,7 @@ files:
395
398
  - lib/stormpath-sdk/resource/application.rb
396
399
  - lib/stormpath-sdk/resource/associations.rb
397
400
  - lib/stormpath-sdk/resource/base.rb
401
+ - lib/stormpath-sdk/resource/challenge.rb
398
402
  - lib/stormpath-sdk/resource/collection.rb
399
403
  - lib/stormpath-sdk/resource/custom_data.rb
400
404
  - lib/stormpath-sdk/resource/custom_data_hash_methods.rb
@@ -404,6 +408,8 @@ files:
404
408
  - lib/stormpath-sdk/resource/email_verification_token.rb
405
409
  - lib/stormpath-sdk/resource/error.rb
406
410
  - lib/stormpath-sdk/resource/expansion.rb
411
+ - lib/stormpath-sdk/resource/factor.rb
412
+ - lib/stormpath-sdk/resource/field.rb
407
413
  - lib/stormpath-sdk/resource/group.rb
408
414
  - lib/stormpath-sdk/resource/group_membership.rb
409
415
  - lib/stormpath-sdk/resource/instance.rb
@@ -414,7 +420,9 @@ files:
414
420
  - lib/stormpath-sdk/resource/password_policy.rb
415
421
  - lib/stormpath-sdk/resource/password_reset_token.rb
416
422
  - lib/stormpath-sdk/resource/password_strength.rb
423
+ - lib/stormpath-sdk/resource/phone.rb
417
424
  - lib/stormpath-sdk/resource/refresh_token.rb
425
+ - lib/stormpath-sdk/resource/schema.rb
418
426
  - lib/stormpath-sdk/resource/tenant.rb
419
427
  - lib/stormpath-sdk/resource/utils.rb
420
428
  - lib/stormpath-sdk/resource/verification_email.rb
@@ -423,6 +431,7 @@ files:
423
431
  - lib/stormpath-sdk/version.rb
424
432
  - spec/api_key_spec.rb
425
433
  - spec/auth/basic_authenticator_spec.rb
434
+ - spec/auth/create_factor_spec.rb
426
435
  - spec/auth/http_basic_authentication_spec.rb
427
436
  - spec/auth/http_bearer_authentication_spec.rb
428
437
  - spec/auth/sauthc1_signer_spec.rb
@@ -446,17 +455,22 @@ files:
446
455
  - spec/resource/api_key_spec.rb
447
456
  - spec/resource/application_spec.rb
448
457
  - spec/resource/base_spec.rb
458
+ - spec/resource/challenge_spec.rb
449
459
  - spec/resource/collection_spec.rb
450
460
  - spec/resource/custom_data_spec.rb
451
461
  - spec/resource/directory_spec.rb
452
462
  - spec/resource/email_template_spec.rb
453
463
  - spec/resource/expansion_spec.rb
464
+ - spec/resource/factor_spec.rb
465
+ - spec/resource/field_spec.rb
454
466
  - spec/resource/group_membership_spec.rb
455
467
  - spec/resource/group_spec.rb
456
468
  - spec/resource/linked_account_spec.rb
457
469
  - spec/resource/organization_spec.rb
458
470
  - spec/resource/password_policy_spec.rb
459
471
  - spec/resource/password_strength_spec.rb
472
+ - spec/resource/phone_spec.rb
473
+ - spec/resource/schema_spec.rb
460
474
  - spec/resource/status_spec.rb
461
475
  - spec/resource/tenant_spec.rb
462
476
  - spec/spec_helper.rb