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
@@ -0,0 +1,14 @@
1
+ module Stormpath
2
+ module Resource
3
+ class SamlIdentityProvider < Stormpath::Resource::Instance
4
+ prop_reader :sso_login_endpoint, :signature_algorithm, :sha_fingerprint, :created_at, :modified_at
5
+ prop_accessor :status
6
+
7
+ has_one :metadata, class_name: :samlIdentityProviderMetadata
8
+ has_one :attribute_statement_mapping_rules
9
+ has_one :x509_signing_cert, class_name: :x509Certificate
10
+ has_many :registered_saml_service_providers
11
+ has_many :saml_service_provider_registrations, can: [:get, :create]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module Stormpath
2
+ module Resource
3
+ class SamlIdentityProviderMetadata < Stormpath::Resource::Instance
4
+ prop_reader :entity_id
5
+ belongs_to :identity_provider, class_name: :samlIdentityProvider
6
+ has_one :x509_signing_cert, class_name: :x509Certificate
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module Stormpath
2
+ module Resource
3
+ class SamlPolicy < Stormpath::Resource::Instance
4
+ prop_reader :created_at, :modified_at
5
+
6
+ has_one :service_provider, class_name: :samlServiceProvider
7
+ has_one :identity_provider, class_name: :samlIdentityProvider
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module Stormpath
2
+ module Resource
3
+ class SamlServiceProvider < Stormpath::Resource::Instance
4
+ prop_reader :created_at, :modified_at, :sso_initiation_endpoint
5
+ end
6
+ end
7
+ end
@@ -13,10 +13,11 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- class Stormpath::Provider::SamlMappingRules < Stormpath::Provider::Provider
17
- prop_reader :href, :created_at, :modified_at, :items
18
-
19
- def set_options(options)
20
- set_property :href, options[:href]
16
+ module Stormpath
17
+ module Resource
18
+ class SamlServiceProviderMetadata < Stormpath::Resource::Instance
19
+ prop_reader :href, :created_at, :modified_at, :entity_id, :x509_signing_cert,
20
+ :assertion_consumer_service_post_endpoint
21
+ end
21
22
  end
22
23
  end
@@ -0,0 +1,11 @@
1
+ module Stormpath
2
+ module Resource
3
+ class SamlServiceProviderRegistration < Stormpath::Resource::Instance
4
+ prop_reader :created_at, :modified_at
5
+ prop_accessor :status, :default_relay_state
6
+
7
+ has_one :service_provider, class_name: :registeredSamlServiceProvider
8
+ has_one :identity_provider, class_name: :samlIdentityProvider
9
+ end
10
+ end
11
+ end
@@ -13,9 +13,13 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- class Stormpath::Resource::Schema < Stormpath::Resource::Instance
17
- prop_reader :created_at, :modified_at
16
+ module Stormpath
17
+ module Resource
18
+ class Schema < Stormpath::Resource::Instance
19
+ prop_reader :created_at, :modified_at
18
20
 
19
- has_many :fields
20
- belongs_to :directory
21
+ has_many :fields
22
+ belongs_to :directory
23
+ end
24
+ end
21
25
  end
@@ -13,14 +13,17 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- class Stormpath::Resource::Tenant < Stormpath::Resource::Instance
17
- include Stormpath::Resource::CustomDataStorage
16
+ module Stormpath
17
+ module Resource
18
+ class Tenant < Stormpath::Resource::Instance
19
+ include Stormpath::Resource::CustomDataStorage
18
20
 
19
- prop_reader :name, :key, :created_at, :modified_at
20
-
21
- has_many :applications
22
- has_many :directories
23
- has_many :organizations
24
- has_one :custom_data
21
+ prop_reader :name, :key, :created_at, :modified_at
25
22
 
23
+ has_many :applications
24
+ has_many :directories
25
+ has_many :organizations
26
+ has_one :custom_data
27
+ end
28
+ end
26
29
  end
@@ -13,7 +13,11 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- class Stormpath::Resource::UserInfoMappingRules < Stormpath::Resource::Instance
17
- prop_accessor :items
18
- prop_reader :href, :created_at, :modified_at
16
+ module Stormpath
17
+ module Resource
18
+ class UserInfoMappingRules < Stormpath::Resource::Instance
19
+ prop_accessor :items
20
+ prop_reader :href, :created_at, :modified_at
21
+ end
22
+ end
19
23
  end
@@ -21,16 +21,15 @@ module Stormpath
21
21
 
22
22
  def inspect
23
23
  ''.tap do |str|
