osso 0.0.5.pre.zeta → 0.0.8

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/pipeline.yml +6 -4
  3. data/.github/dependabot.yml +8 -0
  4. data/.github/workflows/automerge.yml +19 -0
  5. data/.rubocop.yml +4 -1
  6. data/Gemfile +2 -2
  7. data/Gemfile.lock +69 -51
  8. data/LICENSE +21 -23
  9. data/Rakefile +2 -0
  10. data/bin/annotate +3 -1
  11. data/db/schema.rb +41 -3
  12. data/lib/osso.rb +0 -1
  13. data/lib/osso/db/migrate/20200929154117_add_users_count_to_identity_providers_and_enterprise_accounts.rb +6 -0
  14. data/lib/osso/db/migrate/20201023142158_add_rodauth_tables.rb +47 -0
  15. data/lib/osso/db/migrate/20201105122026_add_token_index_to_access_tokens.rb +5 -0
  16. data/lib/osso/db/migrate/20201106154936_add_requested_to_authorization_codes_and_access_tokens.rb +6 -0
  17. data/lib/osso/db/migrate/20201109160851_add_sso_issuer_to_identity_providers.rb +12 -0
  18. data/lib/osso/db/migrate/20201110190754_remove_oauth_client_id_from_enterprise_accounts.rb +9 -0
  19. data/lib/osso/db/migrate/20201112160120_add_ping_to_identity_provider_service_enum.rb +28 -0
  20. data/lib/osso/db/migrate/20201125143501_add_salesforce_to_provider_service_enum.rb +28 -0
  21. data/lib/osso/error/account_configuration_error.rb +1 -0
  22. data/lib/osso/error/oauth_error.rb +6 -3
  23. data/lib/osso/graphql/mutation.rb +2 -0
  24. data/lib/osso/graphql/mutations.rb +2 -0
  25. data/lib/osso/graphql/mutations/create_enterprise_account.rb +0 -7
  26. data/lib/osso/graphql/mutations/create_identity_provider.rb +7 -6
  27. data/lib/osso/graphql/mutations/delete_identity_provider.rb +24 -0
  28. data/lib/osso/graphql/mutations/invite_admin_user.rb +43 -0
  29. data/lib/osso/graphql/query.rb +8 -0
  30. data/lib/osso/graphql/resolvers/enterprise_accounts.rb +3 -3
  31. data/lib/osso/graphql/types.rb +2 -2
  32. data/lib/osso/graphql/types/admin_user.rb +9 -0
  33. data/lib/osso/graphql/types/base_object.rb +1 -1
  34. data/lib/osso/graphql/types/enterprise_account.rb +1 -0
  35. data/lib/osso/graphql/types/identity_provider.rb +3 -0
  36. data/lib/osso/graphql/types/identity_provider_service.rb +3 -1
  37. data/lib/osso/lib/app_config.rb +1 -1
  38. data/lib/osso/lib/route_map.rb +0 -15
  39. data/lib/osso/lib/saml_handler.rb +5 -0
  40. data/lib/osso/models/access_token.rb +4 -2
  41. data/lib/osso/models/account.rb +34 -0
  42. data/lib/osso/models/authorization_code.rb +2 -1
  43. data/lib/osso/models/enterprise_account.rb +3 -1
  44. data/lib/osso/models/identity_provider.rb +24 -5
  45. data/lib/osso/models/models.rb +1 -0
  46. data/lib/osso/models/oauth_client.rb +0 -1
  47. data/lib/osso/models/user.rb +2 -2
  48. data/lib/osso/routes/admin.rb +39 -33
  49. data/lib/osso/routes/auth.rb +9 -9
  50. data/lib/osso/routes/oauth.rb +42 -18
  51. data/lib/osso/version.rb +1 -1
  52. data/lib/osso/views/admin.erb +5 -0
  53. data/lib/osso/views/error.erb +1 -0
  54. data/lib/osso/views/layout.erb +0 -0
  55. data/lib/osso/views/multiple_providers.erb +1 -0
  56. data/lib/osso/views/welcome.erb +0 -0
  57. data/lib/tasks/bootstrap.rake +25 -4
  58. data/osso-rb.gemspec +5 -0
  59. data/spec/factories/account.rb +24 -0
  60. data/spec/factories/enterprise_account.rb +11 -3
  61. data/spec/factories/identity_providers.rb +10 -2
  62. data/spec/factories/user.rb +4 -0
  63. data/spec/graphql/mutations/configure_identity_provider_spec.rb +1 -1
  64. data/spec/graphql/mutations/create_enterprise_account_spec.rb +0 -14
  65. data/spec/graphql/mutations/create_identity_provider_spec.rb +59 -8
  66. data/spec/graphql/query/identity_provider_spec.rb +3 -2
  67. data/spec/models/enterprise_account_spec.rb +18 -0
  68. data/spec/models/identity_provider_spec.rb +36 -1
  69. data/spec/routes/admin_spec.rb +7 -41
  70. data/spec/routes/auth_spec.rb +17 -18
  71. data/spec/routes/oauth_spec.rb +102 -5
  72. data/spec/spec_helper.rb +3 -3
  73. data/spec/support/views/hosted_login.erb +1 -0
  74. data/spec/support/views/layout.erb +1 -0
  75. data/spec/support/views/multiple_providers.erb +1 -0
  76. metadata +108 -7
  77. data/lib/osso/helpers/auth.rb +0 -94
  78. data/lib/osso/helpers/helpers.rb +0 -8
  79. data/spec/helpers/auth_spec.rb +0 -97
