stormpath-sdk 1.6.0 → 1.7.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.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f08a60486a9c8f8163b91cacc5ed4190d5f3a81
4
- data.tar.gz: 7ebc9d89ffc3a00137239866b8cb42be81617ac7
3
+ metadata.gz: 2303cf72840fbce8b88103201d799aea7cf1a8d5
4
+ data.tar.gz: 293bf07449a1835f9de1422232ca2404e15ca80b
5
5
  SHA512:
6
- metadata.gz: 8f0f63caa6e142c84858aa23f92f24adc2b7d22802c38b4c472ff0e256b5a60c3328960a621b72dfaf1efd1f5fb446bbd64ab83fd825651a94b8b1e31996b96d
7
- data.tar.gz: 229efc9202e3a12b95f0a2fa9322801c0948eb5678d300c04f3ec38b94d021649f28665707e822704772c150b19560f16e628780eea939b9be81faea536ffeb3
6
+ metadata.gz: f0ff64f44b058d924663658b144e226fc1da20a6432d2587745319bbb8819f563e21733b0b200d7a42a3abcf891b392cec7186b27f2918a05c28b000cae4be30
7
+ data.tar.gz: 1184fc539aef04c498ccf1b97c7afdcf2af0e9fc0b9f97a3d9a6bef763c29d3838ebfe8db57aa8b8c3cc059d722d4246621058d6d2117720ee60a8d8505982c0
@@ -0,0 +1,21 @@
1
+ LineLength:
2
+ Max: 100
3
+
4
+ Documentation:
5
+ Enabled: False
6
+
7
+ Style/FirstMethodArgumentLineBreak:
8
+ Description: >-
9
+ Checks for a line break before the first argument in a
10
+ multi-line method call.
11
+ Enabled: True
12
+
13
+ WordArray:
14
+ Enabled: False
15
+
16
+ AllCops:
17
+ Exclude:
18
+ - 'db/schema.rb'
19
+ - 'db/migrate/*.rb'
20
+ Rails:
21
+ Enabled: true
data/CHANGES.md CHANGED
@@ -1,6 +1,17 @@
1
1
  stormpath-sdk-ruby Changelog
2
2
  ============================
3
3
 
4
+ Version 1.7.0
5
+ -------------
6
+
7
+ Released on February 09, 2017
8
+
9
+ - Implemented SAML IdP
10
+ - AttributeStatementMappingRules is now an association instead of a property
11
+ - Added require_mfa attribute option to the JWT payload
12
+ - Code cleanup and refactoring
13
+
14
+
4
15
  Version 1.6.0
5
16
  -------------
6
17
 
data/README.md CHANGED
@@ -71,9 +71,9 @@ If you have not already done so, register as a developer on
71
71
  URLs you acquired above.
72
72
 
73
73
  ```ruby
74
- application = client.applications.get application_url
74
+ application = client.applications.get(application_url)
75
75
 
76
- directory = client.directories.get directory_url
76
+ directory = client.directories.get(directory_url)
77
77
  ```
78
78
 
79
79
  1. **Create an account for a user** on the directory.
@@ -119,7 +119,7 @@ If you have not already done so, register as a developer on
119
119
  1. **Create a group** in a directory
120
120
 
121
121
  ```ruby
122
- directory.groups.create name: 'Admins'
122
+ directory.groups.create(name: 'Admins')
123
123
  ```
124
124
 
125
125
  1. **Add the account to the group**
@@ -131,7 +131,7 @@ If you have not already done so, register as a developer on
131
131
  1. **Check for account inclusion in group** by reloading the account
132
132
 
133
133
  ```ruby
134
- account = client.accounts.get account.href
134
+ account = client.accounts.get(account.href)
135
135
  is_admin = account.groups.any? { |group| group.name == 'Admins' }
136
136
  ```
137
137
 
@@ -219,9 +219,9 @@ and directories you have registered. You use the client to access them
219
219
  with their REST URL:
220
220
 
221
221
  ```ruby
222
- application = client.applications.get application_url
222
+ application = client.applications.get(application_url)
223
223
 
224
- directory = client.directories.get directory_url
224
+ directory = client.directories.get(directory_url)
225
225
  ```
