stormpath-sdk 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +21 -0
  3. data/CHANGES.md +11 -0
  4. data/README.md +23 -25
  5. data/lib/stormpath-sdk.rb +11 -2
  6. data/lib/stormpath-sdk/api_key.rb +0 -1
  7. data/lib/stormpath-sdk/auth/basic_authenticator.rb +7 -7
  8. data/lib/stormpath-sdk/auth/basic_login_attempt.rb +7 -11
  9. data/lib/stormpath-sdk/auth/create_factor.rb +1 -1
  10. data/lib/stormpath-sdk/auth/register_service_provider.rb +41 -0
  11. data/lib/stormpath-sdk/auth/username_password_request.rb +3 -5
  12. data/lib/stormpath-sdk/cache/cache.rb +3 -3
  13. data/lib/stormpath-sdk/cache/cache_entry.rb +2 -2
  14. data/lib/stormpath-sdk/cache/cache_manager.rb +3 -4
  15. data/lib/stormpath-sdk/cache/cache_stats.rb +1 -3
  16. data/lib/stormpath-sdk/cache/disabled_cache_store.rb +5 -8
  17. data/lib/stormpath-sdk/cache/memory_store.rb +1 -1
  18. data/lib/stormpath-sdk/cache/redis_store.rb +4 -4
  19. data/lib/stormpath-sdk/client.rb +35 -33
  20. data/lib/stormpath-sdk/data_store.rb +278 -257
  21. data/lib/stormpath-sdk/error.rb +18 -7
  22. data/lib/stormpath-sdk/http/authc/sauthc1_signer.rb +76 -82
  23. data/lib/stormpath-sdk/http/http_client_request_executor.rb +10 -8
  24. data/lib/stormpath-sdk/http/response.rb +5 -7
  25. data/lib/stormpath-sdk/id_site/id_site_result.rb +5 -6
  26. data/lib/stormpath-sdk/oauth/access_token_authentication_result.rb +5 -9
  27. data/lib/stormpath-sdk/oauth/authenticator.rb +2 -2
  28. data/lib/stormpath-sdk/oauth/error.rb +4 -4
  29. data/lib/stormpath-sdk/oauth/id_site_grant_request.rb +1 -1
  30. data/lib/stormpath-sdk/oauth/password_grant_request.rb +1 -1
  31. data/lib/stormpath-sdk/oauth/refresh_grant_request.rb +2 -2
  32. data/lib/stormpath-sdk/oauth/stormpath_grant_request.rb +2 -2
  33. data/lib/stormpath-sdk/provider/account_access.rb +0 -2
  34. data/lib/stormpath-sdk/provider/account_result.rb +1 -2
  35. data/lib/stormpath-sdk/provider/facebook/facebook_provider.rb +6 -2
  36. data/lib/stormpath-sdk/provider/facebook/facebook_provider_data.rb +7 -3
  37. data/lib/stormpath-sdk/provider/github/github_provider.rb +6 -2
  38. data/lib/stormpath-sdk/provider/github/github_provider_data.rb +6 -2
  39. data/lib/stormpath-sdk/provider/google/google_provider.rb +7 -3
  40. data/lib/stormpath-sdk/provider/google/google_provider_data.rb +6 -2
  41. data/lib/stormpath-sdk/provider/linkedin/linkedin_provider.rb +6 -2
  42. data/lib/stormpath-sdk/provider/linkedin/linkedin_provider_data.rb +6 -2
  43. data/lib/stormpath-sdk/provider/provider.rb +8 -4
  44. data/lib/stormpath-sdk/provider/provider_data.rb +6 -2
  45. data/lib/stormpath-sdk/provider/saml/saml_provider.rb +10 -4
  46. data/lib/stormpath-sdk/provider/saml/saml_provider_data.rb +6 -3
  47. data/lib/stormpath-sdk/provider/stormpath/stormpath_provider.rb +6 -2
  48. data/lib/stormpath-sdk/provider/stormpath/stormpath_provider_data.rb +6 -2
  49. data/lib/stormpath-sdk/provider/twitter/twitter_provider.rb +6 -2
  50. data/lib/stormpath-sdk/provider/twitter/twitter_provider_data.rb +6 -2
  51. data/lib/stormpath-sdk/resource/account.rb +46 -40
  52. data/lib/stormpath-sdk/resource/account_link.rb +9 -5
  53. data/lib/stormpath-sdk/resource/account_linking_policy.rb +8 -4
  54. data/lib/stormpath-sdk/resource/account_membership.rb +1 -1
  55. data/lib/stormpath-sdk/resource/account_overrides.rb +20 -16
  56. data/lib/stormpath-sdk/resource/account_store.rb +15 -11
  57. data/lib/stormpath-sdk/resource/account_store_mapping.rb +14 -13
  58. data/lib/stormpath-sdk/resource/application.rb +147 -136
  59. data/lib/stormpath-sdk/resource/application_web_config.rb +11 -7
  60. data/lib/stormpath-sdk/resource/associations.rb +36 -43
  61. data/lib/stormpath-sdk/resource/attribute_statement_mapping_rules.rb +8 -0
  62. data/lib/stormpath-sdk/resource/base.rb +201 -200
  63. data/lib/stormpath-sdk/resource/challenge.rb +12 -8
  64. data/lib/stormpath-sdk/resource/collection.rb +77 -76
  65. data/lib/stormpath-sdk/resource/custom_data.rb +60 -61
  66. data/lib/stormpath-sdk/resource/custom_data_hash_methods.rb +28 -25
  67. data/lib/stormpath-sdk/resource/custom_data_storage.rb +18 -16
  68. data/lib/stormpath-sdk/resource/directory.rb +37 -60
  69. data/lib/stormpath-sdk/resource/email_verification_token.rb +7 -3
  70. data/lib/stormpath-sdk/resource/error.rb +8 -4
  71. data/lib/stormpath-sdk/resource/expansion.rb +22 -20
  72. data/lib/stormpath-sdk/resource/factor.rb +12 -8
  73. data/lib/stormpath-sdk/resource/field.rb +8 -4
  74. data/lib/stormpath-sdk/resource/group.rb +21 -16
  75. data/lib/stormpath-sdk/resource/group_membership.rb +7 -5
  76. data/lib/stormpath-sdk/resource/instance.rb +10 -6
  77. data/lib/stormpath-sdk/resource/linked_account.rb +7 -3
  78. data/lib/stormpath-sdk/resource/oauth_policy.rb +7 -3
  79. data/lib/stormpath-sdk/resource/organization.rb +14 -10
  80. data/lib/stormpath-sdk/resource/organization_account_store_mapping.rb +8 -4
  81. data/lib/stormpath-sdk/resource/password_reset_token.rb +9 -5
  82. data/lib/stormpath-sdk/resource/phone.rb +8 -4
  83. data/lib/stormpath-sdk/resource/registered_saml_service_provider.rb +8 -0
  84. data/lib/stormpath-sdk/resource/saml_identity_provider.rb +14 -0
  85. data/lib/stormpath-sdk/resource/saml_identity_provider_metadata.rb +9 -0
  86. data/lib/stormpath-sdk/resource/saml_policy.rb +10 -0
  87. data/lib/stormpath-sdk/resource/saml_service_provider.rb +7 -0
  88. data/lib/stormpath-sdk/{provider/saml/saml_mapping_rules.rb → resource/saml_service_provider_metadata.rb} +6 -5
  89. data/lib/stormpath-sdk/resource/saml_service_provider_registration.rb +11 -0
  90. data/lib/stormpath-sdk/resource/schema.rb +8 -4
  91. data/lib/stormpath-sdk/resource/tenant.rb +11 -8
  92. data/lib/stormpath-sdk/resource/user_info_mapping_rules.rb +7 -3
  93. data/lib/stormpath-sdk/resource/utils.rb +7 -10
  94. data/lib/stormpath-sdk/resource/verification_email.rb +7 -3
  95. data/lib/stormpath-sdk/resource/x_509_certificate.rb +7 -0
  96. data/lib/stormpath-sdk/util/assert.rb +1 -3
  97. data/lib/stormpath-sdk/version.rb +2 -2
  98. data/spec/auth/basic_authenticator_spec.rb +28 -24
  99. data/spec/auth/register_service_provider_spec.rb +68 -0
  100. data/spec/auth/sauthc1_signer_spec.rb +8 -4
  101. data/spec/cache/cache_entry_spec.rb +28 -29
  102. data/spec/cache/cache_spec.rb +9 -9
  103. data/spec/cache/cache_stats_spec.rb +1 -1
  104. data/spec/client_spec.rb +63 -63
  105. data/spec/data_store_spec.rb +23 -14
  106. data/spec/oauth/access_token_authentication_result_spec.rb +8 -2
  107. data/spec/provider/account_resolver_spec.rb +6 -4
  108. data/spec/provider/provider_spec.rb +6 -6
  109. data/spec/resource/account_creation_policy_spec.rb +1 -1
  110. data/spec/resource/account_link_spec.rb +7 -15
  111. data/spec/resource/account_spec.rb +17 -17
  112. data/spec/resource/account_store_mapping_spec.rb +16 -22
  113. data/spec/resource/account_store_spec.rb +3 -3
  114. data/spec/resource/application_spec.rb +324 -330
  115. data/spec/resource/base_spec.rb +7 -31
  116. data/spec/resource/collection_spec.rb +63 -114
  117. data/spec/resource/custom_data_spec.rb +1 -1
  118. data/spec/resource/directory_spec.rb +91 -87
  119. data/spec/resource/expansion_spec.rb +10 -10
  120. data/spec/resource/factor_spec.rb +1 -1
  121. data/spec/resource/group_spec.rb +1 -1
  122. data/spec/resource/linked_account_spec.rb +7 -7
  123. data/spec/resource/organization_spec.rb +12 -11
  124. data/spec/resource/phone_spec.rb +1 -1
  125. data/spec/resource/registered_saml_service_provider_spec.rb +35 -0
  126. data/spec/resource/saml_identity_provider_metadata_spec.rb +27 -0
  127. data/spec/resource/saml_identity_provider_spec.rb +94 -0
  128. data/spec/resource/saml_policy_spec.rb +27 -0
  129. data/spec/resource/saml_service_provider_registration_spec.rb +58 -0
  130. data/spec/resource/saml_service_provider_spec.rb +19 -0
  131. data/spec/resource/status_spec.rb +4 -3
  132. data/spec/resource/tenant_spec.rb +4 -6
  133. data/spec/spec_helper.rb +1 -1
  134. data/spec/support/custom_data_save_period.rb +4 -0
  135. data/spec/support/custom_data_storage_behavior.rb +7 -8
  136. data/spec/support/mocked_provider_accounts.rb +101 -101
  137. data/spec/support/mocked_saml_responses.rb +130 -0
  138. data/spec/support/resource_factory.rb +4 -4
  139. data/spec/support/resource_helpers.rb +10 -4
  140. data/spec/support/resource_matchers.rb +4 -4
  141. data/spec/support/test_request_executor.rb +2 -2
  142. metadata +21 -8
  143. data/lib/stormpath-sdk/provider/saml/saml_provider_metadata.rb +0 -19
  144. data/spec/fixtures/response/create_saml_directory.json +0 -26
  145. data/spec/fixtures/response/create_saml_directory_mapping_rules.json +0 -12
  146. data/spec/fixtures/response/get_saml_directory_provider.json +0 -16
  147. data/spec/fixtures/response/get_saml_directory_provider_metadata.json +0 -12
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'timecop'
3
3
 