@@ -3,56 +3,22 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Osso::Admin do
6
- let(:jwt_url) { 'https://foo.com/jwt' }
7
- let(:jwt_hmac_secret) { SecureRandom.hex(32) }
8
-
9
- before do
10
- ENV['JWT_URL'] = jwt_url
11
- ENV['JWT_HMAC_SECRET'] = jwt_hmac_secret
12
- described_class.set(:views, spec_views)
13
- end
14
-
15
6
  describe 'get /admin' do
16
- it 'redirects to JWT_URL without a session or token' do
7
+ it 'redirects to /login without a session' do
17
8
  get('/admin')
18
9
 
19
10
  expect(last_response).to be_redirect
20
11
  follow_redirect!
21
- expect(last_request.url).to eq(jwt_url)
22
- end
23
-
24
- it 'redirects to JWT_URL with an invalid token' do
25
- get('/admin', token: SecureRandom.hex(32))
26
-
27
- expect(last_response).to be_redirect
28
-
29
- follow_redirect!
30
-
31
- expect(last_request.url).to eq(jwt_url)
12
+ expect(last_request.url).to match('/login')
32
13
  end
33
14
 
34
- it 'chomps the token and redirects to request path with valid token' do
35
- token = JWT.encode(
36
- { email: 'admin@saas.com', scope: 'admin' },
37
- jwt_hmac_secret,
38
- 'HS256',
39
- )
40
-
41
- get('/admin', { admin_token: token })
42
-
43
- expect(last_response).to be_redirect
44
- follow_redirect!
45
- expect(last_request.url).to match('/admin')
46
- end
15
+ xit 'renders the admin page for a valid session token' do
16
+ password = SecureRandom.urlsafe_base64(16)
17
+ account = create(:verified_account, password: password)
47
18
 
48
- it 'renders the admin page for a valid session token' do
49
- token = JWT.encode(
50
- { email: 'admin@saas.com', scope: 'admin' },
51
- jwt_hmac_secret,
52
- 'HS256',
53
- )
19
+ post('/login', { email: account.email, password: password })
54
20
 
55
- get('/admin', {}, 'rack.session' => { admin_token: token })
21
+ get('/admin')
56
22
 
