Source code for scim2_tester.checkers.service_provider_config

from scim2_models import ServiceProviderConfig

from ..utils import CheckContext
from ..utils import CheckResult
from ..utils import Status
from ..utils import check_result
from ..utils import checker
from ._discovery_utils import _test_discovery_endpoint_methods


[docs] @checker("*", "discovery", "service-provider-config") def service_provider_config_endpoint( context: CheckContext, ) -> list[CheckResult]: """Validate the mandatory ServiceProviderConfig discovery endpoint. Tests that the ``/ServiceProviderConfig`` endpoint is accessible via GET request and returns a valid :class:`~scim2_models.ServiceProviderConfig` object containing server capabilities and supported features. **Status:** - :attr:`~scim2_tester.Status.SUCCESS`: Endpoint returns valid :class:`~scim2_models.ServiceProviderConfig` object - :attr:`~scim2_tester.Status.ERROR`: Endpoint is inaccessible or returns invalid response .. pull-quote:: :rfc:`RFC 7644 Section 4 - Discovery <7644#section-4>` "An HTTP GET to this endpoint will return a JSON structure that describes the SCIM specification features available on a service provider." "Service providers MUST provide this endpoint." """ response = context.client.query( ServiceProviderConfig, expected_status_codes=context.conf.expected_status_codes or [200], ) return [ check_result( context, status=Status.SUCCESS, data=response, ) ]
[docs] @checker("discovery", "service-provider-config") def service_provider_config_endpoint_methods( context: CheckContext, ) -> list[CheckResult]: """Validate that unsupported HTTP methods return 405 Method Not Allowed. Tests that POST, PUT, PATCH, and DELETE methods on the ``/ServiceProviderConfig`` endpoint correctly return HTTP 405 Method Not Allowed status, as only GET is supported. **Status:** - :attr:`~scim2_tester.Status.SUCCESS`: All unsupported methods return 405 status - :attr:`~scim2_tester.Status.ERROR`: One or more methods return unexpected status .. pull-quote:: :rfc:`RFC 7644 Section 4 - Discovery <7644#section-4>` "An HTTP GET to this endpoint will return a JSON structure that describes the SCIM specification features available on a service provider." Only GET method is specified, other methods should return appropriate errors. """ return _test_discovery_endpoint_methods(context, "/ServiceProviderConfig")