4
4
  describe Stormpath::Cache::Cache do
5
- let(:cache) { Stormpath::Cache::Cache.new ttl_seconds: 7, tti_seconds: 3 }
5
+ let(:cache) { Stormpath::Cache::Cache.new(ttl_seconds: 7, tti_seconds: 3) }
6
6
  let(:now) { Time.now }
7
7
 
8
8
  before do
@@ -23,7 +23,7 @@ describe Stormpath::Cache::Cache do
23
23
  describe '#get' do
24
24
  context 'miss' do
25
25
  before do
26
- @foo = cache.get 'not-foo'
26
+ @foo = cache.get('not-foo')
27
27
  end
28
28
 
29
29
  it 'gets nil' do
@@ -35,7 +35,7 @@ describe Stormpath::Cache::Cache do
35
35
  context 'live before tti' do
36
36
  before do
37
37
  Timecop.freeze now + 2
38
- @foo = cache.get 'foo'
38
+ @foo = cache.get('foo')
39
39
  end
40
40
 
41
41
  it 'gets bar' do
@@ -47,9 +47,9 @@ describe Stormpath::Cache::Cache do
47
47
  context 'live after tti' do
48
48
  before do
49
49
  Timecop.freeze now + 2
50
- cache.get 'foo'
50
+ cache.get('foo')
51
51
  Timecop.freeze now + 5
