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.
- checksums.yaml +4 -4
- data/app/controllers/scimitar/active_record_backed_resources_controller.rb +20 -94
- data/app/controllers/scimitar/application_controller.rb +13 -41
- data/app/controllers/scimitar/schemas_controller.rb +0 -5
- data/app/models/scimitar/complex_types/address.rb +6 -0
- data/app/models/scimitar/engine_configuration.rb +5 -13
- data/app/models/scimitar/error_response.rb +0 -12
- data/app/models/scimitar/lists/query_parser.rb +10 -25
- data/app/models/scimitar/resource_invalid_error.rb +1 -1
- data/app/models/scimitar/resources/base.rb +4 -14
- data/app/models/scimitar/resources/mixin.rb +13 -140
- data/app/models/scimitar/schema/address.rb +0 -1
- data/app/models/scimitar/schema/attribute.rb +5 -14
- data/app/models/scimitar/schema/base.rb +1 -1
- data/app/models/scimitar/schema/vdtp.rb +1 -1
- data/app/models/scimitar/service_provider_configuration.rb +3 -14
- data/config/initializers/scimitar.rb +3 -28
- data/lib/scimitar/version.rb +2 -2
- data/lib/scimitar.rb +2 -7
- data/spec/apps/dummy/app/controllers/mock_groups_controller.rb +1 -1
- data/spec/apps/dummy/app/models/mock_group.rb +1 -1
- data/spec/apps/dummy/app/models/mock_user.rb +8 -36
- data/spec/apps/dummy/config/application.rb +1 -0
- data/spec/apps/dummy/config/environments/test.rb +28 -5
- data/spec/apps/dummy/config/initializers/scimitar.rb +10 -61
- data/spec/apps/dummy/config/routes.rb +7 -28
- data/spec/apps/dummy/db/migrate/20210304014602_create_mock_users.rb +1 -10
- data/spec/apps/dummy/db/migrate/20210308044214_create_join_table_mock_groups_mock_users.rb +3 -8
- data/spec/apps/dummy/db/schema.rb +4 -11
- data/spec/controllers/scimitar/application_controller_spec.rb +3 -126
- data/spec/controllers/scimitar/resource_types_controller_spec.rb +2 -2
- data/spec/controllers/scimitar/schemas_controller_spec.rb +2 -10
- data/spec/models/scimitar/complex_types/address_spec.rb +4 -3
- data/spec/models/scimitar/complex_types/email_spec.rb +2 -0
- data/spec/models/scimitar/lists/query_parser_spec.rb +9 -76
- data/spec/models/scimitar/resources/base_spec.rb +70 -208
- data/spec/models/scimitar/resources/base_validation_spec.rb +2 -27
- data/spec/models/scimitar/resources/mixin_spec.rb +43 -790
- data/spec/models/scimitar/schema/attribute_spec.rb +3 -22
- data/spec/models/scimitar/schema/base_spec.rb +1 -1
- data/spec/models/scimitar/schema/user_spec.rb +0 -10
- data/spec/requests/active_record_backed_resources_controller_spec.rb +66 -709
- data/spec/requests/application_controller_spec.rb +3 -16
- data/spec/spec_helper.rb +0 -8
- metadata +14 -25
- data/LICENSE.txt +0 -21
- data/README.md +0 -710
- data/lib/scimitar/support/utilities.rb +0 -51
- data/spec/apps/dummy/app/controllers/custom_create_mock_users_controller.rb +0 -25
- data/spec/apps/dummy/app/controllers/custom_replace_mock_users_controller.rb +0 -25
- data/spec/apps/dummy/app/controllers/custom_save_mock_users_controller.rb +0 -24
- data/spec/apps/dummy/app/controllers/custom_update_mock_users_controller.rb +0 -25
@@ -1,51 +0,0 @@
|
|
1
|
-
module Scimitar
|
2
|
-
|
3
|
-
# Namespace containing various chunks of Scimitar support code that don't
|
4
|
-
# logically fit into other areas.
|
5
|
-
#
|
6
|
-
module Support
|
7
|
-
|
8
|
-
# A namespace that contains various stand-alone utility methods which act
|
9
|
-
# as helpers for other parts of the code base, without risking namespace
|
10
|
-
# pollution by e.g. being part of a module loaded into a client class.
|
11
|
-
#
|
12
|
-
module Utilities
|
13
|
-
|
14
|
-
# Takes an array of components that usually come from a dotted path such
|
15
|
-
# as <tt>foo.bar.baz</tt>, along with a value that is found at the end of
|
16
|
-
# that path, then converts it into a nested Hash with each level of the
|
17
|
-
# Hash corresponding to a step along the path.
|
18
|
-
#
|
19
|
-
# This was written to help with edge case SCIM uses where (most often, at
|
20
|
-
# least) inbound calls use a dotted notation where nested values are more
|
21
|
-
# commonly accepted; converting to nesting makes it easier for subsequent
|
22
|
-
# processing code, which needs only handle nested Hash data.
|
23
|
-
#
|
24
|
-
# As an example, passing:
|
25
|
-
#
|
26
|
-
# ['foo', 'bar', 'baz'], 'value'
|
27
|
-
#
|
28
|
-
# ...yields:
|
29
|
-
#
|
30
|
-
# {'foo' => {'bar' => {'baz' => 'value'}}}
|
31
|
-
#
|
32
|
-
# Parameters:
|
33
|
-
#
|
34
|
-
# +array+:: Array containing path components, usually acquired from a
|
35
|
-
# string with dot separators and a call to String#split.
|
36
|
-
#
|
37
|
-
# +value+:: The value found at the path indicated by +array+.
|
38
|
-
#
|
39
|
-
# If +array+ is empty, +value+ is returned directly, with no nesting
|
40
|
-
# Hash wrapping it.
|
41
|
-
#
|
42
|
-
def self.dot_path(array, value)
|
43
|
-
return value if array.empty?
|
44
|
-
|
45
|
-
{}.tap do | hash |
|
46
|
-
hash[array.shift()] = self.dot_path(array, value)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# For tests only - uses custom 'create' implementation which passes a block to
|
2
|
-
# Scimitar::ActiveRecordBackedResourcesController#create.
|
3
|
-
#
|
4
|
-
class CustomCreateMockUsersController < Scimitar::ActiveRecordBackedResourcesController
|
5
|
-
|
6
|
-
OVERRIDDEN_NAME = SecureRandom.uuid
|
7
|
-
|
8
|
-
def create
|
9
|
-
super do | resource |
|
10
|
-
resource.first_name = OVERRIDDEN_NAME
|
11
|
-
resource.save!
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def storage_class
|
18
|
-
MockUser
|
19
|
-
end
|
20
|
-
|
21
|
-
def storage_scope
|
22
|
-
MockUser.all
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# For tests only - uses custom 'replace' implementation which passes a block to
|
2
|
-
# Scimitar::ActiveRecordBackedResourcesController#create.
|
3
|
-
#
|
4
|
-
class CustomReplaceMockUsersController < Scimitar::ActiveRecordBackedResourcesController
|
5
|
-
|
6
|
-
OVERRIDDEN_NAME = SecureRandom.uuid
|
7
|
-
|
8
|
-
def replace
|
9
|
-
super do | resource |
|
10
|
-
resource.first_name = OVERRIDDEN_NAME
|
11
|
-
resource.save!
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def storage_class
|
18
|
-
MockUser
|
19
|
-
end
|
20
|
-
|
21
|
-
def storage_scope
|
22
|
-
MockUser.all
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# For tests only - uses custom 'save!' implementation which passes a block to
|
2
|
-
# Scimitar::ActiveRecordBackedResourcesController#save!.
|
3
|
-
#
|
4
|
-
class CustomSaveMockUsersController < Scimitar::ActiveRecordBackedResourcesController
|
5
|
-
|
6
|
-
CUSTOM_SAVE_BLOCK_USERNAME_INDICATOR = 'Custom save-block invoked'
|
7
|
-
|
8
|
-
protected
|
9
|
-
|
10
|
-
def save!(_record)
|
11
|
-
super do | record |
|
12
|
-
record.update!(username: CUSTOM_SAVE_BLOCK_USERNAME_INDICATOR)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def storage_class
|
17
|
-
MockUser
|
18
|
-
end
|
19
|
-
|
20
|
-
def storage_scope
|
21
|
-
MockUser.all
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# For tests only - uses custom 'update' implementation which passes a block to
|
2
|
-
# Scimitar::ActiveRecordBackedResourcesController#create.
|
3
|
-
#
|
4
|
-
class CustomUpdateMockUsersController < Scimitar::ActiveRecordBackedResourcesController
|
5
|
-
|
6
|
-
OVERRIDDEN_NAME = SecureRandom.uuid
|
7
|
-
|
8
|
-
def update
|
9
|
-
super do | resource |
|
10
|
-
resource.first_name = OVERRIDDEN_NAME
|
11
|
-
resource.save!
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def storage_class
|
18
|
-
MockUser
|
19
|
-
end
|
20
|
-
|
21
|
-
def storage_scope
|
22
|
-
MockUser.all
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|