57
23
  expect(last_response).to be_ok
58
24
  end
@@ -182,29 +182,28 @@ describe Osso::Auth do
182
182
  it 'raises an error when email is missing' do
183
183
  mock_saml_omniauth(email: nil, id: SecureRandom.uuid)
184
184
 
185
-
186
- response = post(
187
- "/auth/saml/#{azure_provider.id}/callback",
188
- nil,
189
- {
190
- 'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
191
- },
192
- )
193
-
194
- expect(response.body).to eq('Osso::Error::MissingSamlEmailAttributeError')
195
- end
185
+ response = post(
186
+ "/auth/saml/#{azure_provider.id}/callback",
187
+ nil,
188
+ {
189
+ 'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
190
+ },
191
+ )
192
+
193
+ expect(response.body).to eq('Osso::Error::MissingSamlEmailAttributeError')
194
+ end
196
195
 
197
196
  it 'raises an error when id is missing' do
198
197
  mock_saml_omniauth(email: Faker::Internet.email, id: nil)
199
198
 
200
199
  response = post(
201
- "/auth/saml/#{azure_provider.id}/callback",
202
- nil,
203
- {
204
- 'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
205
- },
206
- )
207
-
200
+ "/auth/saml/#{azure_provider.id}/callback",
201
+ nil,
202
+ {
203
+ 'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
204
+ },
205
+ )
206
+
208
207
  expect(response.body).to eq('Osso::Error::MissingSamlIdAttributeError')
209
208
  end
210
209
  end
@@ -3,15 +3,16 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Osso::Oauth do
6
+ before do
7
+ described_class.set(:views, spec_views)
8
+ end
9
+
6
10
  let(:client) { create(:oauth_client) }
7
11
 
8
12
  describe 'get /oauth/authorize' do
9
13
  describe 'with a valid client ID and redirect URI' do
10
14
  describe 'for a domain that does not belong to an enterprise' do
11
- # TODO: better error handling and test
12
15
  it 'renders an error page' do
13
- described_class.set(:views, spec_views)
14
-
15
16
  create(:enterprise_with_okta, domain: 'foo.com')
16
17
 