52
- @foo = cache.get 'foo'
52
+ @foo = cache.get('foo')
53
53
  end
54
54
 
55
55
  it 'gets bar' do
@@ -61,7 +61,7 @@ describe Stormpath::Cache::Cache do
61
61
  context 'expired by tti' do
62
62
  before do
63
63
  Timecop.freeze now + 4
64
- @foo = cache.get 'foo'
64
+ @foo = cache.get('foo')
65
65
  end
66
66
 
67
67
  it 'gets nil' do
@@ -73,11 +73,11 @@ describe Stormpath::Cache::Cache do
73
73
  context 'expired by ttl' do
74
74
  before do
75
75
  Timecop.freeze now + 2
76
- cache.get 'foo'
76
+ cache.get('foo')
77
77
  Timecop.freeze now + 5
78
- cache.get 'foo'
78
+ cache.get('foo')
79
79
  Timecop.freeze now + 8
80
- @foo = cache.get 'foo'
80
+ @foo = cache.get('foo')
81
81
  end
82
82
 
83
83
  it 'gets nil' do
@@ -103,4 +103,4 @@ describe Stormpath::Cache::CacheStats do
103
103
  end
104
104
  end
105
105
  end
106
- end
106
+ end
@@ -106,7 +106,7 @@ properties
106
106
  end
