openstax_accounts 7.13.0 → 8.1.1

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/openstax/accounts/application_controller.rb +1 -1
  3. data/app/controllers/openstax/accounts/dev/accounts_controller.rb +1 -1
  4. data/app/controllers/openstax/accounts/dev/base_controller.rb +1 -1
  5. data/app/controllers/openstax/accounts/sessions_controller.rb +7 -8
  6. data/app/handlers/openstax/accounts/sessions_callback.rb +17 -37
  7. data/app/models/openstax/accounts/account.rb +33 -1
  8. data/app/models/openstax/accounts/group.rb +12 -8
  9. data/app/models/openstax/accounts/group_nesting.rb +8 -7
  10. data/app/representers/openstax/accounts/api/v1/unclaimed_account_representer.rb +1 -7
  11. data/app/routines/openstax/accounts/find_or_create_account.rb +9 -9
  12. data/app/routines/openstax/accounts/find_or_create_from_sso.rb +23 -0
  13. data/app/routines/openstax/accounts/sync_accounts.rb +1 -6
  14. data/config/routes.rb +11 -11
  15. data/db/migrate/0_create_openstax_accounts_accounts.rb +1 -1
  16. data/db/migrate/10_assign_missing_uuids_for_local_accounts.rb +2 -2
  17. data/db/migrate/11_add_support_identifier_to_accounts_accounts.rb +1 -1
  18. data/db/migrate/12_add_is_test_to_accounts_accounts.rb +1 -1
  19. data/db/migrate/13_add_school_type_to_accounts_accounts.rb +1 -1
  20. data/db/migrate/1_create_openstax_accounts_groups.rb +1 -1
  21. data/db/migrate/2_create_openstax_accounts_group_members.rb +1 -1
  22. data/db/migrate/3_create_openstax_accounts_group_owners.rb +1 -1
  23. data/db/migrate/4_create_openstax_accounts_group_nestings.rb +1 -1
  24. data/db/migrate/5_add_faculty_status_to_accounts_accounts.rb +1 -1
  25. data/db/migrate/6_add_salesforce_contact_id_to_accounts_accounts.rb +1 -1
  26. data/db/migrate/7_change_accounts_openstax_uid_to_be_nullable.rb +1 -1
  27. data/db/migrate/8_change_accounts_username_to_be_nullable.rb +1 -1
  28. data/db/migrate/9_add_uuid_and_role_to_accounts_accounts.rb +1 -1
  29. data/lib/omniauth/strategies/openstax.rb +6 -23
  30. data/lib/openstax/accounts/configuration.rb +16 -0
  31. data/lib/openstax/accounts/current_user_manager.rb +20 -0
  32. data/lib/openstax/accounts/has_many_through_groups/active_record/base.rb +5 -5
  33. data/lib/openstax/accounts/sso.rb +61 -0
  34. data/lib/openstax/accounts/version.rb +1 -1
  35. data/lib/openstax_accounts.rb +6 -7
  36. data/lib/tasks/sync.rake +3 -3
  37. data/spec/factories/openstax_accounts_account.rb +1 -1
  38. data/spec/factories/openstax_accounts_group.rb +3 -3
  39. data/spec/factories/openstax_accounts_group_member.rb +1 -1
  40. data/spec/factories/openstax_accounts_group_nesting.rb +1 -1
  41. data/spec/factories/openstax_accounts_group_owner.rb +1 -1
  42. metadata +34 -212
  43. data/Rakefile +0 -22
  44. data/spec/cassettes/OpenStax_Accounts_FindOrCreateAccount/can_create_users.yml +0 -303
  45. data/spec/controllers/openstax/accounts/dev/accounts_controller_spec.rb +0 -27
  46. data/spec/controllers/openstax/accounts/forwards_params_spec.rb +0 -75
  47. data/spec/controllers/openstax/accounts/sessions_controller_spec.rb +0 -71
  48. data/spec/controllers/openstax/accounts/uses_this_engine_controller_spec.rb +0 -22
  49. data/spec/dummy/README.md +0 -1
  50. data/spec/dummy/Rakefile +0 -7
  51. data/spec/dummy/app/access_policies/account_access_policy.rb +0 -11
  52. data/spec/dummy/app/assets/javascripts/application.js +0 -15
  53. data/spec/dummy/app/assets/stylesheets/application.css +0 -13
  54. data/spec/dummy/app/controllers/api/application_groups_controller.rb +0 -11
  55. data/spec/dummy/app/controllers/api/application_users_controller.rb +0 -15
  56. data/spec/dummy/app/controllers/api/dummy_controller.rb +0 -12
  57. data/spec/dummy/app/controllers/api/group_members_controller.rb +0 -11
  58. data/spec/dummy/app/controllers/api/group_nestings_controller.rb +0 -11
  59. data/spec/dummy/app/controllers/api/group_owners_controller.rb +0 -11
  60. data/spec/dummy/app/controllers/api/groups_controller.rb +0 -15
  61. data/spec/dummy/app/controllers/api/users_controller.rb +0 -15
  62. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  63. data/spec/dummy/app/controllers/oauth_controller.rb +0 -10
  64. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  65. data/spec/dummy/app/models/anonymous_user.rb +0 -48
  66. data/spec/dummy/app/models/ownership.rb +0 -7
  67. data/spec/dummy/app/models/user.rb +0 -29
  68. data/spec/dummy/config.ru +0 -5
  69. data/spec/dummy/config/application.rb +0 -23
  70. data/spec/dummy/config/boot.rb +0 -5
  71. data/spec/dummy/config/database.yml +0 -15
  72. data/spec/dummy/config/environment.rb +0 -5
  73. data/spec/dummy/config/environments/development.rb +0 -40
  74. data/spec/dummy/config/environments/production.rb +0 -82
  75. data/spec/dummy/config/environments/test.rb +0 -39
  76. data/spec/dummy/config/initializers/access_policies.rb +0 -1
  77. data/spec/dummy/config/initializers/assets.rb +0 -8
  78. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  79. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
  80. data/spec/dummy/config/initializers/doorkeeper.rb +0 -75
  81. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  82. data/spec/dummy/config/initializers/inflections.rb +0 -16
  83. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  84. data/spec/dummy/config/initializers/openstax_accounts.rb +0 -14
  85. data/spec/dummy/config/initializers/session_store.rb +0 -3
  86. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  87. data/spec/dummy/config/locales/en.yml +0 -5
  88. data/spec/dummy/config/routes.rb +0 -45
  89. data/spec/dummy/config/secrets.yml +0 -8
  90. data/spec/dummy/db/development.sqlite3 +0 -0
  91. data/spec/dummy/db/migrate/1000_create_users.rb +0 -11
  92. data/spec/dummy/db/migrate/1001_create_ownerships.rb +0 -11
  93. data/spec/dummy/db/schema.rb +0 -113
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/log/development.log +0 -5137
  96. data/spec/dummy/log/test.log +0 -162651
  97. data/spec/dummy/public/404.html +0 -26
  98. data/spec/dummy/public/422.html +0 -26
  99. data/spec/dummy/public/500.html +0 -25
  100. data/spec/dummy/public/favicon.ico +0 -0
  101. data/spec/dummy/script/rails +0 -6
  102. data/spec/handlers/openstax/accounts/accounts_search_spec.rb +0 -63
  103. data/spec/handlers/openstax/accounts/dev/accounts_search_spec.rb +0 -55
  104. data/spec/handlers/openstax/accounts/sessions_callback_spec.rb +0 -119
  105. data/spec/lib/openstax/accounts/api_spec.rb +0 -212
  106. data/spec/lib/openstax/accounts/configuration_spec.rb +0 -39
  107. data/spec/lib/openstax/accounts/current_user_manager_spec.rb +0 -157
  108. data/spec/lib/openstax/accounts/has_many_through_groups/active_record/base_spec.rb +0 -57
  109. data/spec/models/openstax/accounts/account_spec.rb +0 -114
  110. data/spec/models/openstax/accounts/anonymous_account_spec.rb +0 -9
  111. data/spec/models/openstax/accounts/group_spec.rb +0 -51
  112. data/spec/routines/openstax/accounts/create_group_spec.rb +0 -32
  113. data/spec/routines/openstax/accounts/find_or_create_account_spec.rb +0 -76
  114. data/spec/routines/openstax/accounts/search_accounts_shared_examples.rb +0 -160
  115. data/spec/routines/openstax/accounts/search_accounts_spec.rb +0 -6
  116. data/spec/routines/openstax/accounts/search_local_accounts_spec.rb +0 -6
  117. data/spec/routines/openstax/accounts/sync_accounts_spec.rb +0 -101
  118. data/spec/routines/openstax/accounts/sync_groups_spec.rb +0 -143
  119. data/spec/spec_helper.rb +0 -109
  120. data/spec/vcr_helper.rb +0 -14
