scimitar 1.8.1 → 2.0.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scimitar/active_record_backed_resources_controller.rb +20 -94
  3. data/app/controllers/scimitar/application_controller.rb +13 -41
  4. data/app/controllers/scimitar/schemas_controller.rb +0 -5
  5. data/app/models/scimitar/complex_types/address.rb +6 -0
  6. data/app/models/scimitar/engine_configuration.rb +5 -13
  7. data/app/models/scimitar/error_response.rb +0 -12
  8. data/app/models/scimitar/lists/query_parser.rb +10 -25
  9. data/app/models/scimitar/resource_invalid_error.rb +1 -1
  10. data/app/models/scimitar/resources/base.rb +4 -14
  11. data/app/models/scimitar/resources/mixin.rb +13 -140
  12. data/app/models/scimitar/schema/address.rb +0 -1
  13. data/app/models/scimitar/schema/attribute.rb +5 -14
  14. data/app/models/scimitar/schema/base.rb +1 -1
  15. data/app/models/scimitar/schema/vdtp.rb +1 -1
  16. data/app/models/scimitar/service_provider_configuration.rb +3 -14
  17. data/config/initializers/scimitar.rb +3 -28
  18. data/lib/scimitar/version.rb +2 -2
  19. data/lib/scimitar.rb +2 -7
  20. data/spec/apps/dummy/app/controllers/mock_groups_controller.rb +1 -1
  21. data/spec/apps/dummy/app/models/mock_group.rb +1 -1
  22. data/spec/apps/dummy/app/models/mock_user.rb +8 -36
  23. data/spec/apps/dummy/config/application.rb +1 -0
  24. data/spec/apps/dummy/config/environments/test.rb +28 -5
  25. data/spec/apps/dummy/config/initializers/scimitar.rb +10 -61
  26. data/spec/apps/dummy/config/routes.rb +7 -28
  27. data/spec/apps/dummy/db/migrate/20210304014602_create_mock_users.rb +1 -10
  28. data/spec/apps/dummy/db/migrate/20210308044214_create_join_table_mock_groups_mock_users.rb +3 -8
  29. data/spec/apps/dummy/db/schema.rb +4 -11
  30. data/spec/controllers/scimitar/application_controller_spec.rb +3 -126
  31. data/spec/controllers/scimitar/resource_types_controller_spec.rb +2 -2
  32. data/spec/controllers/scimitar/schemas_controller_spec.rb +2 -10
  33. data/spec/models/scimitar/complex_types/address_spec.rb +4 -3
  34. data/spec/models/scimitar/complex_types/email_spec.rb +2 -0
  35. data/spec/models/scimitar/lists/query_parser_spec.rb +9 -76
  36. data/spec/models/scimitar/resources/base_spec.rb +70 -208
  37. data/spec/models/scimitar/resources/base_validation_spec.rb +2 -27
  38. data/spec/models/scimitar/resources/mixin_spec.rb +43 -790
  39. data/spec/models/scimitar/schema/attribute_spec.rb +3 -22
  40. data/spec/models/scimitar/schema/base_spec.rb +1 -1
  41. data/spec/models/scimitar/schema/user_spec.rb +0 -10
  42. data/spec/requests/active_record_backed_resources_controller_spec.rb +66 -709
  43. data/spec/requests/application_controller_spec.rb +3 -16
  44. data/spec/spec_helper.rb +0 -8
  45. metadata +14 -25
  46. data/LICENSE.txt +0 -21
  47. data/README.md +0 -710
  48. data/lib/scimitar/support/utilities.rb +0 -51
  49. data/spec/apps/dummy/app/controllers/custom_create_mock_users_controller.rb +0 -25
  50. data/spec/apps/dummy/app/controllers/custom_replace_mock_users_controller.rb +0 -25
  51. data/spec/apps/dummy/app/controllers/custom_save_mock_users_controller.rb +0 -24
  52. data/spec/apps/dummy/app/controllers/custom_update_mock_users_controller.rb +0 -25
@@ -21,8 +21,10 @@ RSpec.describe Scimitar::Schema::Attribute do
21
21
  expect(name.type).to eql('complex')
22
22
  expect(name.subAttributes).to eql(Scimitar::Schema::Name.scim_attributes)
23
23
  end
24
+
24
25
  end
25
26
 
27
+
26
28
  context '#valid?' do
27
29
  it 'is invalid if attribute is required but value is blank' do
28
30
  attribute = described_class.new(name: 'userName', type: 'string', required: true)
@@ -46,28 +48,6 @@ RSpec.describe Scimitar::Schema::Attribute do
46
48
  expect(attribute.errors.messages.to_h).to eql({userName: ['has the wrong type. It has to be a(n) string.']})
47
49
  end
48
50
 
49
- it 'is valid if multi-valued and type is string and given value is an array of strings' do
50
- attribute = described_class.new(name: 'scopes', multiValued: true, type: 'string')
51
- expect(attribute.valid?(['something', 'something else'])).to be(true)
52
- end
53
-
54
- it 'is valid if multi-valued and type is string and given value is an empty array' do
55
- attribute = described_class.new(name: 'scopes', multiValued: true, type: 'string')
56
- expect(attribute.valid?([])).to be(true)
57
- end
58
-
59
- it 'is invalid if multi-valued and type is string and given value is not an array' do
60
- attribute = described_class.new(name: 'scopes', multiValued: true, type: 'string')
61
- expect(attribute.valid?('something')).to be(false)
62
- expect(attribute.errors.messages.to_h).to eql({scopes: ['or one of its elements has the wrong type. It has to be an array of strings.']})
63
- end
64
-
65
- it 'is invalid if multi-valued and type is string and given value is an array containing another type' do
66
- attribute = described_class.new(name: 'scopes', multiValued: true, type: 'string')
67
- expect(attribute.valid?(['something', 123])).to be(false)
68
- expect(attribute.errors.messages.to_h).to eql({scopes: ['or one of its elements has the wrong type. It has to be an array of strings.']})
69
- end
70
-
71
51
  it 'is valid if type is boolean and given value is boolean' do
72
52
  expect(described_class.new(name: 'name', type: 'boolean').valid?(false)).to be(true)
73
53
  expect(described_class.new(name: 'name', type: 'boolean').valid?(true)).to be(true)
@@ -96,4 +76,5 @@ RSpec.describe Scimitar::Schema::Attribute do
96
76
  expect(described_class.new(name: 'startDate', type: 'dateTime').valid?('gaga')).to be(false)
97
77
  end
98
78
  end
79
+
99
80
  end
@@ -11,7 +11,7 @@ RSpec.describe Scimitar::Schema::Base do
11
11
  end
12
12
 
13
13
  context '#initialize' do
14
- it 'creates "meta"' do
14
+ it 'creates a meta' do
15
15
  schema = described_class.new
16
16
  expect(schema.meta.resourceType).to eql('Schema')
17
17
  end
@@ -419,16 +419,6 @@ RSpec.describe Scimitar::Schema::User do
419
419
  "name": "type",
420
420
  "type": "string"
421
421
  },
422
- {
423
- "multiValued": false,
424
- "required": false,
425
- "caseExact": false,
426
- "mutability": "readWrite",
427
- "uniqueness": "none",
428
- "returned": "default",
429
- "name": "primary",
430
- "type": "boolean"
431
- },
432
422
  {
433
423
  "multiValued": false,
434
424
  "required": false,