107
107
  let(:client) do
108
108
  Stormpath::Client.new(
109
- api_key_file_location: api_key_file_location,
109
+ api_key_file_location: api_key_file_location
110
110
  )
111
111
  end
112
112
 
@@ -120,11 +120,13 @@ properties
120
120
  end
121
121
 
122
122
  it 'raises an error' do
123
- expect { client }.to raise_error ArgumentError,
123
+ expect { client }.to raise_error(
124
+ ArgumentError,
124
125
  "No API id in properties. Please provide a 'apiKey.id' property in '" +
125
126
  api_key_file_location +
126
- "' or pass in an 'api_key_id_property_name' to the Stormpath::Client " +
127
- "constructor to specify an alternative property."
127
+ "' or pass in an 'api_key_id_property_name' to the Stormpath::Client " \
128
+ 'constructor to specify an alternative property.'
129
+ )
128
130
  end
129
131
  end
130
132
 
@@ -232,8 +234,8 @@ properties
232
234
  stub_request(:any, api_key_file_location).to_return(body: api_key_and_secret_properties)
233
235
  data_store = client.instance_variable_get '@data_store'
234
236
  cache_manager = data_store.cache_manager
235
- @directories_cache = cache_manager.get_cache 'directories'
236
- @groups_cache = cache_manager.get_cache 'groups'
237
+ @directories_cache = cache_manager.get_cache('directories')
238
+ @groups_cache = cache_manager.get_cache('groups')
237
239
  end
238
240
 
239
241
  it 'passes those params down to the caches' do
@@ -257,7 +259,7 @@ properties
257
259
  end
258
260
 
259
261
  let(:api_key) do
260
- Stormpath::ApiKey.new test_api_key_id, test_api_key_secret
262
+ Stormpath::ApiKey.new(test_api_key_id, test_api_key_secret)
261
263
  end