24
- str << %Q[#<#{class_name_with_id} @properties={]
24
+ str << %(#<#{class_name_with_id} @properties={)
25
25
  @read_lock.lock
26
26
  begin
27
27
  str << properties.map do |key, value|
28
- if printable_property? key
29
- if value.kind_of? Hash and value.has_key? Stormpath::Resource::Base::HREF_PROP_NAME
30
- value = %Q[{ "#{Stormpath::Resource::Base::HREF_PROP_NAME}" => "#{value[Stormpath::Resource::Base::HREF_PROP_NAME]}" }]
31
- end
32
- %Q["#{key} => #{value}"]
28
+ next unless printable_property? key
29
+ if value.is_a?(Hash) && value.key?(Stormpath::Resource::Base::HREF_PROP_NAME)
30
+ value = %({ "#{Stormpath::Resource::Base::HREF_PROP_NAME}" => "#{value[Stormpath::Resource::Base::HREF_PROP_NAME]}" })
33
31
  end
32
+ %("#{key} => #{value}")
34
33
  end.compact.join(',')
35
34
  ensure
36
35
  @read_lock.unlock
@@ -49,9 +48,7 @@ module Stormpath
49
48
 
50
49
  begin
51
50
  properties_yaml = properties.each do |key, value|
52
- if printable_property? key
53
- " #{key}: #{value} \n"
54
- end
51
+ " #{key}: #{value} \n" if printable_property? key
55
52
  end.compact.join("\n")
56
53
  unless properties_yaml.empty?
57
54
  yaml << " properties\n "
@@ -64,7 +61,7 @@ module Stormpath
64
61
  end
65
62
 
66
63
  def class_name_with_id
67
- object_id_hex = '%x' % (self.object_id << 1)
64
+ object_id_hex = '%x' % (object_id << 1)
68
65
  "#{self.class.name}:0x#{object_id_hex}"
69
66
  end
70
67
  end
@@ -1,5 +1,9 @@
1
- class Stormpath::Resource::VerificationEmail < Stormpath::Resource::Instance
2
- prop_accessor :login, :account_store
1
+ module Stormpath
2
+ module Resource
3
+ class VerificationEmail < Stormpath::Resource::Instance
4
+ prop_accessor :login, :account_store
3
5
 
4
- belongs_to :application
6
+ belongs_to :application
7
+ end
8
+ end
5
9
  end
@@ -0,0 +1,7 @@
1
+ module Stormpath
2
+ module Resource
3
+ class X509Certificate < Stormpath::Resource::Instance
4
+ prop_accessor :encoded_x_509_certificate, :encoded_private_key
5
+ end
6
+ end
7
+ end
@@ -16,13 +16,12 @@
16
16
  module Stormpath
17
17
  module Util
18
18
  module Assert
19
-
20
19
  def assert_not_nil(object, message)
21
20
  raise(ArgumentError, message, caller) if object.nil?
22
21
  end
23
22
 
24
23
  def assert_kind_of(clazz, object, message)
25
- raise(ArgumentError, message, caller) unless object.kind_of? clazz
24
+ raise(ArgumentError, message, caller) unless object.is_a?(clazz)
26
25
  end
27
26
 
28
27
  def assert_true(arg, message)
@@ -32,7 +31,6 @@ module Stormpath
32
31
  def assert_false(arg, message)
33
32
  raise(ArgumentError, message, caller) if arg
34
33
  end
35
-
36
34
  end
37
35
  end
38
36
  end
@@ -14,6 +14,6 @@
14
14
  # limitations under the License.
15
15
  #
16
16
  module Stormpath
17
- VERSION = '1.6.0'
18
- VERSION_DATE = '2017-01-26'
17
+ VERSION = '1.7.0'.freeze
18
+ VERSION_DATE = '2017-02-09'.freeze
19
19
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'BasicAuthenticator', vcr: true do
3
+ describe 'BasicAuthenticator', :vcr do
4
4
  let(:application) { test_api_client.applications.create(application_attrs) }
5
5
  let(:directory) { test_api_client.directories.create(directory_attrs) }
6
6
  let(:directory2) { test_api_client.directories.create(directory_attrs) }
@@ -10,16 +10,14 @@ describe 'BasicAuthenticator', vcr: true do
10
10
  end
11
11
  let(:password) { 'F00barfoo' }
12
12
  let(:invalid_password) { 'Wr00ngPassw0rd' }
13
- let(:dir_account) do
14
- directory.accounts.create(account_attrs(username: 'ruby_cilim_dir', password: password))
15
- end
16
- let(:org_account) do
17
- organization.accounts.create(account_attrs(username: 'ruby_cilim_org', password: password))
18
- end
13
+ let(:dir_account) { directory.accounts.create(account_attrs(password: password)) }
14
+ let(:org_account) { organization.accounts.create(account_attrs(password: password)) }
19
15
  let(:request) do
20
- Stormpath::Authentication::UsernamePasswordRequest.new(account.username,
21
- password,
22
- account_store: account_store)
16
+ Stormpath::Authentication::UsernamePasswordRequest.new(
17
+ account.username,
18
+ password,
19
+ account_store: account_store
20
+ )
23
21
  end
24
22
  let(:authenticate) { authenticator.authenticate(application.href, request) }
25
23
 
@@ -61,8 +59,10 @@ describe 'BasicAuthenticator', vcr: true do
61
59
 
62
60
  context 'wrong password' do
63
61
  let(:request) do
64
- Stormpath::Authentication::UsernamePasswordRequest.new(org_account.username,
65
- invalid_password)
62
+ Stormpath::Authentication::UsernamePasswordRequest.new(
63
+ org_account.username,
64
+ invalid_password
65
+ )
66
66
  end
67
67
 
68
68
  it_behaves_like 'an invalid username or password error'
@@ -75,9 +75,11 @@ describe 'BasicAuthenticator', vcr: true do
75
75
 
76
76
  context 'successful authentication' do
77
77
  let(:request) do
78
- Stormpath::Authentication::UsernamePasswordRequest.new(org_account.username,
79
- password,
80
- account_store: organization)
78
+ Stormpath::Authentication::UsernamePasswordRequest.new(
79
+ org_account.username,
80
+ password,
81
+ account_store: organization
82
+ )
81
83
  end
82
84
 
83
85
  it_should_behave_like 'an AuthenticationResult'
@@ -85,9 +87,11 @@ describe 'BasicAuthenticator', vcr: true do
85
87
 
86
88
  context 'wrong password' do
87
89
  let(:request) do
88
- Stormpath::Authentication::UsernamePasswordRequest.new(org_account.username,
89
- invalid_password,
90
- account_store: organization)
90
+ Stormpath::Authentication::UsernamePasswordRequest.new(
91
+ org_account.username,
92
+ invalid_password,
93
+ account_store: organization
94
+ )
91
95
  end
92
96
 
93
97
  it_behaves_like 'an invalid username or password error'
@@ -97,13 +101,13 @@ describe 'BasicAuthenticator', vcr: true do
97
101
  before { map_account_store(application, directory2, 1, false, false) }
98
102
  after { directory2.delete }
99
103
 
100
- let(:another_account) do
101
- directory2.accounts.create(account_attrs(username: 'ruby-dir-acc', password: password))
102
- end
104
+ let(:another_account) { directory2.accounts.create(account_attrs(password: password)) }
103
105
  let(:request) do
104
- Stormpath::Authentication::UsernamePasswordRequest.new(another_account.username,
105
- password,
106
- account_store: organization)
106
+ Stormpath::Authentication::UsernamePasswordRequest.new(
107
+ another_account.username,
108
+ password,
109
+ account_store: organization
110
+ )
107
111
  end
108
112
 
109
113
  it_behaves_like 'an invalid username or password error'
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'RegisterServiceProvider', vcr: true do
4
+ let(:client) { test_api_client }
5
+ let(:application) { test_api_client.applications.create(application_attrs) }
6
+ let(:identity_provider) { application.saml_policy.identity_provider }
7
+ let(:assertion_consumer_service_url) { "http://example#{random_number}.zendesk.com/access/saml" }
8
+ let(:entity_id) { "unique-name-#{random_number}" }
9
+ let(:registered_service_provider) do
10
+ Stormpath::Authentication::RegisterServiceProvider.new(identity_provider, options).call
11
+ end
12
+ let(:options) do
13
+ {
14
+ assertion_consumer_service_url: assertion_consumer_service_url,
15
+ entity_id: entity_id
16
+ }
17
+ end
18
+
19
+ after { application.delete }
20
+
21
+ describe 'successfull service provider registration' do
22
+ after { registered_service_provider.delete }
23
+
24
+ context 'without optional parameters' do
25
+ it 'should successfully create a registered_service_provider' do
26
+ expect(registered_service_provider).to(
27
+ be_a(Stormpath::Resource::RegisteredSamlServiceProvider)
28
+ )
29
+ end
30
+
31
+ it 'should successfully map the registered_service_provider to the identity_provider' do
32
+ expect(identity_provider.registered_saml_service_providers).to(
33
+ include(registered_service_provider)
34
+ )
35
+ end
36
+ end
37
+
38
+ context 'with optional parameters' do
39
+ before do
40
+ options[:name] = "service-provider-name-#{random_number}"
41
+ options[:description] = 'stormpath example'
42
+ options[:name_id_format] = 'PERSISTENT'
43
+ end
44
+
45
+ it 'should successfully create a registered_service_provider' do
46
+ expect(registered_service_provider).to(
47
+ be_a(Stormpath::Resource::RegisteredSamlServiceProvider)
48
+ )
49
+ end
50
+
51
+ it 'should successfully map the registered_service_provider to the identity_provider' do
52
+ expect(identity_provider.registered_saml_service_providers).to(
53
+ include(registered_service_provider)
54
+ )
55
+ end
56
+ end
57
+ end
58
+
59
+ describe 'unsuccessfull service provider registration' do
60
+ before do
61
+ options.delete(:assertion_consumer_service_url)
62
+ end
63
+
64
+ it 'should raise Stormpath::Error' do
65
+ expect { registered_service_provider }.to raise_error(Stormpath::Error)
66
+ end
67
+ end
68
+ end
@@ -3,10 +3,10 @@ require 'timecop'
3
3
 
4
4
  describe Stormpath::Http::Authc::Sauthc1Signer do
5
5
  let(:fake_uuid_generator) do
6
- Proc.new { 'fake-uuid' }
6
+ proc { 'fake-uuid' }
7
7
  end
8
8
  let(:signer) do
9
- Stormpath::Http::Authc::Sauthc1Signer.new fake_uuid_generator
9
+ Stormpath::Http::Authc::Sauthc1Signer.new(fake_uuid_generator)
10
10
  end
11
11
 
12
12
  after do
@@ -19,11 +19,15 @@ describe Stormpath::Http::Authc::Sauthc1Signer do
19
19
  let(:fake_api_key) { Stormpath::ApiKey.new('foo', 'bar') }
20
20
 
21
21
  let(:empty_query_hash_request) do
22
- Stormpath::Http::Request.new 'get', 'http://example.com/resources/abc123?q=red blue', nil, Hash.new, nil, test_api_key
22
+ Stormpath::Http::Request.new(
23
+ 'get', 'http://example.com/resources/abc123?q=red blue', nil, {}, nil, test_api_key
24
+ )
23
25
  end
24
26
 
25
27
  let(:filled_query_hash_request) do
26
- Stormpath::Http::Request.new 'get', 'http://example.com/resources/abc123', {'q' => 'red blue'}, Hash.new, nil, test_api_key
28
+ Stormpath::Http::Request.new(
29
+ 'get', 'http://example.com/resources/abc123', { 'q' => 'red blue' }, {}, nil, test_api_key
30
+ )
27
31
  end
28
32
 
29
33
  before do
@@ -8,7 +8,7 @@ describe Stormpath::Cache::CacheEntry do
8
8
 
9
9
  context 'by default' do
10
10
  let(:cache_entry) do
11
- Stormpath::Cache::CacheEntry.new 'foo'
11
+ Stormpath::Cache::CacheEntry.new('foo')
12
12
  end
13
13
 
14
14
  let(:now) { Time.now }
@@ -19,19 +19,19 @@ describe Stormpath::Cache::CacheEntry do
19
19
  end
20
20
 
21
21
  it 'initializes the creation time to now' do
22
- #commenting because it passes locally but not on travis :/
23
- #expect(cache_entry.created_at).to eq now
22
+ # commenting because it passes locally but not on travis :/
23
+ # expect(cache_entry.created_at).to eq now
24
24
  end
25
25
 
26
26
  it 'initializes the last accessed time to now' do
27
- #commenting because it passes locally but not on travis :/
28
- #expect(cache_entry.last_accessed_at).to eq now
27
+ # commenting because it passes locally but not on travis :/
28
+ # expect(cache_entry.last_accessed_at).to eq now
29
29
  end
30
30
  end
31
31
 
32
32
  describe '#touch' do
33
33
  let(:cache_entry) do
34
- Stormpath::Cache::CacheEntry.new 'foo'
34
+ Stormpath::Cache::CacheEntry.new('foo')
35
35
  end
36
36
 
37
37
  let(:now) { Time.now }
@@ -42,8 +42,8 @@ describe Stormpath::Cache::CacheEntry do
42
42
  end
43
43
 
44
44
  it 'updates the last accessed at time' do
45
- #commenting because it passes locally but not on travis :/
46
- #expect(cache_entry.last_accessed_at).to eq now
45
+ # commenting because it passes locally but not on travis :/
46
+ # expect(cache_entry.last_accessed_at).to eq now
47
47
  end
48
48
  end
49
49
 
@@ -55,7 +55,7 @@ describe Stormpath::Cache::CacheEntry do
55
55
 
56
56
  context 'has not expired' do
57
57
  let(:cache_entry) do
58
- Stormpath::Cache::CacheEntry.new 'foo'
58
+ Stormpath::Cache::CacheEntry.new('foo')
59
59
  end
60
60
 
61
61
  let(:expired) do
@@ -69,7 +69,7 @@ describe Stormpath::Cache::CacheEntry do
69
69
 
70
70
  context 'when TTL has expired' do
71
71
  before do
72
- cache_entry = Stormpath::Cache::CacheEntry.new 'foo'
72
+ cache_entry = Stormpath::Cache::CacheEntry.new('foo')
73
73
  Timecop.freeze now + ttl_seconds + 1
74
74
 
75
75
  @expired = cache_entry.expired? ttl_seconds, tti_seconds
@@ -82,7 +82,7 @@ describe Stormpath::Cache::CacheEntry do
82
82
 
83
83
  context 'when TTI has expired' do
84
84
  before do
85
- cache_entry = Stormpath::Cache::CacheEntry.new 'foo'
85
+ cache_entry = Stormpath::Cache::CacheEntry.new('foo')
86
86
  Timecop.freeze now + tti_seconds + 1
87
87
 
88
88
  @expired = cache_entry.expired? ttl_seconds, tti_seconds
@@ -96,40 +96,39 @@ describe Stormpath::Cache::CacheEntry do
96
96
 
97
97
  describe '#to_h' do
98
98
  let(:cache_entry) do
99
- Stormpath::Cache::CacheEntry.new 'foo'
99
+ Stormpath::Cache::CacheEntry.new('foo')
100
100
  end
101
101
 
102
102
  let(:now) { Time.now }
103
103
  before { Timecop.freeze now }
104
104
 
105
105
  it 'returns a hash of the attributes' do
106
- expect(cache_entry.to_h).to eq({
106
+ expect(cache_entry.to_h).to eq(
107
107
  'value' => cache_entry.value,
108
108
  'created_at' => cache_entry.created_at,
109
109
  'last_accessed_at' => cache_entry.last_accessed_at
110
- })
110
+ )
111
111
  end
112
112
  end
113
113
 
114
114
  describe '.from_h=' do
115
115
  let(:hash) do
116
116
  {
117
- "value" =>
117
+ 'value' =>
118
118
  {
119
- "href" => "https://api.stormpath.com/v1/applications/app1",
120
- "name" => "application app1",
121
- "tenant" => {
122
- "href" => "https://api.stormpath.com/v1/tenants/ten2"
119
+ 'href' => 'https://api.stormpath.com/v1/applications/app1',
120
+ 'name' => 'application app1',
121
+ 'tenant' => {
122
+ 'href' => 'https://api.stormpath.com/v1/tenants/ten2'
123
123
  },
124
- "groups" =>
125
- {"href" => "https://api.stormpath.com/v1/applications/app3/groups",
126
- "items" =>
127
- [{"href" => "https://api.stormpath.com/v1/groups/gro4"},
128
- {"href" => "https://api.stormpath.com/v1/groups/gro5"}]
129
- }
130
- },
131
- "created_at" => "2013-06-05T10:01:31-07:00",
132
- "last_accessed_at" => "2013-06-05T10:01:31-07:00"
124
+ 'groups' =>
125
+ { 'href' => 'https://api.stormpath.com/v1/applications/app3/groups',
126
+ 'items' =>
127
+ [{ 'href' => 'https://api.stormpath.com/v1/groups/gro4' },
128
+ { 'href' => 'https://api.stormpath.com/v1/groups/gro5' }] }
129
+ },
130
+ 'created_at' => '2013-06-05T10:01:31-07:00',
131
+ 'last_accessed_at' => '2013-06-05T10:01:31-07:00'
133
132
  }
134
133
  end
135
134
 
@@ -157,4 +156,4 @@ describe Stormpath::Cache::CacheEntry do
157
156
  expect(cache_entry.last_accessed_at).to eq last_accessed_at
158
157
  end
159
158
  end
160
- end
159
+ end