226
226
 
227
227
  The <code>applications</code> and <code>directories</code> property on a
@@ -237,9 +237,9 @@ Additional resources are <code>accounts</code>, <code>groups</code>,
237
237
  Applications and directories can be created directly off the client.
238
238
 
239
239
  ```ruby
240
- application = client.applications.create name: 'foo', description: 'bar'
240
+ application = client.applications.create(name: 'foo', description: 'bar')
241
241
 
242
- directory = client.directories.create name: 'foo', description: 'bar'
242
+ directory = client.directories.create(name: 'foo', description: 'bar')
243
243
  ```
244
244
 
245
245
  ### Collections
@@ -283,7 +283,7 @@ A resource's children can be eager loaded by passing the entity expansion object
283
283
 
284
284
  ```ruby
285
285
  expansion = Stormpath::Resource::Expansion.new 'groups', 'group_memberships'
286
- client.accounts.get account.href, expansion
286
+ client.accounts.get(account.href, expansion)
287
287
  ```
288
288
 
289
289
  <code>limit</code> and <code>offset</code> can be specified for each child resource by calling <code>add_property</code>.
@@ -292,7 +292,7 @@ client.accounts.get account.href, expansion
292
292
  expansion = Stormpath::Resource::Expansion.new
293
293
  expansion.add_property 'groups', offset: 5, limit: 10
294
294
 
295
- client.accounts.get account.href, expansion
295
+ client.accounts.get(account.href, expansion)
296
296
  ```
297
297
 
298
298
  ### ID Site
@@ -681,7 +681,7 @@ dir_provider.encoded_x509_signing_cert
681
681
  dir_provider.request_signature_algorithm
682
682
  dir_provider.service_provider_metadata
683
683
  dir_provider.attribute_statement_mapping_rules
684
- dir_provider.creted_at
684
+ dir_provider.created_at
685
685
  dir_provider.modified_at
686
686
  ```
687
687
 
@@ -692,13 +692,13 @@ Next you will have to configure your Stormpath-powered application as a Service
692
692
  In order to retrieve the required values, start by sending a GET to the Directory's Provider:
693
693
 
694
694
  ```ruby
695
- directory.provider_metadata
695
+ directory.service_provider_metadata
696
696
  ```
697
697
 
698
- provider_metadata method returns instance of SamlProviderMetadata and you can access the following values
698
+ service_provider_metadata method returns instance of SamlServiceProviderMetadata and you can access the following values
699
699
 
700
700
  ```ruby
701
- dir_provider_metadata = directory.provider_metadata
701
+ dir_provider_metadata = directory.service_provider_metadata
702
702
 
703
703
  dir_provider_metadata.href
704
704
  dir_provider_metadata.entity_id
@@ -764,7 +764,6 @@ The Attribute Assertions (`<saml:AttributeStatement>`) are brought into Stormpat
764
764
  SAML Assertion mapping is defined in an **attributeStatementMappingRules** object found inside the Directory's Provider object, or directly: `/v1/attributeStatementMappingRules/$RULES_ID`.
765
765
 
766
766
  ##### Mapping Rules
767
-
768
767
  The rules have three different components:
769
768
 
770
769
  - **name**: The SAML Attribute name
@@ -774,14 +773,13 @@ The rules have three different components:
774
773
  In order to create the mapping rules, we simply send the following:
775
774
 
776
775
  ```ruby
777
- mappings = Stormpath::Provider::SamlMappingRules.new(items: [
778
- {
779
- name: "uid",
780
- account_attributes: ["username"]
781
- }
782
- ])
776
+ rule = {
777
+ 'name' => 'uid',
778
+ 'accountAttributes' => ['username']
779
+ }
783
780
 
784
- dir.create_attribute_mappings(mappings)
781
+ dir.attribute_statement_mapping_rules.items = [rule]
782
+ dir.attribute_statement_mapping_rules.save
785
783
  ```
786
784
 
787
785
  ### Password Reset
@@ -849,7 +847,7 @@ You can create groups and assign them to accounts using the Stormpath
849
847
  web console, or programmatically. Groups are created on directories:
850
848
 
851
849
  ```ruby