262
264
 
263
265
  it 'initializes the request executor with the proxy' do
@@ -266,7 +268,7 @@ properties
266
268
  .with(proxy: http_proxy)
267
269
  .and_return request_executor
268
270
 
269
- Stormpath::Client.new api_key: api_key, proxy: http_proxy
271
+ Stormpath::Client.new(api_key: api_key, proxy: http_proxy)
270
272
  end
271
273
  end
272
274
  end
@@ -295,6 +297,7 @@ properties
295
297
  end
296
298
 
297
299
  it 'accepts offset and limit' do
300
+ wait_for_resource_creation
298
301
  expect(test_api_client.applications.limit(2).count).to be >= 3
299
302
  expect(test_api_client.applications.offset(1).limit(2).count).to be >= 2
300
303
  end
@@ -323,7 +326,7 @@ properties
323
326
 
324
327
  context 'expanding a nested single resource' do
325
328
  let(:cached_account) do
326
- client.accounts.get account.href, Stormpath::Resource::Expansion.new('directory')
329
+ client.accounts.get(account.href, Stormpath::Resource::Expansion.new('directory'))
327
330
  end
328
331
 
329
332
  before { client.data_store.initialize_cache({}) }
@@ -336,7 +339,7 @@ properties
336
339
 
337
340
  context 'expanding a nested collection resource' do
338
341
  let(:cached_account) do
339
- client.accounts.get account.href, Stormpath::Resource::Expansion.new('groups')
342
+ client.accounts.get(account.href, Stormpath::Resource::Expansion.new('groups'))
340
343
  end
341
344
  let(:group) { directory.groups.create(group_attrs) }
342
345
 
@@ -350,16 +353,18 @@ properties
350
353
  end
351
354
 
352
355
  context 'search' do
356
+ let(:app_name_1) { "ruby-test-app-#{random_number}" }
357
+ let(:app_name_2) { "ruby-test-app-#{random_number}" }
353
358
  let!(:applications) do
354
359
  [
355
- test_api_client.applications.create(application_attrs(name: 'rubytestapp1')),
356
- test_api_client.applications.create(application_attrs(name: 'rubytestapp2'))
360
+ test_api_client.applications.create(application_attrs(name: app_name_1)),
361
+ test_api_client.applications.create(application_attrs(name: app_name_2))
357
362
  ]
358
363
  end
359
364
 
360
365
  context 'by any attribute' do
361
366
  let(:search_results) do
362
- test_api_client.applications.search('rubytestapp1')
367
+ test_api_client.applications.search(app_name_1)
363
368
  end
364
369
 
365
370
  it 'returns the application' do
@@ -369,7 +374,7 @@ properties
369
374
 
370
375
  context 'by an explicit attribute' do
371
376
  let(:search_results) do
372
- test_api_client.applications.search(name: 'rubytestapp1')
377
+ test_api_client.applications.search(name: app_name_1)
373
378
  end
374
379
 
375
380
  it 'returns the application' do
@@ -381,7 +386,7 @@ properties
381
386
  end
382
387
 
383
388
  describe '.create' do
384
- let(:application_name) { 'rubytestapp' }
389
+ let(:application_name) { "rubyclientcreatespec-#{random_number}" }
385
390
 
386
391
  let(:application_attributes) do