17
18
  get(
@@ -26,6 +27,20 @@ describe Osso::Oauth do
26
27
  end
27
28
  end
28
29
 
30
+ describe 'for a request without email or domain' do
31
+ it 'redirects to /auth/saml/:provider_id' do
32
+ get(
33
+ '/oauth/authorize',
34
+ client_id: client.identifier,
35
+ response_type: 'code',
36
+ redirect_uri: client.redirect_uri_values.sample,
37
+ )
38
+
39
+ expect(last_response).to be_ok
40
+ expect(last_response.body).to eq('HOSTED LOGIN')
41
+ end
42
+ end
43
+
29
44
  describe 'for an enterprise domain with one SAML provider' do
30
45
  it 'redirects to /auth/saml/:provider_id' do
31
46
  enterprise = create(:enterprise_with_okta, oauth_client: client)
@@ -48,7 +63,7 @@ describe Osso::Oauth do
48
63
 
49
64
  describe 'for an enterprise domain with multiple SAML providers' do
50
65
  it 'renders the multiple providers screen' do
51
- enterprise = create(:enterprise_with_multiple_providers)
66
+ enterprise = create(:enterprise_with_multiple_providers, oauth_client: client)
52
67
 
53
68
  get(
54
69
  '/oauth/authorize',
@@ -59,6 +74,64 @@ describe Osso::Oauth do
59
74
  )
60
75
 
61
76
  expect(last_response).to be_ok
77
+ expect(last_response.body).to eq('MULITPLE PROVIDERS')
78
+ end
79
+ end
80
+
81
+ describe "for an existing user's email address" do
82
+ it 'redirects to /auth/saml/:provider_id' do
83
+ enterprise = create(:enterprise_with_okta, oauth_client: client)
84
+ provider_id = enterprise.identity_providers.first.id
85
+ user = create(:user, email: "user@#{enterprise.domain}", identity_provider_id: provider_id)
86
+
87
+ get(
88
+ '/oauth/authorize',
89
+ email: user.email,
90
+ client_id: client.identifier,
91
+ response_type: 'code',
92
+ redirect_uri: client.redirect_uri_values.sample,
93
+ )
94
+
95
+ expect(last_response).to be_redirect
96
+ follow_redirect!
97
+ expect(last_request.url).to match("auth/saml/#{provider_id}")
98
+ end
99
+ end
100
+
101
+ describe "for a new user's email address belonging to an enterprise with one SAML provider" do
102
+ it 'redirects to /auth/saml/:provider_id' do
103
+ enterprise = create(:enterprise_with_okta, oauth_client: client)
104
+
105
+ get(
106
+ '/oauth/authorize',
107
+ email: "user@#{enterprise.domain}",
108
+ client_id: client.identifier,
109
+ response_type: 'code',
110
+ redirect_uri: client.redirect_uri_values.sample,
111
+ )
112
+
113
+ provider_id = enterprise.identity_providers.first.id
114
+
115
+ expect(last_response).to be_redirect
116
+ follow_redirect!
117
+ expect(last_request.url).to match("auth/saml/#{provider_id}")
118
+ end
119
+ end
120
+
121
+ describe "for a new user's email address belonging to an enterprise with multiple SAML providers" do
122
+ it 'renders the multiple providers screen' do
123
+ enterprise = create(:enterprise_with_multiple_providers, oauth_client: client)
124
+
125
+ get(
126
+ '/oauth/authorize',
127
+ email: "user@#{enterprise.domain}",
128
+ client_id: client.identifier,
129
+ response_type: 'code',
130
+ redirect_uri: client.redirect_uri_values.sample,
131
+ )
132
+
133
+ expect(last_response).to be_ok
134
+ expect(last_response.body).to eq('MULITPLE PROVIDERS')
62
135
  end
63
136
  end
64
137
  end
@@ -90,7 +163,7 @@ describe Osso::Oauth do
90
163
  end
91
164
 
92
165
  describe 'get /oauth/me' do
93
- describe 'with a valid unexpired access token' do
166
+ describe 'with a valid unexpired access token in params' do
94
167
  it 'returns the user' do
95
168
  user = create(:user)
96
169
  code = user.authorization_codes.valid.first
@@ -105,6 +178,30 @@ describe Osso::Oauth do
105
178
  email: user.email,
106
179
  id: user.id,
107
180
  idp: 'Okta',
181
+ requested: code.requested.symbolize_keys,
182
+ )
183
+ end
184
+ end
185
+
186
+ describe 'with a valid unexpired access token in headers' do
187
+ it 'returns the user' do
188
+ user = create(:user)
189
+ code = user.authorization_codes.valid.first
190
+
191
+ get(
192
+ '/oauth/me',
193
+ nil,
194
+ {
195
+ 'HTTP_AUTHORIZATION' => "Bearer: #{code.access_token.to_bearer_token}",
196
+ },
197
+ )
198
+
199
+ expect(last_response.status).to eq(200)
200
+ expect(last_json_response).to eq(
201
+ email: user.email,
202
+ id: user.id,
203
+ idp: 'Okta',
204
+ requested: code.requested.symbolize_keys,
108
205
  )
109
206
  end
110
207
  end
@@ -15,9 +15,9 @@ require 'webmock/rspec'
15
15
  ENV['RACK_ENV'] = 'test'
16
16
  ENV['SESSION_SECRET'] = 'supersecret'
17
17
  ENV['BASE_URL'] = 'https://example.com'
18
+ ENV['RODAUTH_VIEWS'] = "#{File.dirname(__FILE__)}/support/views"
18
19
 
19
20
  require File.expand_path '../lib/osso.rb', __dir__
