Skip to content

Documentation ​

SCIM Verify is a highly configurable testing framework for SCIM APIs. While it works out-of-the-box with sensible defaults, you can customize its behavior extensively through a YAML configuration file to match your specific implementation requirements. This documentation explains all available configuration options.

Global Configuration ​

The global configuration settings control the overall behavior of the testing framework.

yaml
detectSchema: true           # Enables automatic schema detection from responses
detectResourceTypes: true    # Enables automatic resource type detection

User Operations ​

Configuration for testing the Users endpoint in a SCIM API.

yaml
users:
  enabled: true              # Enable testing of user operations
  operations:                # HTTP methods to test
    - GET
    - POST
    - PUT
    - PATCH
    - DELETE
  sortAttributes:            # Attributes to sort by when retrieving users
    - userName

Filter Tests ​

Tests for filtering users using SCIM filter expressions.

yaml
  filter_tests:
    - filter: userName eq "bjensen"    # Filter expression to test
      user_schema:                     # Schema to validate response against
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:User
          userName:
            type: string
            const: bjensen
        required:
          - userName
          - schemas
        additionalProperties: true

POST Tests ​

Tests for creating users via POST requests.

yaml
  post_tests:
    - request:                         # Request payload
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        userName: barbara jensen
        emails:
          - value: barbara.jensen@example.com
      response:                        # Expected response schema
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:User
          userName:
            type: string
            const: barbara jensen
        required:
          - userName
          - schemas
        additionalProperties: true
    - request:                         # Another test case
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        userName: testuser6238
        emails:
          - value: barbara.jensen@example.com
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:User
          userName:
            type: string
            const: testuser6238
          emails:
            type: array
            items:
              type: object
              properties:
                value:
                  type: string
                  const: barbara.jensen@example.com
        required:
          - userName
          - schemas
          - emails
        additionalProperties: true

PUT Tests ​

Tests for updating users via PUT requests.

yaml
  put_tests:
    - id: AUTO                         # AUTO indicates ID will be determined at runtime
      request:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:User
        userName: testuser6238
        emails:
          - value: barbara.jensen@example.com
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:User
          userName:
            type: string
            const: testuser6238
          emails:
            type: array
            items:
              type: object
              properties:
                value:
                  type: string
                  const: barbara.jensen@example.com
        required:
          - userName
          - schemas
          - emails
        additionalProperties: true

PATCH Tests ​

Tests for partial updates via PATCH requests.

yaml
  patch_tests:
    - id: AUTO
      request:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          - op: replace
            path: userName
            value: JohnDoe
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:User
          userName:
            type: string
            const: JohnDoe
        required:
          - userName
          - schemas
        additionalProperties: true

DELETE Tests ​

Tests for deleting users.

yaml
  delete_tests:
    - id: AUTO                         # AUTO indicates ID will be determined at runtime

Group Operations ​

Configuration for testing the Groups endpoint in a SCIM API.

yaml
groups:
  enabled: true                        # Enable testing of group operations
  operations:                          # HTTP methods to test
    - GET
    - POST
    - PUT
    - PATCH
    - DELETE
  sortAttributes:                      # Attributes to sort by when retrieving groups
    - displayName

Group POST Tests ​

Tests for creating groups via POST requests.

yaml
  post_tests:
    - request:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        displayName: TestGroup
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:Group
          displayName:
            type: string
            const: TestGroup
        required:
          - displayName
          - schemas
        additionalProperties: true
    - request:                         # Group with members
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        displayName: Engineering
        members:
          - value: AUTO                # Member ID will be determined at runtime
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:Group
          displayName:
            type: string
            const: Engineering
          members:
            type: array
            items:
              type: object
              properties:
                value:
                  type: string
        required:
          - displayName
          - schemas
          - members
        additionalProperties: true

Group PUT Tests ​

Tests for updating groups via PUT requests.

yaml
  put_tests:
    - id: AUTO
      request:
        schemas:
          - urn:ietf:params:scim:schemas:core:2.0:Group
        displayName: UpdatedGroup
        members:
          - value: AUTO
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:Group
          displayName:
            type: string
            const: UpdatedGroup
          members:
            type: array
            items:
              type: object
              properties:
                value:
                  type: string
        required:
          - displayName
          - schemas
          - members
        additionalProperties: true

Group PATCH Tests ​

Tests for partial updates to groups via PATCH requests.

yaml
  patch_tests:
    - id: AUTO
      request:
        schemas:
          - urn:ietf:params:scim:api:messages:2.0:PatchOp
        Operations:
          - op: replace
            path: displayName
            value: NewGroupName
      response:
        type: object
        properties:
          schemas:
            type: array
            items:
              type: string
            contains:
              const: urn:ietf:params:scim:schemas:core:2.0:Group
          displayName:
            type: string
            const: NewGroupName
        required:
          - displayName
          - schemas
        additionalProperties: true

Group DELETE Tests ​

Tests for deleting groups.

yaml
  delete_tests:
    - id: AUTO                         # AUTO indicates ID will be determined at runtime