387
392
  {
@@ -391,7 +396,7 @@ properties
391
396
  end
392
397
 
393
398
  context do
394
- let(:application) { test_api_client.applications.create application_attributes }
399
+ let(:application) { test_api_client.applications.create(application_attributes) }
395
400
 
396
401
  it 'creates that application' do
397
402
  expect(application).to be
@@ -403,21 +408,18 @@ properties
403
408
  end
404
409
 
405
410
  describe 'auto directory creation' do
406
- let(:application) { test_api_client.applications.create application_attributes, options }
407
-
408
- let(:directories) do
409
- test_api_client.directories
410
- end
411
+ let(:application) { test_api_client.applications.create(application_attributes, options) }
411
412
 
412
413
  context 'login source' do
414
+ let(:username) { "johnsmith-#{random_number}" }
413
415
  let(:options) { { createDirectory: true } }
414
416
  let!(:account) do
415
417
  application.accounts.create(
416
- account_attrs(username: 'johnsmith2', password: '4P@$$w0rd!')
418
+ account_attrs(username: username, password: '4P@$$w0rd!')
417
419
  )
418
420
  end
419
421
  let(:auth_request) do
420
- Stormpath::Authentication::UsernamePasswordRequest.new 'johnsmith2', '4P@$$w0rd!'
422
+ Stormpath::Authentication::UsernamePasswordRequest.new(username, '4P@$$w0rd!')
421
423
  end
422
424
  let(:auth_result) { application.authenticate_account(auth_request) }
423
425
 
@@ -433,7 +435,7 @@ properties
433
435
 
434
436
  it 'creates directory named by appending "Directory" to app name' do
435
437
  application
436
- expect(directories.map(&:name)).to include("#{application_name} Directory")
438
+ expect(test_api_client.directories.map(&:name)).to include("#{application_name} Directory")
437
439
  end
438
440
 
439
441
  context 'and existing directory' do
@@ -441,7 +443,7 @@ properties
441
443
  test_api_client.directories.each { |d| d.delete if "#{application_name} Directory" == d.name }
442
444
  test_api_client.directories.create(name: "#{application_name} Directory")
443
445
  application
444
- expect(directories.map(&:name)).to include("#{application_name} Directory (2)")
446
+ expect(test_api_client.directories.map(&:name)).to include("#{application_name} Directory (2)")
445
447
  end
446
448
  end
447
449
  end
@@ -451,12 +453,9 @@ properties
451
453
 
452
454
  before { application }
453
455
 
454
- #fails with Stormpath::Error: Authentication required.
455
456
  it 'creates directory named "Client Application Create Test Directory"' do
456
- expect(directories.map(&:name)).to include("#{application_name} Directory")
457
+ expect(test_api_client.directories.map(&:name)).to include("#{application_name} Directory")
457
458
  end
458
-
459
- it 'resolves naming conflict with existing directory throwing Stormpath::Error with status 409 and code 5010'
460
459
  end
461
460
 
462
461
  context 'with directory: ""' do
@@ -477,15 +476,17 @@ properties
477
476
  before { application }
478
477
 
479
478
  it 'creates no directory' do
480
- expect(directories.map(&:name)).not_to include("#{application_name} Directory")
479
+ wait_for_resource_creation
480
+ expect(test_api_client.directories.map(&:name)).not_to include("#{application_name} Directory")
481
481
  end
482
482
  end
483
483
 
484
484
  after(:each) do |example|
485
+ wait_for_resource_creation
485
486
  unless example.metadata[:skip_cleanup]
486
487
  application.delete
487
488
  test_api_client.directories.each do |d|
488
- d.delete if ["#{application_name} Directory", "#{application_name} Directory (2)", "#{application_name} Directory Custom"].include?(d.name)
489
+ d.delete if ["#{application_name} Directory", "#{application_name} Directory (2)"].include?(d.name)
489
490
  end
490
491
  end
491
492
  end
@@ -495,12 +496,12 @@ properties
495
496
 
496
497
  describe '#directories' do
497
498
  context 'given a collection' do
498
- let(:directories) { test_api_client.directories }
499
- let(:directory) { directories.create(directory_attrs) }
499
+ let(:directory) { test_api_client.directories.create(directory_attrs) }
500
500
 
501
501
  it 'returns the collection' do
502
- expect(directories).to be_kind_of(Stormpath::Resource::Collection)
503
- expect(directories.count).to be >= 1
502
+ wait_for_resource_creation
503
+ expect(test_api_client.directories).to be_kind_of(Stormpath::Resource::Collection)
504
+ expect(test_api_client.directories.count).to be >= 1
504
505
  end
505
506
 
506
507
  after { directory.delete }
@@ -516,19 +517,23 @@ properties
516
517
  end
517
518
 
518
519
  it 'should retrieve the number of directories described with the limit' do
520
+ wait_for_resource_creation
519
521
  expect(test_api_client.directories.count).to be >= 2
520
522
  end
521
523
  end
522
524
 
523
525
  describe '.create' do
526
+ let(:directory_name) { "rubysdkdir-#{random_number}" }
524
527
  let(:directory) do
525
- test_api_client.directories.create(directory_attrs(name: 'ruby', description: 'ruby'))
528
+ test_api_client.directories.create(
529
+ directory_attrs(name: directory_name, description: directory_name)
530
+ )
526
531
  end
527
532
 
528
533
  it 'creates that application' do
529
534
  expect(directory).to be
530
- expect(directory.name).to eq('ruby')
531
- expect(directory.description).to eq('ruby')
535
+ expect(directory.name).to eq(directory_name)
536
+ expect(directory.description).to eq(directory_name)
532
537
  end
533
538
 
534
539
  after { directory.delete }
@@ -537,13 +542,13 @@ properties
537
542
 
538
543
  describe '#organization' do
539
544
  context 'search' do
540
- let(:random_org_name) { "ruby-org-#{random_number}" }
545
+ let(:random_name_key) { "ruby-org-#{random_number}" }
541
546
  let!(:organization) do
542
- test_api_client.organizations.create(organization_attrs(name: random_org_name))
547
+ test_api_client.organizations.create(organization_attrs(name: random_name_key))
543
548
  end
544
549
 
545
550
  context 'by any attribute' do
546
- let(:search_results) { test_api_client.organizations.search(random_org_name) }
551
+ let(:search_results) { test_api_client.organizations.search(random_name_key) }
547
552
 
548
553
  it 'returns the application' do
549
554
  expect(search_results.count).to eq 1
@@ -551,7 +556,7 @@ properties
551
556
  end
552
557
 
553
558
  context 'by an explicit attribute' do
554
- let(:search_results) { test_api_client.organizations.search(name: random_org_name) }
559
+ let(:search_results) { test_api_client.organizations.search(name: random_name_key) }
555
560
 
556
561
  it 'returns the application' do
557
562
  expect(search_results.count).to eq 1
@@ -587,17 +592,22 @@ properties
587
592
  end
588
593
 
589
594
  describe '.create' do
595
+ let(:organization_name) { "rubysdkorg#{random_number}" }
590
596
  let(:organization) do
591
- test_api_client.organizations.create(organization_attrs(name: 'ruby',
592
- name_key: 'ruby-org',
593
- description: 'ruby-org'))
597
+ test_api_client.organizations.create(
598
+ organization_attrs(
599
+ name: organization_name,
600
+ name_key: organization_name,
601
+ description: organization_name
602
+ )
603
+ )
594
604
  end
595
605
 
596
606
  it 'creates an organization' do
597
607
  expect(organization).to be
598
- expect(organization.name).to eq('ruby')
599
- expect(organization.name_key).to eq('ruby-org')
600
- expect(organization.description).to eq('ruby-org')
608
+ expect(organization.name).to eq(organization_name)
609
+ expect(organization.name_key).to eq(organization_name)
610
+ expect(organization.description).to eq(organization_name)
601
611
  end
602
612
 
603
613
  after { organization.delete }
@@ -658,27 +668,17 @@ properties
658
668
  end
659
669
 
660
670
  describe '#account_links' do
661
- let(:application) do
662
- test_api_client.applications.create(name: 'ruby sdk app', description: 'ruby sdk desc')
663
- end
664
- let(:directory1) do
665
- test_api_client.directories.create(name: 'ruby sdk dir 1')
666
- end
667
- let(:directory2) do
668
- test_api_client.directories.create(name: 'ruby sdk dir 2')
669
- end
671
+ let(:application) { test_api_client.applications.create(application_attrs) }
672
+ let(:directory1) { test_api_client.directories.create(directory_attrs) }
673
+ let(:directory2) { test_api_client.directories.create(directory_attrs) }
670
674
 
671
675
  before do
672
676
  map_account_store(application, directory1, 1, true, false)
673
677
  map_account_store(application, directory2, 2, false, false)
674
678
  end
675
679
 
676
- let!(:account1) do
677
- directory1.accounts.create(account_attrs(email: 'jekyll', username: 'jekyll'))
678
- end
679
- let!(:account2) do
680
- directory2.accounts.create(account_attrs(email: 'hyde', username: 'hyde'))
681
- end
680
+ let!(:account1) { directory1.accounts.create(account_attrs) }
681
+ let!(:account2) { directory2.accounts.create(account_attrs) }
682
682
 
683
683
  let(:link_accounts) do
684
684
  test_api_client.account_links.create(
@@ -6,9 +6,9 @@ shared_examples 'a data store' do
6
6
  let(:data_store) do
7
7
  Stormpath::DataStore.new(request_executor, test_api_key, store, nil)
8
8
  end
9
- let(:application_cache) { data_store.cache_manager.get_cache 'applications' }
10
- let(:tenant_cache) { data_store.cache_manager.get_cache 'tenants' }
11
- let(:group_cache) { data_store.cache_manager.get_cache 'groups' }
9
+ let(:application_cache) { data_store.cache_manager.get_cache('applications') }
10
+ let(:tenant_cache) { data_store.cache_manager.get_cache('tenants') }
11
+ let(:group_cache) { data_store.cache_manager.get_cache('groups') }
12
12
  let(:default_base_url) { Stormpath::DataStore::DEFAULT_BASE_URL }
13
13
 
14
14
  after do
@@ -22,8 +22,10 @@ shared_examples 'a data store' do
22
22
  end
23
23
 
24
24
  it 'pulls resource name from href if its custom data also' do
25
- region = data_store.send(:region_for,
26
- "#{default_base_url}/v1/accounts/7jWpcEVSgawKkAZp8XDIEw/customData")
25
+ region = data_store.send(
26
+ :region_for,
27
+ "#{default_base_url}/v1/accounts/7jWpcEVSgawKkAZp8XDIEw/customData"
28
+ )
27
29
  expect(region).to eq('customData')
28
30
  end
29
31
  end
@@ -71,7 +73,7 @@ shared_examples 'a data store' do
71
73
  href = resource['href']
72
74
  request_executor.response = MultiJson.dump resource
73
75
  data_store.get_resource href, Stormpath::Resource::Application
74
- @cached = application_cache.get href
76
+ @cached = application_cache.get(href)
75
77
  end
76
78
 
77
79
  it 'caches a shallow resource' do
@@ -109,7 +111,7 @@ shared_examples 'a data store' do
109
111
  href = resource['href']
110
112
  request_executor.response = MultiJson.dump resource
111
113
  data_store.get_resource href, Stormpath::Resource::Application
112
- @cached = application_cache.get href
114
+ @cached = application_cache.get(href)
113
115
  end
114
116
 
115
117
  it 'caches a shallow resource' do
@@ -158,12 +160,14 @@ shared_examples 'a data store' do
158
160
 
159
161
  context '#apply_default_user_agent' do
160
162
  let(:request) do
161
- Stormpath::Http::Request.new('get',
162
- 'http://example.com/resources/abc123',
163
- nil,
164
- {},
165
- nil,
166
- test_api_key)
163
+ Stormpath::Http::Request.new(
164
+ 'get',
165
+ 'http://example.com/resources/abc123',
166
+ nil,
167
+ {},
168
+ nil,
169
+ test_api_key
170
+ )
167
171
  end
168
172
 
169
173
  before do
@@ -187,7 +191,12 @@ describe Stormpath::DataStore do
187
191
  end
188
192
 
189
193
  context 'memcached store' do
190
- let(:store) { { store: Stormpath::Cache::MemcachedStore, store_opts: { host: 'localhost:11211', prefix_key: 'mem' } } }
194
+ let(:store) do
195
+ {
196
+ store: Stormpath::Cache::MemcachedStore,
197
+ store_opts: { host: 'localhost:11211', prefix_key: 'mem' }
198
+ }
199
+ end
191
200
  it_should_behave_like 'a data store'
192
201
  end
193
202
  end