20
-
21
21
  require File.expand_path 'support/spec_app', __dir__
22
22
 
23
23
  module RSpecMixin
@@ -47,11 +47,11 @@ module RSpecMixin
47
47
  end
48
48
 
49
49
  def spec_views
50
- File.dirname(__FILE__) + '/support/views'
50
+ "#{File.dirname(__FILE__)}/support/views"
51
51
  end
52
52
 
53
53
  def valid_x509_pem
54
- raw = File.read(File.dirname(__FILE__) + '/support/fixtures/test.pem')
54
+ raw = File.read("#{File.dirname(__FILE__)}/support/fixtures/test.pem")
55
55
  OpenSSL::X509::Certificate.new(raw).to_pem
56
56
  end
57
57
 
@@ -0,0 +1 @@
1
+ HOSTED LOGIN
@@ -0,0 +1 @@
1
+ <%= yield %>
@@ -0,0 +1 @@
1
+ MULITPLE PROVIDERS
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5.pre.zeta
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Bauch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-21 00:00:00.000000000 Z
11
+ date: 2020-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.0.3.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: bcrypt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.1.13
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.1.13
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: graphql
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mail
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.7.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.7.1
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: omniauth-multi-provider
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +164,60 @@ dependencies:
136
164
  - - ">="
137
165
  - !ruby/object:Gem::Version
138
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rodauth
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 2.6.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 2.6.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: sequel
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '5.37'
188
+ - - "<"
189
+ - !ruby/object:Gem::Version
190
+ version: '5.40'
191
+ type: :runtime
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '5.37'
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '5.40'
201
+ - !ruby/object:Gem::Dependency
202
+ name: sequel-activerecord_connection
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0.3'
208
+ - - "<"
209
+ - !ruby/object:Gem::Version
210
+ version: '2.0'
211
+ type: :runtime
212
+ prerelease: false
213
+ version_requirements: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0.3'
218
+ - - "<"
219
+ - !ruby/object:Gem::Version
220
+ version: '2.0'
139
221
  - !ruby/object:Gem::Dependency
140
222
  name: sinatra
141
223
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +317,8 @@ files:
235
317
  - ".buildkite/hooks/pre-command"
236
318
  - ".buildkite/pipeline.yml"
237
319
  - ".buildkite/template.yml"
320
+ - ".github/dependabot.yml"
321
+ - ".github/workflows/automerge.yml"
238
322
  - ".gitignore"
239
323
  - ".rspec"
240
324
  - ".rubocop.yml"
@@ -273,6 +357,14 @@ files:
273
357
  - lib/osso/db/migrate/20200826201852_create_app_config.rb
274
358
  - lib/osso/db/migrate/20200913154919_add_one_login_to_identity_provider_service_enum.rb
275
359
  - lib/osso/db/migrate/20200916125543_add_google_to_identity_provider_service_enum.rb
360
+ - lib/osso/db/migrate/20200929154117_add_users_count_to_identity_providers_and_enterprise_accounts.rb
361
+ - lib/osso/db/migrate/20201023142158_add_rodauth_tables.rb
362
+ - lib/osso/db/migrate/20201105122026_add_token_index_to_access_tokens.rb
363
+ - lib/osso/db/migrate/20201106154936_add_requested_to_authorization_codes_and_access_tokens.rb
364
+ - lib/osso/db/migrate/20201109160851_add_sso_issuer_to_identity_providers.rb
365
+ - lib/osso/db/migrate/20201110190754_remove_oauth_client_id_from_enterprise_accounts.rb
366
+ - lib/osso/db/migrate/20201112160120_add_ping_to_identity_provider_service_enum.rb
367
+ - lib/osso/db/migrate/20201125143501_add_salesforce_to_provider_service_enum.rb
276
368
  - lib/osso/error/account_configuration_error.rb
277
369
  - lib/osso/error/error.rb
