scimitar 2.5.0 → 2.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +21 -0
- data/README.md +671 -0
- data/app/controllers/scimitar/active_record_backed_resources_controller.rb +22 -4
- data/app/controllers/scimitar/application_controller.rb +7 -2
- data/app/controllers/scimitar/schemas_controller.rb +5 -0
- data/app/models/scimitar/resources/base.rb +12 -2
- data/app/models/scimitar/schema/attribute.rb +14 -5
- data/app/models/scimitar/schema/base.rb +1 -1
- data/config/initializers/scimitar.rb +8 -3
- data/lib/scimitar/version.rb +2 -2
- data/spec/apps/dummy/app/controllers/custom_save_mock_users_controller.rb +24 -0
- data/spec/apps/dummy/app/models/mock_user.rb +2 -0
- data/spec/apps/dummy/config/initializers/scimitar.rb +8 -0
- data/spec/apps/dummy/config/routes.rb +5 -0
- data/spec/apps/dummy/db/migrate/20210304014602_create_mock_users.rb +1 -0
- data/spec/apps/dummy/db/schema.rb +2 -1
- data/spec/controllers/scimitar/application_controller_spec.rb +2 -2
- data/spec/controllers/scimitar/resource_types_controller_spec.rb +2 -2
- data/spec/controllers/scimitar/schemas_controller_spec.rb +8 -0
- data/spec/models/scimitar/resources/base_spec.rb +38 -4
- data/spec/models/scimitar/resources/mixin_spec.rb +4 -1
- data/spec/models/scimitar/schema/attribute_spec.rb +22 -0
- data/spec/requests/active_record_backed_resources_controller_spec.rb +125 -33
- metadata +7 -3
@@ -26,13 +26,17 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
26
26
|
|
27
27
|
context '#index' do
|
28
28
|
context 'with no items' do
|
29
|
-
|
29
|
+
before :each do
|
30
30
|
MockUser.delete_all
|
31
|
+
end
|
31
32
|
|
33
|
+
it 'returns empty list' do
|
32
34
|
expect_any_instance_of(MockUsersController).to receive(:index).once.and_call_original
|
33
35
|
get '/Users', params: { format: :scim }
|
34
36
|
|
35
|
-
expect(response.status).to eql(200)
|
37
|
+
expect(response.status ).to eql(200)
|
38
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
39
|
+
|
36
40
|
result = JSON.parse(response.body)
|
37
41
|
|
38
42
|
expect(result['totalResults']).to eql(0)
|
@@ -46,7 +50,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
46
50
|
it 'returns all items' do
|
47
51
|
get '/Users', params: { format: :scim }
|
48
52
|
|
49
|
-
expect(response.status).to eql(200)
|
53
|
+
expect(response.status ).to eql(200)
|
54
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
55
|
+
|
50
56
|
result = JSON.parse(response.body)
|
51
57
|
|
52
58
|
expect(result['totalResults']).to eql(3)
|
@@ -64,7 +70,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
64
70
|
it 'returns all items' do
|
65
71
|
get '/Groups', params: { format: :scim }
|
66
72
|
|
67
|
-
expect(response.status).to eql(200)
|
73
|
+
expect(response.status ).to eql(200)
|
74
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
75
|
+
|
68
76
|
result = JSON.parse(response.body)
|
69
77
|
|
70
78
|
expect(result['totalResults']).to eql(3)
|
@@ -84,7 +92,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
84
92
|
filter: 'name.givenName eq "FOO" and name.familyName pr and emails ne "home_1@test.com"'
|
85
93
|
}
|
86
94
|
|
87
|
-
expect(response.status).to eql(200)
|
95
|
+
expect(response.status ).to eql(200)
|
96
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
97
|
+
|
88
98
|
result = JSON.parse(response.body)
|
89
99
|
|
90
100
|
expect(result['totalResults']).to eql(1)
|
@@ -103,7 +113,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
103
113
|
filter: 'name.GIVENNAME eq "Foo" and name.Familyname pr and emails ne "home_1@test.com"'
|
104
114
|
}
|
105
115
|
|
106
|
-
expect(response.status).to eql(200)
|
116
|
+
expect(response.status ).to eql(200)
|
117
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
118
|
+
|
107
119
|
result = JSON.parse(response.body)
|
108
120
|
|
109
121
|
expect(result['totalResults']).to eql(1)
|
@@ -126,7 +138,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
126
138
|
filter: "id eq \"#{@u3.primary_key}\""
|
127
139
|
}
|
128
140
|
|
129
|
-
expect(response.status).to eql(200)
|
141
|
+
expect(response.status ).to eql(200)
|
142
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
143
|
+
|
130
144
|
result = JSON.parse(response.body)
|
131
145
|
|
132
146
|
expect(result['totalResults']).to eql(1)
|
@@ -145,7 +159,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
145
159
|
filter: "externalID eq \"#{@u2.scim_uid}\""
|
146
160
|
}
|
147
161
|
|
148
|
-
expect(response.status).to eql(200)
|
162
|
+
expect(response.status ).to eql(200)
|
163
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
164
|
+
|
149
165
|
result = JSON.parse(response.body)
|
150
166
|
|
151
167
|
expect(result['totalResults']).to eql(1)
|
@@ -164,7 +180,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
164
180
|
filter: "Meta.LastModified eq \"#{@u3.updated_at}\""
|
165
181
|
}
|
166
182
|
|
167
|
-
expect(response.status).to eql(200)
|
183
|
+
expect(response.status ).to eql(200)
|
184
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
185
|
+
|
168
186
|
result = JSON.parse(response.body)
|
169
187
|
|
170
188
|
expect(result['totalResults']).to eql(1)
|
@@ -184,7 +202,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
184
202
|
count: 2
|
185
203
|
}
|
186
204
|
|
187
|
-
expect(response.status).to eql(200)
|
205
|
+
expect(response.status ).to eql(200)
|
206
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
207
|
+
|
188
208
|
result = JSON.parse(response.body)
|
189
209
|
|
190
210
|
expect(result['totalResults']).to eql(3)
|
@@ -203,7 +223,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
203
223
|
startIndex: 2
|
204
224
|
}
|
205
225
|
|
206
|
-
expect(response.status).to eql(200)
|
226
|
+
expect(response.status ).to eql(200)
|
227
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
228
|
+
|
207
229
|
result = JSON.parse(response.body)
|
208
230
|
|
209
231
|
expect(result['totalResults']).to eql(3)
|
@@ -224,8 +246,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
224
246
|
filter: 'name.givenName'
|
225
247
|
}
|
226
248
|
|
227
|
-
expect(response.status).to eql(400)
|
249
|
+
expect(response.status ).to eql(400)
|
250
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
251
|
+
|
228
252
|
result = JSON.parse(response.body)
|
253
|
+
|
229
254
|
expect(result['scimType']).to eql('invalidFilter')
|
230
255
|
end
|
231
256
|
end # "context 'with bad calls' do"
|
@@ -239,7 +264,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
239
264
|
expect_any_instance_of(MockUsersController).to receive(:show).once.and_call_original
|
240
265
|
get "/Users/#{@u2.primary_key}", params: { format: :scim }
|
241
266
|
|
242
|
-
expect(response.status).to eql(200)
|
267
|
+
expect(response.status ).to eql(200)
|
268
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
269
|
+
|
243
270
|
result = JSON.parse(response.body)
|
244
271
|
|
245
272
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -254,7 +281,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
254
281
|
expect_any_instance_of(MockGroupsController).to receive(:show).once.and_call_original
|
255
282
|
get "/Groups/#{@g2.id}", params: { format: :scim }
|
256
283
|
|
257
|
-
expect(response.status).to eql(200)
|
284
|
+
expect(response.status ).to eql(200)
|
285
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
286
|
+
|
258
287
|
result = JSON.parse(response.body)
|
259
288
|
|
260
289
|
expect(result['id']).to eql(@g2.id.to_s) # Note - ID was converted String; not Integer
|
@@ -266,8 +295,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
266
295
|
it 'renders 404' do
|
267
296
|
get '/Users/xyz', params: { format: :scim }
|
268
297
|
|
269
|
-
expect(response.status).to eql(404)
|
298
|
+
expect(response.status ).to eql(404)
|
299
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
300
|
+
|
270
301
|
result = JSON.parse(response.body)
|
302
|
+
|
271
303
|
expect(result['status']).to eql('404')
|
272
304
|
end
|
273
305
|
end # "context '#show' do"
|
@@ -291,7 +323,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
291
323
|
mock_after = MockUser.all.to_a
|
292
324
|
new_mock = (mock_after - mock_before).first
|
293
325
|
|
294
|
-
expect(response.status).to eql(201)
|
326
|
+
expect(response.status ).to eql(201)
|
327
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
328
|
+
|
295
329
|
result = JSON.parse(response.body)
|
296
330
|
|
297
331
|
expect(result['id']).to eql(new_mock.primary_key.to_s)
|
@@ -332,7 +366,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
332
366
|
mock_after = MockUser.all.to_a
|
333
367
|
new_mock = (mock_after - mock_before).first
|
334
368
|
|
335
|
-
expect(response.status).to eql(201)
|
369
|
+
expect(response.status ).to eql(201)
|
370
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
371
|
+
|
336
372
|
result = JSON.parse(response.body)
|
337
373
|
|
338
374
|
expect(result['id']).to eql(new_mock.id.to_s)
|
@@ -363,8 +399,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
363
399
|
}
|
364
400
|
}.to_not change { MockUser.count }
|
365
401
|
|
366
|
-
expect(response.status).to eql(409)
|
402
|
+
expect(response.status ).to eql(409)
|
403
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
404
|
+
|
367
405
|
result = JSON.parse(response.body)
|
406
|
+
|
368
407
|
expect(result['scimType']).to eql('uniqueness')
|
369
408
|
expect(result['detail']).to include('already been taken')
|
370
409
|
end
|
@@ -377,8 +416,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
377
416
|
}
|
378
417
|
}.to_not change { MockUser.count }
|
379
418
|
|
380
|
-
expect(response.status).to eql(400)
|
419
|
+
expect(response.status ).to eql(400)
|
420
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
421
|
+
|
381
422
|
result = JSON.parse(response.body)
|
423
|
+
|
382
424
|
expect(result['scimType']).to eql('invalidValue')
|
383
425
|
expect(result['detail']).to include('is required')
|
384
426
|
end
|
@@ -391,12 +433,32 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
391
433
|
}
|
392
434
|
}.to_not change { MockUser.count }
|
393
435
|
|
394
|
-
expect(response.status).to eql(400)
|
436
|
+
expect(response.status ).to eql(400)
|
437
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
438
|
+
|
395
439
|
result = JSON.parse(response.body)
|
396
440
|
|
397
441
|
expect(result['scimType']).to eql('invalidValue')
|
398
442
|
expect(result['detail']).to include('is reserved')
|
399
443
|
end
|
444
|
+
|
445
|
+
it 'invokes a block if given one' do
|
446
|
+
mock_before = MockUser.all.to_a
|
447
|
+
attributes = { userName: '5' } # Minimum required by schema
|
448
|
+
|
449
|
+
expect_any_instance_of(CustomSaveMockUsersController).to receive(:create).once.and_call_original
|
450
|
+
expect {
|
451
|
+
post "/CustomSaveUsers", params: attributes.merge(format: :scim)
|
452
|
+
}.to change { MockUser.count }.by(1)
|
453
|
+
|
454
|
+
mock_after = MockUser.all.to_a
|
455
|
+
new_mock = (mock_after - mock_before).first
|
456
|
+
|
457
|
+
expect(response.status ).to eql(201)
|
458
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
459
|
+
|
460
|
+
expect(new_mock.username).to eql(CustomSaveMockUsersController::CUSTOM_SAVE_BLOCK_USERNAME_INDICATOR)
|
461
|
+
end
|
400
462
|
end # "context '#create' do"
|
401
463
|
|
402
464
|
# ===========================================================================
|
@@ -412,7 +474,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
412
474
|
put "/Users/#{@u2.primary_key}", params: attributes.merge(format: :scim)
|
413
475
|
}.to_not change { MockUser.count }
|
414
476
|
|
415
|
-
expect(response.status).to eql(200)
|
477
|
+
expect(response.status ).to eql(200)
|
478
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
479
|
+
|
416
480
|
result = JSON.parse(response.body)
|
417
481
|
|
418
482
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -443,8 +507,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
443
507
|
}
|
444
508
|
}.to_not change { MockUser.count }
|
445
509
|
|
446
|
-
expect(response.status).to eql(400)
|
510
|
+
expect(response.status ).to eql(400)
|
511
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
512
|
+
|
447
513
|
result = JSON.parse(response.body)
|
514
|
+
|
448
515
|
expect(result['scimType']).to eql('invalidValue')
|
449
516
|
expect(result['detail']).to include('is required')
|
450
517
|
|
@@ -464,7 +531,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
464
531
|
}
|
465
532
|
}.to_not change { MockUser.count }
|
466
533
|
|
467
|
-
expect(response.status).to eql(400)
|
534
|
+
expect(response.status ).to eql(400)
|
535
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
536
|
+
|
468
537
|
result = JSON.parse(response.body)
|
469
538
|
|
470
539
|
expect(result['scimType']).to eql('invalidValue')
|
@@ -486,8 +555,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
486
555
|
}
|
487
556
|
}.to_not change { MockUser.count }
|
488
557
|
|
489
|
-
expect(response.status).to eql(404)
|
558
|
+
expect(response.status ).to eql(404)
|
559
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
560
|
+
|
490
561
|
result = JSON.parse(response.body)
|
562
|
+
|
491
563
|
expect(result['status']).to eql('404')
|
492
564
|
end
|
493
565
|
end # "context '#replace' do"
|
@@ -519,7 +591,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
519
591
|
patch "/Users/#{@u2.primary_key}", params: payload.merge(format: :scim)
|
520
592
|
}.to_not change { MockUser.count }
|
521
593
|
|
522
|
-
expect(response.status).to eql(200)
|
594
|
+
expect(response.status ).to eql(200)
|
595
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
596
|
+
|
523
597
|
result = JSON.parse(response.body)
|
524
598
|
|
525
599
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -556,7 +630,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
556
630
|
patch "/Users/#{@u2.primary_key}", params: payload.merge(format: :scim)
|
557
631
|
}.to_not change { MockUser.count }
|
558
632
|
|
559
|
-
expect(response.status).to eql(200)
|
633
|
+
expect(response.status ).to eql(200)
|
634
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
635
|
+
|
560
636
|
result = JSON.parse(response.body)
|
561
637
|
|
562
638
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -588,7 +664,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
588
664
|
patch "/Users/#{@u2.primary_key}", params: payload.merge(format: :scim)
|
589
665
|
}.to_not change { MockUser.count }
|
590
666
|
|
591
|
-
expect(response.status).to eql(200)
|
667
|
+
expect(response.status ).to eql(200)
|
668
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
669
|
+
|
592
670
|
result = JSON.parse(response.body)
|
593
671
|
|
594
672
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -620,7 +698,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
620
698
|
patch "/Users/#{@u2.primary_key}", params: payload.merge(format: :scim)
|
621
699
|
}.to_not change { MockUser.count }
|
622
700
|
|
623
|
-
expect(response.status).to eql(200)
|
701
|
+
expect(response.status ).to eql(200)
|
702
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
703
|
+
|
624
704
|
result = JSON.parse(response.body)
|
625
705
|
|
626
706
|
expect(result['id']).to eql(@u2.primary_key.to_s)
|
@@ -659,7 +739,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
659
739
|
}
|
660
740
|
}.to_not change { MockUser.count }
|
661
741
|
|
662
|
-
expect(response.status).to eql(400)
|
742
|
+
expect(response.status ).to eql(400)
|
743
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
744
|
+
|
663
745
|
result = JSON.parse(response.body)
|
664
746
|
|
665
747
|
expect(result['scimType']).to eql('invalidValue')
|
@@ -687,8 +769,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
687
769
|
}
|
688
770
|
}.to_not change { MockUser.count }
|
689
771
|
|
690
|
-
expect(response.status).to eql(404)
|
772
|
+
expect(response.status ).to eql(404)
|
773
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
774
|
+
|
691
775
|
result = JSON.parse(response.body)
|
776
|
+
|
692
777
|
expect(result['status']).to eql('404')
|
693
778
|
end
|
694
779
|
|
@@ -725,7 +810,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
725
810
|
|
726
811
|
get "/Groups/#{@g1.id}", params: { format: :scim }
|
727
812
|
|
728
|
-
expect(response.status).to eql(200)
|
813
|
+
expect(response.status ).to eql(200)
|
814
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
815
|
+
|
729
816
|
result = JSON.parse(response.body)
|
730
817
|
|
731
818
|
expect(result['members']).to be_empty
|
@@ -752,7 +839,9 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
752
839
|
|
753
840
|
get "/Groups/#{@g1.id}", params: { format: :scim }
|
754
841
|
|
755
|
-
expect(response.status).to eql(200)
|
842
|
+
expect(response.status ).to eql(200)
|
843
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
844
|
+
|
756
845
|
result = JSON.parse(response.body)
|
757
846
|
|
758
847
|
expect(result['members'].map { |m| m['value'] }.sort()).to eql(expected_remaining_user_ids)
|
@@ -863,8 +952,11 @@ RSpec.describe Scimitar::ActiveRecordBackedResourcesController do
|
|
863
952
|
delete '/Users/xyz', params: { format: :scim }
|
864
953
|
}.to_not change { MockUser.count }
|
865
954
|
|
866
|
-
expect(response.status).to eql(404)
|
955
|
+
expect(response.status ).to eql(404)
|
956
|
+
expect(response.headers['Content-Type']).to eql('application/scim+json; charset=utf-8')
|
957
|
+
|
867
958
|
result = JSON.parse(response.body)
|
959
|
+
|
868
960
|
expect(result['status']).to eql('404')
|
869
961
|
end
|
870
962
|
end # "context '#destroy' do"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scimitar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RIPA Global
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-11-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -130,6 +130,8 @@ executables: []
|
|
130
130
|
extensions: []
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
|
+
- LICENSE.txt
|
134
|
+
- README.md
|
133
135
|
- Rakefile
|
134
136
|
- app/controllers/scimitar/active_record_backed_resources_controller.rb
|
135
137
|
- app/controllers/scimitar/application_controller.rb
|
@@ -196,6 +198,7 @@ files:
|
|
196
198
|
- lib/scimitar/version.rb
|
197
199
|
- spec/apps/dummy/app/controllers/custom_destroy_mock_users_controller.rb
|
198
200
|
- spec/apps/dummy/app/controllers/custom_request_verifiers_controller.rb
|
201
|
+
- spec/apps/dummy/app/controllers/custom_save_mock_users_controller.rb
|
199
202
|
- spec/apps/dummy/app/controllers/mock_groups_controller.rb
|
200
203
|
- spec/apps/dummy/app/controllers/mock_users_controller.rb
|
201
204
|
- spec/apps/dummy/app/models/mock_group.rb
|
@@ -260,13 +263,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
263
|
- !ruby/object:Gem::Version
|
261
264
|
version: '0'
|
262
265
|
requirements: []
|
263
|
-
rubygems_version: 3.4.
|
266
|
+
rubygems_version: 3.4.10
|
264
267
|
signing_key:
|
265
268
|
specification_version: 4
|
266
269
|
summary: SCIM v2 for Rails
|
267
270
|
test_files:
|
268
271
|
- spec/apps/dummy/app/controllers/custom_destroy_mock_users_controller.rb
|
269
272
|
- spec/apps/dummy/app/controllers/custom_request_verifiers_controller.rb
|
273
|
+
- spec/apps/dummy/app/controllers/custom_save_mock_users_controller.rb
|
270
274
|
- spec/apps/dummy/app/controllers/mock_groups_controller.rb
|
271
275
|
- spec/apps/dummy/app/controllers/mock_users_controller.rb
|
272
276
|
- spec/apps/dummy/app/models/mock_group.rb
|