852
- group = directory.groups.create name: 'administrators'
850
+ group = directory.groups.create(name: 'administrators')
853
851
  ```
854
852
 
855
853
  Group membership can be created by:
@@ -857,7 +855,7 @@ Group membership can be created by:
857
855
  * Explicitly creating a group membership resource with your client:
858
856
 
859
857
  ```ruby
860
- group_membership = client.group_memberships.create group: group, account: account
858
+ group_membership = client.group_memberships.create(group: group, account: account)
861
859
  ```
862
860
 
863
861
  * Using the <code>add_group</code> method on the account instance:
@@ -903,7 +901,7 @@ An `Organization` is a top-level container for Account Stores. You can think of
903
901
  * Adding an Organization to an Application as an Account Store
904
902
 
905
903
  ```ruby
906
- client.account_store_mappings.create application: application, account_store: organization
904
+ client.account_store_mappings.create(application: application, account_store: organization)
907
905
  ```
908
906
 
909
907
 
@@ -40,6 +40,15 @@ module Stormpath
40
40
  autoload :AccountLink, 'stormpath-sdk/resource/account_link'
41
41
  autoload :AccountLinkingPolicy, 'stormpath-sdk/resource/account_linking_policy'
42
42
  autoload :Application, 'stormpath-sdk/resource/application'
43
+ autoload :SamlServiceProviderMetadata, 'stormpath-sdk/resource/saml_service_provider_metadata'
44
+ autoload :SamlPolicy, 'stormpath-sdk/resource/saml_policy'
45
+ autoload :SamlServiceProvider, 'stormpath-sdk/resource/saml_service_provider'
46
+ autoload :SsoInitiationEndpoint, 'stormpath-sdk/resource/sso_initiation_endpoint'
47
+ autoload :SamlIdentityProvider, 'stormpath-sdk/resource/saml_identity_provider'
48
+ autoload :RegisteredSamlServiceProvider, 'stormpath-sdk/resource/registered_saml_service_provider'
49
+ autoload :SamlServiceProviderRegistration, 'stormpath-sdk/resource/saml_service_provider_registration'
50
+ autoload :SamlIdentityProviderMetadata, 'stormpath-sdk/resource/saml_identity_provider_metadata'
51
+ autoload :X509Certificate, 'stormpath-sdk/resource/x_509_certificate'
43
52
  autoload :Directory, 'stormpath-sdk/resource/directory'
44
53
  autoload :Account, 'stormpath-sdk/resource/account'
45
54
  autoload :AccountStore, 'stormpath-sdk/resource/account_store'
@@ -68,6 +77,7 @@ module Stormpath
68
77
  autoload :Schema, 'stormpath-sdk/resource/schema'
69
78
  autoload :Field, 'stormpath-sdk/resource/field'
70
79
  autoload :UserInfoMappingRules, 'stormpath-sdk/resource/user_info_mapping_rules'
80
+ autoload :AttributeStatementMappingRules, 'stormpath-sdk/resource/attribute_statement_mapping_rules'
71
81
  end
72
82
 
73
83
  module Cache
@@ -89,6 +99,7 @@ module Stormpath
89
99
  autoload :HttpBasicAuthentication, 'stormpath-sdk/auth/http_basic_authentication'
90
100
  autoload :HttpBearerAuthentication, 'stormpath-sdk/auth/http_bearer_authentication'
91
101
  autoload :CreateFactor, 'stormpath-sdk/auth/create_factor'
102
+ autoload :RegisterServiceProvider, 'stormpath-sdk/auth/register_service_provider'
92
103
  end
93
104
 
94
105
  module Provider
@@ -110,8 +121,6 @@ module Stormpath
110
121
  autoload :TwitterProviderData, 'stormpath-sdk/provider/twitter/twitter_provider_data'
111
122
  autoload :SamlProvider, 'stormpath-sdk/provider/saml/saml_provider'
112
123
  autoload :SamlProviderData, 'stormpath-sdk/provider/saml/saml_provider_data'
113
- autoload :SamlProviderMetadata, 'stormpath-sdk/provider/saml/saml_provider_metadata'
114
- autoload :SamlMappingRules, 'stormpath-sdk/provider/saml/saml_mapping_rules'
115
124
  autoload :StormpathProvider, 'stormpath-sdk/provider/stormpath/stormpath_provider'
116
125
  autoload :StormpathProviderData, 'stormpath-sdk/provider/stormpath/stormpath_provider_data'
117
126
  end
@@ -23,4 +23,3 @@ module Stormpath
23
23
  end
24
24
  end
25
25
  end
26
-
@@ -18,16 +18,16 @@ module Stormpath
18
18
  class BasicAuthenticator
19
19
  include Stormpath::Util::Assert
20
20
 
21
- def initialize data_store
21
+ def initialize(data_store)
22
22
  @data_store = data_store
23
23
  end
24
24
 
25
- def authenticate parent_href, request
26
- assert_not_nil parent_href, "parentHref argument must be specified"
27
- assert_kind_of UsernamePasswordRequest, request, "Only UsernamePasswordRequest instances are supported."
25
+ def authenticate(parent_href, request)
26
+ assert_not_nil parent_href, 'parentHref argument must be specified'
27
+ assert_kind_of UsernamePasswordRequest, request, 'Only UsernamePasswordRequest instances are supported.'
28
28
 
29
29
  username = request.principals
30
- username = username || ''
30
+ username ||= ''
31
31
 
32
32
  password = request.credentials
33
33
  pw_string = password.join
@@ -36,7 +36,7 @@ module Stormpath
36
36
 
37
37
  value = Base64.encode64(value).tr("\n", '')
38
38
 
39
- attempt = @data_store.instantiate BasicLoginAttempt, nil
39
+ attempt = @data_store.instantiate(BasicLoginAttempt, nil)
40
40
  attempt.type = 'basic'
41
41
  attempt.value = value
42
42
 
@@ -44,7 +44,7 @@ module Stormpath
44
44
 
45
45
  href = parent_href + '/loginAttempts'
46
46
 
47
- @data_store.create href, attempt, AuthenticationResult
47
+ @data_store.create(href, attempt, AuthenticationResult)
48
48
  end
49
49
  end
50
50
  end
@@ -16,22 +16,21 @@
16
16
  module Stormpath
17
17
  module Authentication
18
18
  class BasicLoginAttempt < Stormpath::Resource::Base
19
-
20
- TYPE = "type"
21
- VALUE = "value"
22
- ACCOUNT_STORE = "account_store"
19
+ TYPE = 'type'.freeze
20
+ VALUE = 'value'.freeze
21
+ ACCOUNT_STORE = 'account_store'.freeze
23
22
 
24
23
  def account_store
25
24
  get_property ACCOUNT_STORE
26
25
  end
27
26
 
28
27
  def account_store=(account_store)
29
- if account_store.kind_of? Stormpath::Resource::Base
30
- set_property ACCOUNT_STORE, {HREF_PROP_NAME => account_store.href}
31
- elsif account_store.kind_of? Hash
28
+ if account_store.is_a? Stormpath::Resource::Base
29
+ set_property ACCOUNT_STORE, HREF_PROP_NAME => account_store.href
30
+ elsif account_store.is_a? Hash
32
31
  set_property ACCOUNT_STORE, sanitize(account_store)
33
32
  else
34
- fail ArgumentError, 'account_store should be a Stormpath::Resource::Instance or a Hash'
33
+ raise ArgumentError, 'account_store should be a Stormpath::Resource::Instance or a Hash'
35
34
  end
36
35
  end
37
36
 
@@ -50,9 +49,6 @@ module Stormpath
50
49
  def value=(value)
51
50
  set_property VALUE, value
52
51
  end
53
-
54
52
  end
55
-
56
53
  end
57
-
58
54
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright 2012 Stormpath, Inc.
2
+ # Copyright 2016 Stormpath, Inc.
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
5
5
  # you may not use this file except in compliance with the License.
@@ -0,0 +1,41 @@
1
+ module Stormpath
2
+ module Authentication
3
+ class RegisterServiceProvider
4
+ attr_reader :client, :identity_provider, :options
5
+
6
+ def initialize(identity_provider, options = {})
7
+ @client = identity_provider.client
8
+ @identity_provider = identity_provider
9
+ @options = options
10
+ end
11
+
12
+ def call
13
+ map_identity_provider_and_registered_service_provider
14
+ registered_service_provider
15
+ end
16
+
17
+ private
18
+
19
+ def map_identity_provider_and_registered_service_provider
20
+ identity_provider.saml_service_provider_registrations.create(
21
+ service_provider: { href: registered_service_provider.href }
22
+ )
23
+ end
24
+
25
+ def registered_service_provider
26
+ @registered_service_provider ||=
27
+ client.registered_saml_service_providers.create(registered_service_provider_params)
28
+ end
29
+
30
+ def registered_service_provider_params
31
+ {}.tap do |body|
32
+ body[:assertion_consumer_service_url] = options[:assertion_consumer_service_url]
33
+ body[:entity_id] = options[:entity_id]
34
+ body[:name] = options[:name]
35
+ body[:description] = options[:description]
36
+ body[:name_id_format] = options[:name_id_format]
37
+ end.compact
38
+ end
39
+ end
40
+ end
41
+ end
@@ -16,12 +16,11 @@
16
16
  module Stormpath
17
17
  module Authentication
18
18
  class UsernamePasswordRequest
19
-
20
19
  attr_reader :host, :account_store
21
20
 
22
- def initialize username, password, options = {}
21
+ def initialize(username, password, options = {})
23
22
  @username = username
24
- @password = (password || "").chars.to_a
23
+ @password = (password || '').chars.to_a
25
24
  @host = options[:host]
26
25
  @account_store = options[:account_store]
27
26
  end
@@ -39,10 +38,9 @@ module Stormpath
39
38
  @host = nil
40
39
  @account_store = nil
41
40
 
42
- @password.each { |pass_char| pass_char = 0x00 }
41
+ @password.each { |_pass_char| pass_char = 0x00 }
43
42
  @password = nil
44
43
  end
45
-
46
44
  end
47
45
  end
48
46
  end
@@ -11,7 +11,7 @@ module Stormpath
11
11
  @ttl_seconds = opts[:ttl_seconds] || DEFAULT_TTL_SECONDS
12
12
  @tti_seconds = opts[:tti_seconds] || DEFAULT_TTI_SECONDS
13
13
  store_opts = opts[:store_opts] || {}
14
- @store = (opts[:store] || DEFAULT_STORE).new store_opts
14
+ @store = (opts[:store] || DEFAULT_STORE).new(store_opts)
15
15
  @stats = CacheStats.new
16
16
  end
17
17
 
@@ -19,7 +19,7 @@ module Stormpath
19
19
  if entry = @store.get(k)
20
20
  if entry.expired? @ttl_seconds, @tti_seconds
21
21
  @stats.miss true
22
- @store.delete k
22
+ @store.delete(k)
23
23
  nil
24
24
  else
25
25
  @stats.hit
@@ -38,7 +38,7 @@ module Stormpath
38
38
  end
39
39
 
40
40
  def delete(k)
41
- @store.delete k
41
+ @store.delete(k)
42
42
  @stats.delete
43
43
  end
44
44
 
@@ -3,7 +3,7 @@ module Stormpath
3
3
  class CacheEntry
4
4
  attr_accessor :value, :created_at, :last_accessed_at
5
5
 
6
- def initialize value
6
+ def initialize(value)
7
7
  self.value = value
8
8
  self.created_at = Time.now
9
9
  self.last_accessed_at = created_at
@@ -13,7 +13,7 @@ module Stormpath
13
13
  self.last_accessed_at = Time.now
14
14
  end
15
15
 
16
- def expired? ttl_seconds, tti_seconds
16
+ def expired?(ttl_seconds, tti_seconds)
17
17
  now = Time.now
18
18
  now > (created_at + ttl_seconds) || now > (last_accessed_at + tti_seconds)
19
19
  end