data/Rakefile DELETED
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env rake
2
-
3
- begin
4
- require 'bundler/setup'
5
- rescue LoadError
6
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
- end
8
-
9
- APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
10
- load 'rails/tasks/engine.rake'
11
-
12
- Bundler::GemHelper.install_tasks
13
-
14
- Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each { |f| load f }
15
-
16
- require 'rspec/core'
17
- require 'rspec/core/rake_task'
18
-
19
- desc 'Run all specs in spec directory (excluding plugin specs)'
20
- RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
21
-
22
- task default: :spec
@@ -1,303 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: http://localhost:2999/oauth/token
6
- body:
7
- encoding: UTF-8
8
- string: client_id=6f3dbfdbb87bf28db1c8279f44c39ea3c3a702ae4303ebcb5a5d8067dc040f85&client_secret=a439ff2377713b3372f8044062f23ad1eb515237e1711cbe6f442c1bea935373&grant_type=client_credentials
9
- headers:
10
- User-Agent:
11
- - Faraday v0.9.2
12
- Content-Type:
13
- - application/x-www-form-urlencoded
14
- Accept-Encoding:
15
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
- Accept:
17
- - "*/*"
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- X-Frame-Options:
24
- - SAMEORIGIN
25
- X-Xss-Protection:
26
- - 1; mode=block
27
- X-Content-Type-Options:
28
- - nosniff
29
- Cache-Control:
30
- - no-store
31
- Pragma:
32
- - no-cache
33
- Content-Type:
34
- - application/json; charset=utf-8
35
- P3p:
36
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
37
- Etag:
38
- - W/"da2f9b92fc82c5fa07f64029a71cff95"
39
- X-Request-Id:
40
- - 26a0a272-9fcf-42c9-a702-357b46a5c070
41
- X-Runtime:
42
- - '0.030377'
43
- Connection:
44
- - close
45
- Server:
46
- - thin
47
- body:
48
- encoding: UTF-8
49
- string: '{"access_token":"c31fe09157c9801c88356a972d0e0c95aa13081cea77ae45f098b5dc7f614642","token_type":"bearer","created_at":1497844427}'
50
- http_version:
51
- recorded_at: Mon, 19 Jun 2017 03:53:47 GMT
52
- - request:
53
- method: post
54
- uri: http://localhost:2999/api/user/find-or-create
55
- body:
56
- encoding: UTF-8
57
- string: '{"email":"alice@example.com","username":null,"password":null,"first_name":null,"last_name":null,"full_name":null,"salesforce_contact_id":null,"faculty_status":null,"role":null,"school_type":null}'
58
- headers:
59
- User-Agent:
60
- - Faraday v0.9.2
61
- Accept:
62
- - application/vnd.accounts.openstax.v1
63
- Content-Type:
64
- - application/json
65
- Authorization:
66
- - Bearer c31fe09157c9801c88356a972d0e0c95aa13081cea77ae45f098b5dc7f614642
67
- Accept-Encoding:
68
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
69
- response:
70
- status:
71
- code: 201
72
- message: Created
73
- headers:
74
- X-Frame-Options:
75
- - SAMEORIGIN
76
- X-Xss-Protection:
77
- - 1; mode=block
78
- X-Content-Type-Options:
79
- - nosniff
80
- Date:
81
- - Mon, 19 Jun 2017 03:53:47 GMT
82
- Content-Type:
83
- - application/json; charset=utf-8
84
- P3p:
85
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
86
- Etag:
87
- - W/"c61c434670d5436a6af8a75c120f5bdf"
88
- Cache-Control:
89
- - max-age=0, private, must-revalidate
90
- X-Request-Id:
91
- - 4d8fb993-d7ef-4820-9248-8c830caf1b78
92
- X-Runtime:
93
- - '0.227730'
94
- Connection:
95
- - close
96
- Server:
97
- - thin
98
- body:
99
- encoding: UTF-8
100
- string: '{"id":18,"uuid":"8c5c819f-d9d9-46e7-98b9-d737fc0f13fe","support_identifier":"cs_6f3b305b"}'
101
- http_version:
102
- recorded_at: Mon, 19 Jun 2017 03:53:47 GMT
103
- - request:
104
- method: post
105
- uri: http://localhost:2999/oauth/token
106
- body:
107
- encoding: UTF-8
108
- string: client_id=6f3dbfdbb87bf28db1c8279f44c39ea3c3a702ae4303ebcb5a5d8067dc040f85&client_secret=a439ff2377713b3372f8044062f23ad1eb515237e1711cbe6f442c1bea935373&grant_type=client_credentials
109
- headers:
110
- User-Agent:
111
- - Faraday v0.9.2
112
- Content-Type:
113
- - application/x-www-form-urlencoded
114
- Accept-Encoding:
115
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
116
- Accept:
117
- - "*/*"
118
- response:
119
- status:
120
- code: 200
121
- message: OK
122
- headers:
123
- X-Frame-Options:
124
- - SAMEORIGIN
125
- X-Xss-Protection:
126
- - 1; mode=block
127
- X-Content-Type-Options:
128
- - nosniff
129
- Cache-Control:
130
- - no-store
131
- Pragma:
132
- - no-cache
133
- Content-Type:
134
- - application/json; charset=utf-8
135
- P3p:
136
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
137
- Etag:
138
- - W/"c7a634c41cb04b393e0cd348d63efec1"
139
- X-Request-Id:
140
- - b977409f-0914-4eac-832e-3d406140ef24
141
- X-Runtime:
142
- - '0.023528'
143
- Connection:
144
- - close
145
- Server:
146
- - thin
147
- body:
148
- encoding: UTF-8
149
- string: '{"access_token":"1c4df98e8f1b07b4dd33aa81150262c829999aaf0564721c423f01c263c2114f","token_type":"bearer","created_at":1497844427}'
150
- http_version:
151
- recorded_at: Mon, 19 Jun 2017 03:53:47 GMT
152
- - request:
153
- method: post
154
- uri: http://localhost:2999/api/user/find-or-create
155
- body:
156
- encoding: UTF-8
157
- string: '{"email":null,"username":"alice","password":null,"first_name":null,"last_name":null,"full_name":null,"salesforce_contact_id":null,"faculty_status":null,"role":null,"school_type":null}'
158
- headers:
159
- User-Agent:
160
- - Faraday v0.9.2
161
- Accept:
162
- - application/vnd.accounts.openstax.v1
163
- Content-Type:
164
- - application/json
165
- Authorization:
166
- - Bearer 1c4df98e8f1b07b4dd33aa81150262c829999aaf0564721c423f01c263c2114f
167
- Accept-Encoding:
168
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
169
- response:
170
- status:
171
- code: 201
172
- message: Created
173
- headers:
174
- X-Frame-Options:
175
- - SAMEORIGIN
176
- X-Xss-Protection:
177
- - 1; mode=block
178
- X-Content-Type-Options:
179
- - nosniff
180
- Date:
181
- - Mon, 19 Jun 2017 03:53:47 GMT
182
- Content-Type:
183
- - application/json; charset=utf-8
184
- P3p:
185
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
186
- Etag:
187
- - W/"a6c213351d9df66ee31997f7ed447fbc"
188
- Cache-Control:
189
- - max-age=0, private, must-revalidate
190
- X-Request-Id:
191
- - ee7c0cba-d530-4a21-b94c-5adf7efb994a
192
- X-Runtime:
193
- - '0.067316'
194
- Connection:
195
- - close
196
- Server:
197
- - thin
198
- body:
199
- encoding: UTF-8
200
- string: '{"id":19,"uuid":"c1ebaa86-b8ef-4100-9213-a16ca741d47f","support_identifier":"cs_edc0b069"}'
201
- http_version:
202
- recorded_at: Mon, 19 Jun 2017 03:53:47 GMT
203
- - request:
204
- method: post
205
- uri: http://localhost:2999/oauth/token
206
- body:
207
- encoding: UTF-8
208
- string: client_id=6f3dbfdbb87bf28db1c8279f44c39ea3c3a702ae4303ebcb5a5d8067dc040f85&client_secret=a439ff2377713b3372f8044062f23ad1eb515237e1711cbe6f442c1bea935373&grant_type=client_credentials
209
- headers:
210
- User-Agent:
211
- - Faraday v0.9.2
212
- Content-Type:
213
- - application/x-www-form-urlencoded
214
- Accept-Encoding:
215
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
216
- Accept:
217
- - "*/*"
218
- response:
219
- status:
220
- code: 200
221
- message: OK
222
- headers:
223
- X-Frame-Options:
224
- - SAMEORIGIN
225
- X-Xss-Protection:
226
- - 1; mode=block
227
- X-Content-Type-Options:
228
- - nosniff
229
- Cache-Control:
230
- - no-store
231
- Pragma:
232
- - no-cache
233
- Content-Type:
234
- - application/json; charset=utf-8
235
- P3p:
236
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
237
- Etag:
238
- - W/"a0d885d8947b3be5da25673a937640fc"
239
- X-Request-Id:
240
- - 21711558-b1df-4a12-b141-1e0a073f71db
241
- X-Runtime:
242
- - '0.022856'
243
- Connection:
244
- - close
245
- Server:
246
- - thin
247
- body:
248
- encoding: UTF-8
249
- string: '{"access_token":"21bb7c60df067e7354ec7e3b2e83d2d39831aece5938d20e8e68e6ea52ab59ff","token_type":"bearer","created_at":1497844427}'
250
- http_version:
251
- recorded_at: Mon, 19 Jun 2017 03:53:47 GMT
252
- - request:
253
- method: post
254
- uri: http://localhost:2999/api/user/find-or-create
255
- body:
256
- encoding: UTF-8
257
- string: '{"email":null,"username":"alice2","password":"abcdefghijklmnop","first_name":null,"last_name":null,"full_name":null,"salesforce_contact_id":null,"faculty_status":null,"role":null,"school_type":null}'
258
- headers:
259
- User-Agent:
260
- - Faraday v0.9.2
261
- Accept:
262
- - application/vnd.accounts.openstax.v1
263
- Content-Type:
264
- - application/json
265
- Authorization:
266
- - Bearer 21bb7c60df067e7354ec7e3b2e83d2d39831aece5938d20e8e68e6ea52ab59ff
267
- Accept-Encoding:
268
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
269
- response:
270
- status:
271
- code: 201
272
- message: Created
273
- headers:
274
- X-Frame-Options:
275
- - SAMEORIGIN
276
- X-Xss-Protection:
277
- - 1; mode=block
278
- X-Content-Type-Options:
279
- - nosniff
280
- Date:
281
- - Mon, 19 Jun 2017 03:53:48 GMT
282
- Content-Type:
283
- - application/json; charset=utf-8
284
- P3p:
285
- - CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
286
- Etag:
287
- - W/"1574b45433f3e6117795d9e71a8a7fc9"
288
- Cache-Control:
289
- - max-age=0, private, must-revalidate
290
- X-Request-Id:
291
- - 818cfe0a-9264-43c8-a73f-48cfbea35672
292
- X-Runtime:
293
- - '0.142613'
294
- Connection:
295
- - close
296
- Server:
297
- - thin
298
- body:
299
- encoding: UTF-8
300
- string: '{"id":20,"uuid":"76c36a75-5b5a-4dbd-8800-5c1916c6f1f2","support_identifier":"cs_bccb058a"}'
301
- http_version:
302
- recorded_at: Mon, 19 Jun 2017 03:53:48 GMT
303
- recorded_with: VCR 3.0.3
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module OpenStax::Accounts
4
- module Dev
5
- RSpec.describe AccountsController, type: :controller do
6
- routes { Engine.routes }
7
-
8
- let!(:account) { FactoryBot.create :openstax_accounts_account,
9
- username: 'some_user',
10
- openstax_uid: 10 }
11
-
12
- it 'should allow users not in production to become other users' do
13
- expect(controller.current_account).to eq(AnonymousAccount.instance)
14
- expect(controller.current_account.is_anonymous?).to eq(true)
15
- post :become, id: account.openstax_uid
16
- expect(controller.current_account).to eq(account)
17
- expect(controller.current_account.is_anonymous?).to eq(false)
18
- end
19
-
20
- it 'should not set X-Frame-Options header' do
21
- get :index
22
- expect(response.header['X-Frame-Options']).to be_nil
23
- end
24
-
25
- end
26
- end
27
- end
@@ -1,75 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe "Forwards params", type: :request do
4
-
5
- class ForwardsParamsController < OpenStax::Accounts::ApplicationController
6
- before_filter :set_login_param
7
- before_filter :authenticate_user!
8
-
9
- def action_needing_authentication; end
10
-
11
- def set_login_param
12
- login_params[:signup_at] = "foo"
13
- login_params[:go] = "bar"
14
- login_params[:sp] = "blah"
15
- end
16
- end
17
-
18
- before(:all) do
19
- Rails.application.routes.send(:eval_block, Proc.new do
20
- get '/forwards_params_route' => 'forwards_params#action_needing_authentication'
21
- end)
22
- end
23
-
24
- it 'should forward signup_at' do
25
- test_forwards(key: :signup_at, value: "foo")
26
- end
27
-
28
- it "should forward go" do
29
- test_forwards(key: :go, value: "bar")
30
- end
31
-
32
- it "should forward go" do
33
- test_forwards(key: :sp, value: "blah")
34
- end
35
-
36
- def test_forwards(key:, value:)
37
- silence_omniauth do
38
- get '/forwards_params_route'
39
-
40
- expect(redirect_path).to eq "/accounts/login"
41
- expect(redirect_query_hash).to include(key => value)
42
-
43
- with_stubbing(false) do
44
- get redirect_path_and_query
45
- end
46
-
47
- expect(redirect_path).to eq "/accounts/auth/openstax"
48
- expect(redirect_query_hash).to include(key => value)
49
-
50
- get redirect_path_and_query
51
-
52
- expect(redirect_path).to eq("/oauth/authorize")
53
- expect(redirect_query_hash).to include(key => value)
54
-
55
- # This last redirect was to Accounts, so we don't follow it
56
- end
57
- end
58
-
59
- def redirect_path
60
- redirect_uri.path
61
- end
62
-
63
- def redirect_path_and_query
64
- "#{redirect_uri.path}?#{redirect_uri.query}"
65
- end
66
-
67
- def redirect_query_hash
68
- Rack::Utils.parse_nested_query(redirect_uri.query).symbolize_keys
69
- end
70
-
71
- def redirect_uri
72
- expect(response.code).to eq "302"
73
- uri = URI.parse(response.headers["Location"])
74
- end
75
- end
@@ -1,71 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module OpenStax::Accounts
4
- RSpec.describe SessionsController, type: :controller do
5
- routes { Engine.routes }
6
-
7
- let!(:account) { FactoryBot.create :openstax_accounts_account,
8
- username: 'some_user',
9
- openstax_uid: 10 }
10
-
11
- after(:all) {
12
- OpenStax::Accounts.configuration.logout_redirect_url = nil
13
- OpenStax::Accounts.configuration.return_to_url_approver = nil
14
- }
15
-
16
- it 'should redirect users to the login path' do
17
- c = controller
18
- get :new
19
- expect(response).to redirect_to(c.dev_accounts_path)
20
- expect(response.code).to eq('302')
21
- end
22
-
23
- it 'should authenticate users based on the oauth callback' do
24
- # TODO
25
- end
26
-
27
- it 'should let users logout' do
28
- controller.sign_in account
29
- expect(controller.current_account).to eq(account)
30
- expect(controller.current_account.is_anonymous?).to eq(false)
31
- delete :destroy
32
- expect(controller.current_account).to eq(AnonymousAccount.instance)
33
- expect(controller.current_account.is_anonymous?).to eq(true)
34
- end
35
-
36
- it 'should get signout redirect URL from configured setting' do
37
- my_lambda = ->(request) { "http://www.google.com" }
38
- OpenStax::Accounts.configuration.logout_redirect_url = my_lambda
39
-
40
- allow(OpenStax::Accounts.configuration).to receive(:enable_stubbing?) {false}
41
- expect(my_lambda).to receive(:call).with(anything())
42
-
43
- controller.sign_in account
44
- delete :destroy
45
- end
46
-
47
- it 'should store specified url for redirection after to login if approved' do
48
- OpenStax::Accounts.configuration.return_to_url_approver = ->(url) { true }
49
- allow(OpenStax::Accounts.configuration).to receive(:enable_stubbing?) {false}
50
- get :new, return_to: "https://woohoo"
51
- expect(session["accounts_return_to"]).to eq "https://woohoo"
52
- end
53
-
54
- it 'should not store specified url for redirection after login if not approved' do
55
- OpenStax::Accounts.configuration.return_to_url_approver = ->(url) { false }
56
- allow(OpenStax::Accounts.configuration).to receive(:enable_stubbing?) {false}
57
- get :new, return_to: "https://woohoo"
58
- expect(session["accounts_return_to"]).to eq nil
59
- end
60
-
61
- it 'should give the return_to url to the config approver' do
62
- my_lambda = ->(url) { true }
63
- OpenStax::Accounts.configuration.return_to_url_approver = my_lambda
64
-
65
- allow(OpenStax::Accounts.configuration).to receive(:enable_stubbing?) {false}
66
- expect(my_lambda).to receive(:call).with("http://jimmy")
67
-
68
- get :new, return_to: 'http://jimmy'
69
- end
70
- end
71
- end