Commit 33ae0dfe6f794eae190783af02ecd99ac923e395

Authored by Tao Huang
2 parents b186621e 1930828f
Exists in master

Merge remote-tracking branch 'upstream/master'

.gitignore
... ... @@ -6,3 +6,5 @@ spec/dummy/db/*.sqlite3-journal
6 6 spec/dummy/log/*.log
7 7 spec/dummy/tmp/
8 8 .rubocop-https*
  9 +
  10 +Gemfile.lock
... ...
Gemfile
... ... @@ -10,6 +10,6 @@ gemspec
10 10 # Git. Remember to move these dependencies to your gemspec before releasing
11 11 # your gem to rubygems.org.
12 12  
13   -ruby '~> 2.4'
  13 +ruby '~> 2.6.2'
14 14  
15 15 gem 'pry', group: [:development, :test]
... ...
Gemfile.lock
... ... @@ -1,164 +0,0 @@
1   -PATH
2   - remote: .
3   - specs:
4   - scim_rails (0.3.0)
5   - jwt (~> 1.5.1)
6   - rails (>= 5.0, < 6.1)
7   -
8   -GEM
9   - remote: https://rubygems.org/
10   - specs:
11   - actioncable (5.2.4.3)
12   - actionpack (= 5.2.4.3)
13   - nio4r (~> 2.0)
14   - websocket-driver (>= 0.6.1)
15   - actionmailer (5.2.4.3)
16   - actionpack (= 5.2.4.3)
17   - actionview (= 5.2.4.3)
18   - activejob (= 5.2.4.3)
19   - mail (~> 2.5, >= 2.5.4)
20   - rails-dom-testing (~> 2.0)
21   - actionpack (5.2.4.3)
22   - actionview (= 5.2.4.3)
23   - activesupport (= 5.2.4.3)
24   - rack (~> 2.0, >= 2.0.8)
25   - rack-test (>= 0.6.3)
26   - rails-dom-testing (~> 2.0)
27   - rails-html-sanitizer (~> 1.0, >= 1.0.2)
28   - actionview (5.2.4.3)
29   - activesupport (= 5.2.4.3)
30   - builder (~> 3.1)
31   - erubi (~> 1.4)
32   - rails-dom-testing (~> 2.0)
33   - rails-html-sanitizer (~> 1.0, >= 1.0.3)
34   - activejob (5.2.4.3)
35   - activesupport (= 5.2.4.3)
36   - globalid (>= 0.3.6)
37   - activemodel (5.2.4.3)
38   - activesupport (= 5.2.4.3)
39   - activerecord (5.2.4.3)
40   - activemodel (= 5.2.4.3)
41   - activesupport (= 5.2.4.3)
42   - arel (>= 9.0)
43   - activestorage (5.2.4.3)
44   - actionpack (= 5.2.4.3)
45   - activerecord (= 5.2.4.3)
46   - marcel (~> 0.3.1)
47   - activesupport (5.2.4.3)
48   - concurrent-ruby (~> 1.0, >= 1.0.2)
49   - i18n (>= 0.7, < 2)
50   - minitest (~> 5.1)
51   - tzinfo (~> 1.1)
52   - arel (9.0.0)
53   - builder (3.2.4)
54   - coderay (1.1.2)
55   - concurrent-ruby (1.1.6)
56   - crass (1.0.6)
57   - diff-lcs (1.3)
58   - erubi (1.9.0)
59   - factory_bot (5.1.0)
60   - activesupport (>= 4.2.0)
61   - factory_bot_rails (5.1.0)
62   - factory_bot (~> 5.1.0)
63   - railties (>= 4.2.0)
64   - globalid (0.4.2)
65   - activesupport (>= 4.2.0)
66   - i18n (1.8.2)
67   - concurrent-ruby (~> 1.0)
68   - jwt (1.5.6)
69   - loofah (2.5.0)
70   - crass (~> 1.0.2)
71   - nokogiri (>= 1.5.9)
72   - mail (2.7.1)
73   - mini_mime (>= 0.1.1)
74   - marcel (0.3.3)
75   - mimemagic (~> 0.3.2)
76   - method_source (0.9.2)
77   - mimemagic (0.3.5)
78   - mini_mime (1.0.2)
79   - mini_portile2 (2.4.0)
80   - minitest (5.14.1)
81   - nio4r (2.5.2)
82   - nokogiri (1.10.9)
83   - mini_portile2 (~> 2.4.0)
84   - pry (0.12.2)
85   - coderay (~> 1.1.0)
86   - method_source (~> 0.9.0)
87   - rack (2.2.2)
88   - rack-test (1.1.0)
89   - rack (>= 1.0, < 3)
90   - rails (5.2.4.3)
91   - actioncable (= 5.2.4.3)
92   - actionmailer (= 5.2.4.3)
93   - actionpack (= 5.2.4.3)
94   - actionview (= 5.2.4.3)
95   - activejob (= 5.2.4.3)
96   - activemodel (= 5.2.4.3)
97   - activerecord (= 5.2.4.3)
98   - activestorage (= 5.2.4.3)
99   - activesupport (= 5.2.4.3)
100   - bundler (>= 1.3.0)
101   - railties (= 5.2.4.3)
102   - sprockets-rails (>= 2.0.0)
103   - rails-dom-testing (2.0.3)
104   - activesupport (>= 4.2.0)
105   - nokogiri (>= 1.6)
106   - rails-html-sanitizer (1.3.0)
107   - loofah (~> 2.3)
108   - railties (5.2.4.3)
109   - actionpack (= 5.2.4.3)
110   - activesupport (= 5.2.4.3)
111   - method_source
112   - rake (>= 0.8.7)
113   - thor (>= 0.19.0, < 2.0)
114   - rake (13.0.1)
115   - rspec-core (3.8.2)
116   - rspec-support (~> 3.8.0)
117   - rspec-expectations (3.8.4)
118   - diff-lcs (>= 1.2.0, < 2.0)
119   - rspec-support (~> 3.8.0)
120   - rspec-mocks (3.8.1)
121   - diff-lcs (>= 1.2.0, < 2.0)
122   - rspec-support (~> 3.8.0)
123   - rspec-rails (3.8.2)
124   - actionpack (>= 3.0)
125   - activesupport (>= 3.0)
126   - railties (>= 3.0)
127   - rspec-core (~> 3.8.0)
128   - rspec-expectations (~> 3.8.0)
129   - rspec-mocks (~> 3.8.0)
130   - rspec-support (~> 3.8.0)
131   - rspec-support (3.8.2)
132   - sprockets (3.7.2)
133   - concurrent-ruby (~> 1.0)
134   - rack (> 1, < 3)
135   - sprockets-rails (3.2.1)
136   - actionpack (>= 4.0)
137   - activesupport (>= 4.0)
138   - sprockets (>= 3.0.0)
139   - sqlite3 (1.4.1)
140   - thor (1.0.1)
141   - thread_safe (0.3.6)
142   - tzinfo (1.2.7)
143   - thread_safe (~> 0.1)
144   - websocket-driver (0.7.2)
145   - websocket-extensions (>= 0.1.0)
146   - websocket-extensions (0.1.5)
147   -
148   -PLATFORMS
149   - ruby
150   -
151   -DEPENDENCIES
152   - bundler (~> 2.0)
153   - factory_bot_rails
154   - pry
155   - rake (~> 13.0)
156   - rspec-rails (~> 3.0)
157   - scim_rails!
158   - sqlite3 (~> 1.3, < 1.5)
159   -
160   -RUBY VERSION
161   - ruby 2.4.4p296
162   -
163   -BUNDLED WITH
164   - 2.0.2
app/controllers/scim_rails/scim_users_controller.rb
... ... @@ -146,9 +146,9 @@ module ScimRails
146 146 end
147 147  
148 148 def valid_patch_operation?(operation)
149   - operation["op"] == "replace" &&
  149 + operation["op"].casecmp("replace") &&
150 150 operation["value"] &&
151   - operation["value"]["active"]
  151 + [true, false].include?(operation["value"]["active"])
152 152 end
153 153 end
154 154 end
... ...
spec/controllers/scim_rails/scim_users_controller_spec.rb
... ... @@ -10,13 +10,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
10 10  
11 11 context "when unauthorized" do
12 12 it "returns scim+json content type" do
13   - get :index
  13 + get :index, as: :json
14 14  
15 15 expect(response.media_type).to eq "application/scim+json"
16 16 end
17 17  
18 18 it "fails with no credentials" do
19   - get :index
  19 + get :index, as: :json
20 20  
21 21 expect(response.status).to eq 401
22 22 end
... ... @@ -24,7 +24,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
24 24 it "fails with invalid credentials" do
25 25 request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("unauthorized","123456")
26 26  
27   - get :index
  27 + get :index, as: :json
28 28  
29 29 expect(response.status).to eq 401
30 30 end
... ... @@ -36,13 +36,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
36 36 end
37 37  
38 38 it "returns scim+json content type" do
39   - get :index
  39 + get :index, as: :json
40 40  
41 41 expect(response.media_type).to eq "application/scim+json"
42 42 end
43 43  
44 44 it "is successful with valid credentials" do
45   - get :index
  45 + get :index, as: :json
46 46  
47 47 expect(response.status).to eq 200
48 48 end
... ... @@ -50,7 +50,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
50 50 it "returns all results" do
51 51 create_list(:user, 10, company: company)
52 52  
53   - get :index
  53 + get :index, as: :json
54 54 response_body = JSON.parse(response.body)
55 55 expect(response_body.dig("schemas", 0)).to eq "urn:ietf:params:scim:api:messages:2.0:ListResponse"
56 56 expect(response_body["totalResults"]).to eq 10
... ... @@ -59,7 +59,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
59 59 it "defaults to 100 results" do
60 60 create_list(:user, 300, company: company)
61 61  
62   - get :index
  62 + get :index, as: :json
63 63 response_body = JSON.parse(response.body)
64 64 expect(response_body["totalResults"]).to eq 300
65 65 expect(response_body["Resources"].count).to eq 100
... ... @@ -72,7 +72,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
72 72 get :index, params: {
73 73 startIndex: 101,
74 74 count: 200,
75   - }
  75 + }, as: :json
76 76 response_body = JSON.parse(response.body)
77 77 expect(response_body["totalResults"]).to eq 400
78 78 expect(response_body["Resources"].count).to eq 200
... ... @@ -88,7 +88,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
88 88 get :index, params: {
89 89 startIndex: 1,
90 90 count: 10,
91   - }
  91 + }, as: :json
92 92 response_body = JSON.parse(response.body)
93 93 expect(response_body["totalResults"]).to eq 400
94 94 expect(response_body["Resources"].count).to eq 10
... ... @@ -101,7 +101,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
101 101  
102 102 get :index, params: {
103 103 filter: "email eq test1@example.com"
104   - }
  104 + }, as: :json
105 105 response_body = JSON.parse(response.body)
106 106 expect(response_body["totalResults"]).to eq 1
107 107 expect(response_body["Resources"].count).to eq 1
... ... @@ -113,7 +113,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
113 113  
114 114 get :index, params: {
115 115 filter: "familyName eq Shellstrop"
116   - }
  116 + }, as: :json
117 117 response_body = JSON.parse(response.body)
118 118 expect(response_body["totalResults"]).to eq 1
119 119 expect(response_body["Resources"].count).to eq 1
... ... @@ -122,7 +122,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
122 122 it "returns no results for unfound filter parameters" do
123 123 get :index, params: {
124 124 filter: "familyName eq fake_not_there"
125   - }
  125 + }, as: :json
126 126 response_body = JSON.parse(response.body)
127 127 expect(response_body["totalResults"]).to eq 0
128 128 expect(response_body["Resources"].count).to eq 0
... ... @@ -131,7 +131,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
131 131 it "returns no results for undefined filter queries" do
132 132 get :index, params: {
133 133 filter: "address eq 101 Nowhere USA"
134   - }
  134 + }, as: :json
135 135 expect(response.status).to eq 400
136 136 response_body = JSON.parse(response.body)
137 137 expect(response_body.dig("schemas", 0)).to eq "urn:ietf:params:scim:api:messages:2.0:Error"
... ... @@ -145,13 +145,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
145 145  
146 146 context "when unauthorized" do
147 147 it "returns scim+json content type" do
148   - get :show, params: { id: 1 }
  148 + get :show, params: { id: 1 }, as: :json
149 149  
150 150 expect(response.media_type).to eq "application/scim+json"
151 151 end
152 152  
153 153 it "fails with no credentials" do
154   - get :show, params: { id: 1 }
  154 + get :show, params: { id: 1 }, as: :json
155 155  
156 156 expect(response.status).to eq 401
157 157 end
... ... @@ -159,7 +159,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
159 159 it "fails with invalid credentials" do
160 160 request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("unauthorized","123456")
161 161  
162   - get :show, params: { id: 1 }
  162 + get :show, params: { id: 1 }, as: :json
163 163  
164 164 expect(response.status).to eq 401
165 165 end
... ... @@ -171,20 +171,20 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
171 171 end
172 172  
173 173 it "returns scim+json content type" do
174   - get :show, params: { id: 1 }
  174 + get :show, params: { id: 1 }, as: :json
175 175  
176 176 expect(response.media_type).to eq "application/scim+json"
177 177 end
178 178  
179 179 it "is successful with valid credentials" do
180 180 create(:user, id: 1, company: company)
181   - get :show, params: { id: 1 }
  181 + get :show, params: { id: 1 }, as: :json
182 182  
183 183 expect(response.status).to eq 200
184 184 end
185 185  
186 186 it "returns :not_found for id that cannot be found" do
187   - get :show, params: { id: "fake_id" }
  187 + get :show, params: { id: "fake_id" }, as: :json
188 188  
189 189 expect(response.status).to eq 404
190 190 end
... ... @@ -193,7 +193,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
193 193 new_company = create(:company)
194 194 create(:user, company: new_company, id: 1)
195 195  
196   - get :show, params: { id: 1 }
  196 + get :show, params: { id: 1 }, as: :json
197 197  
198 198 expect(response.status).to eq 404
199 199 end
... ... @@ -206,13 +206,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
206 206  
207 207 context "when unauthorized" do
208 208 it "returns scim+json content type" do
209   - post :create
  209 + post :create, as: :json
210 210  
211 211 expect(response.media_type).to eq "application/scim+json"
212 212 end
213 213  
214 214 it "fails with no credentials" do
215   - post :create
  215 + post :create, as: :json
216 216  
217 217 expect(response.status).to eq 401
218 218 end
... ... @@ -220,7 +220,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
220 220 it "fails with invalid credentials" do
221 221 request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("unauthorized","123456")
222 222  
223   - post :create
  223 + post :create, as: :json
224 224  
225 225 expect(response.status).to eq 401
226 226 end
... ... @@ -242,7 +242,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
242 242 value: "new@example.com"
243 243 }
244 244 ]
245   - }
  245 + }, as: :json
246 246  
247 247 expect(response.media_type).to eq "application/scim+json"
248 248 end
... ... @@ -260,7 +260,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
260 260 value: "new@example.com"
261 261 }
262 262 ]
263   - }
  263 + }, as: :json
264 264  
265 265 expect(response.status).to eq 201
266 266 expect(company.users.count).to eq 1
... ... @@ -283,7 +283,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
283 283 value: "new@example.com"
284 284 }
285 285 ]
286   - }
  286 + }, as: :json
287 287  
288 288 expect(response.status).to eq 201
289 289 expect(company.users.count).to eq 1
... ... @@ -299,7 +299,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
299 299 value: "new@example.com"
300 300 }
301 301 ]
302   - }
  302 + }, as: :json
303 303  
304 304 expect(response.status).to eq 422
305 305 expect(company.users.count).to eq 0
... ... @@ -318,7 +318,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
318 318 value: "new@example.com"
319 319 }
320 320 ]
321   - }
  321 + }, as: :json
322 322  
323 323 expect(response.status).to eq 201
324 324 expect(company.users.count).to eq 1
... ... @@ -339,7 +339,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
339 339 value: "new@example.com"
340 340 }
341 341 ]
342   - }
  342 + }, as: :json
343 343  
344 344 expect(response.status).to eq 409
345 345 expect(company.users.count).to eq 1
... ... @@ -359,7 +359,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
359 359 },
360 360 ],
361 361 active: "false"
362   - }
  362 + }, as: :json
363 363  
364 364 expect(response.status).to eq 201
365 365 expect(company.users.count).to eq 1
... ... @@ -375,13 +375,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
375 375  
376 376 context "when unauthorized" do
377 377 it "returns scim+json content type" do
378   - put :put_update, params: { id: 1 }
  378 + put :put_update, params: { id: 1 }, as: :json
379 379  
380 380 expect(response.media_type).to eq "application/scim+json"
381 381 end
382 382  
383 383 it "fails with no credentials" do
384   - put :put_update, params: { id: 1 }
  384 + put :put_update, params: { id: 1 }, as: :json
385 385  
386 386 expect(response.status).to eq 401
387 387 end
... ... @@ -389,7 +389,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
389 389 it "fails with invalid credentials" do
390 390 request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("unauthorized","123456")
391 391  
392   - put :put_update, params: { id: 1 }
  392 + put :put_update, params: { id: 1 }, as: :json
393 393  
394 394 expect(response.status).to eq 401
395 395 end
... ... @@ -403,20 +403,20 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
403 403 end
404 404  
405 405 it "returns scim+json content type" do
406   - put :put_update, params: put_params
  406 + put :put_update, params: put_params, as: :json
407 407  
408 408 expect(response.media_type).to eq "application/scim+json"
409 409 end
410 410  
411 411 it "is successful with with valid credentials" do
412   - put :put_update, params: put_params
  412 + put :put_update, params: put_params, as: :json
413 413  
414 414 expect(response.status).to eq 200
415 415 end
416 416  
417 417 it "deprovisions an active record" do
418 418 request.content_type = "application/scim+json"
419   - put :put_update, params: put_params(active: false)
  419 + put :put_update, params: put_params(active: false), as: :json
420 420  
421 421 expect(response.status).to eq 200
422 422 expect(user.reload.active?).to eq false
... ... @@ -426,14 +426,14 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
426 426 user.archive!
427 427 expect(user.reload.active?).to eq false
428 428 request.content_type = "application/scim+json"
429   - put :put_update, params: put_params(active: true)
  429 + put :put_update, params: put_params(active: true), as: :json
430 430  
431 431 expect(response.status).to eq 200
432 432 expect(user.reload.active?).to eq true
433 433 end
434 434  
435 435 it "returns :not_found for id that cannot be found" do
436   - get :put_update, params: { id: "fake_id" }
  436 + get :put_update, params: { id: "fake_id" }, as: :json
437 437  
438 438 expect(response.status).to eq 404
439 439 end
... ... @@ -442,7 +442,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
442 442 new_company = create(:company)
443 443 create(:user, company: new_company, id: 1000)
444 444  
445   - get :put_update, params: { id: 1000 }
  445 + get :put_update, params: { id: 1000 }, as: :json
446 446  
447 447 expect(response.status).to eq 404
448 448 end
... ... @@ -457,7 +457,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
457 457 },
458 458 ],
459 459 active: "true"
460   - }
  460 + }, as: :json
461 461  
462 462 expect(response.status).to eq 422
463 463 end
... ... @@ -470,13 +470,13 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
470 470  
471 471 context "when unauthorized" do
472 472 it "returns scim+json content type" do
473   - patch :patch_update, params: patch_params(id: 1)
  473 + patch :patch_update, params: patch_params(id: 1), as: :json
474 474  
475 475 expect(response.media_type).to eq "application/scim+json"
476 476 end
477 477  
478 478 it "fails with no credentials" do
479   - patch :patch_update, params: patch_params(id: 1)
  479 + patch :patch_update, params: patch_params(id: 1), as: :json
480 480  
481 481 expect(response.status).to eq 401
482 482 end
... ... @@ -484,7 +484,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
484 484 it "fails with invalid credentials" do
485 485 request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("unauthorized","123456")
486 486  
487   - patch :patch_update, params: patch_params(id: 1)
  487 + patch :patch_update, params: patch_params(id: 1), as: :json
488 488  
489 489 expect(response.status).to eq 401
490 490 end
... ... @@ -498,19 +498,19 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
498 498 end
499 499  
500 500 it "returns scim+json content type" do
501   - patch :patch_update, params: patch_params(id: 1)
  501 + patch :patch_update, params: patch_params(id: 1), as: :json
502 502  
503 503 expect(response.media_type).to eq "application/scim+json"
504 504 end
505 505  
506 506 it "is successful with valid credentials" do
507   - patch :patch_update, params: patch_params(id: 1)
  507 + patch :patch_update, params: patch_params(id: 1), as: :json
508 508  
509 509 expect(response.status).to eq 200
510 510 end
511 511  
512 512 it "returns :not_found for id that cannot be found" do
513   - get :patch_update, params: patch_params(id: "fake_id")
  513 + get :patch_update, params: patch_params(id: "fake_id"), as: :json
514 514  
515 515 expect(response.status).to eq 404
516 516 end
... ... @@ -519,7 +519,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
519 519 new_company = create(:company)
520 520 create(:user, company: new_company, id: 1000)
521 521  
522   - get :patch_update, params: patch_params(id: 1000)
  522 + get :patch_update, params: patch_params(id: 1000), as: :json
523 523  
524 524 expect(response.status).to eq 404
525 525 end
... ... @@ -529,7 +529,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
529 529 user = company.users.first
530 530 expect(user.archived?).to eq false
531 531  
532   - patch :patch_update, params: patch_params(id: 1)
  532 + patch :patch_update, params: patch_params(id: 1), as: :json
533 533  
534 534 expect(response.status).to eq 200
535 535 expect(company.users.count).to eq 1
... ... @@ -542,7 +542,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
542 542 user = company.users.first.tap(&:archive!)
543 543 expect(user.archived?).to eq true
544 544  
545   - patch :patch_update, params: patch_params(id: 1, active: true)
  545 + patch :patch_update, params: patch_params(id: 1, active: true), as: :json
546 546  
547 547 expect(response.status).to eq 200
548 548 expect(company.users.count).to eq 1
... ... @@ -550,6 +550,24 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
550 550 expect(user.archived?).to eq false
551 551 end
552 552  
  553 + it "is case insensetive for op value" do
  554 + # Note, this is for backward compatibility. op should always
  555 + # be lower case and support for case insensitivity will be removed
  556 + patch :patch_update, params: {
  557 + id: 1,
  558 + Operations: [
  559 + {
  560 + op: "Replace",
  561 + value: {
  562 + active: false
  563 + }
  564 + }
  565 + ]
  566 + }, as: :json
  567 +
  568 + expect(response.status).to eq 200
  569 + end
  570 +
553 571 it "throws an error for non status updates" do
554 572 patch :patch_update, params: {
555 573 id: 1,
... ... @@ -563,14 +581,14 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
563 581 }
564 582 }
565 583 ]
566   - }
  584 + }, as: :json
567 585  
568 586 expect(response.status).to eq 422
569 587 response_body = JSON.parse(response.body)
570 588 expect(response_body.dig("schemas", 0)).to eq "urn:ietf:params:scim:api:messages:2.0:Error"
571 589 end
572 590  
573   - it "returns 422 when value is " do
  591 + it "returns 422 when value is not an object" do
574 592 patch :patch_update, params: {
575 593 id: 1,
576 594 Operations: [
... ... @@ -595,7 +613,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
595 613 op: "replace"
596 614 }
597 615 ]
598   - }
  616 + }, as: :json
599 617  
600 618 expect(response.status).to eq 422
601 619 response_body = JSON.parse(response.body)
... ... @@ -610,7 +628,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :controller do
610 628 op: "replace"
611 629 }
612 630 ]
613   - }
  631 + }, as: :json
614 632  
615 633 expect(response.status).to eq 422
616 634 response_body = JSON.parse(response.body)
... ...
spec/controllers/scim_rails/scim_users_request_spec.rb
... ... @@ -8,7 +8,7 @@ RSpec.describe ScimRails::ScimUsersController, type: :request do
8 8 def post_request(content_type = "application/scim+json")
9 9 # params need to be transformed into a string to test if they are being parsed by Rack
10 10  
11   - post "/scim_rails/scim/v2/Users",
  11 + post "/scim/v2/Users",
12 12 params: {
13 13 name: {
14 14 givenName: "New",
... ...
spec/dummy/config/routes.rb
1 1 Rails.application.routes.draw do
2   - mount ScimRails::Engine => "/scim_rails"
  2 + mount ScimRails::Engine => "/"
3 3 end
... ...