278
370
  - lib/osso/error/missing_saml_attribute_error.rb
@@ -287,7 +379,9 @@ files:
287
379
  - lib/osso/graphql/mutations/create_identity_provider.rb
288
380
  - lib/osso/graphql/mutations/create_oauth_client.rb
289
381
  - lib/osso/graphql/mutations/delete_enterprise_account.rb
382
+ - lib/osso/graphql/mutations/delete_identity_provider.rb
290
383
  - lib/osso/graphql/mutations/delete_oauth_client.rb
384
+ - lib/osso/graphql/mutations/invite_admin_user.rb
291
385
  - lib/osso/graphql/mutations/regenerate_oauth_credentials.rb
292
386
  - lib/osso/graphql/mutations/set_redirect_uris.rb
293
387
  - lib/osso/graphql/mutations/update_app_config.rb
@@ -313,13 +407,12 @@ files:
313
407
  - lib/osso/graphql/types/oauth_client.rb
314
408
  - lib/osso/graphql/types/redirect_uri.rb
315
409
  - lib/osso/graphql/types/redirect_uri_input.rb
316
- - lib/osso/helpers/auth.rb
317
- - lib/osso/helpers/helpers.rb
318
410
  - lib/osso/lib/app_config.rb
319
411
  - lib/osso/lib/oauth2_token.rb
320
412
  - lib/osso/lib/route_map.rb
321
413
  - lib/osso/lib/saml_handler.rb
322
414
  - lib/osso/models/access_token.rb
415
+ - lib/osso/models/account.rb
323
416
  - lib/osso/models/app_config.rb
324
417
  - lib/osso/models/authorization_code.rb
325
418
  - lib/osso/models/enterprise_account.rb
@@ -334,8 +427,14 @@ files:
334
427
  - lib/osso/routes/oauth.rb
335
428
  - lib/osso/routes/routes.rb
336
429
  - lib/osso/version.rb
430
+ - lib/osso/views/admin.erb
431
+ - lib/osso/views/error.erb
432
+ - lib/osso/views/layout.erb
433
+ - lib/osso/views/multiple_providers.erb
434
+ - lib/osso/views/welcome.erb
337
435
  - lib/tasks/bootstrap.rake
338
436
  - osso-rb.gemspec
437
+ - spec/factories/account.rb
339
438
  - spec/factories/authorization_code.rb
340
439
  - spec/factories/enterprise_account.rb
341
440
  - spec/factories/identity_providers.rb
@@ -352,8 +451,8 @@ files:
352
451
  - spec/graphql/query/enterprise_accounts_spec.rb
353
452
  - spec/graphql/query/identity_provider_spec.rb
354
453
  - spec/graphql/query/oauth_clients_spec.rb
355
- - spec/helpers/auth_spec.rb
356
454
  - spec/lib/saml_handler_spec.rb
455
+ - spec/models/enterprise_account_spec.rb
357
456
  - spec/models/identity_provider_spec.rb
358
457
  - spec/routes/admin_spec.rb
359
458
  - spec/routes/app_spec.rb
@@ -364,6 +463,8 @@ files:
364
463
  - spec/support/spec_app.rb
365
464
  - spec/support/views/admin.erb
366
465
  - spec/support/views/error.erb
466
+ - spec/support/views/hosted_login.erb
467
+ - spec/support/views/layout.erb
367
468
  - spec/support/views/multiple_providers.erb
368
469
  homepage: https://github.com/enterprise-oss/osso-rb
369
470
  licenses:
@@ -380,9 +481,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
380
481
  version: 2.3.0
381
482
  required_rubygems_version: !ruby/object:Gem::Requirement
382
483
  requirements:
383
- - - ">"
484
+ - - ">="
384
485
  - !ruby/object:Gem::Version
385
- version: 1.3.1
486
+ version: '0'
386
487
  requirements: []
387
488
  rubygems_version: 3.0.3
388
489
  signing_key: