Skip to content

Docker

SCIM Verify is available as a Docker container, making it easy to run locally, in CI/CD pipelines, or in any environment that supports Docker. This approach eliminates the need for connecting your test environments to the internet.

The Docker image is hosted on GitHub Container Registry and can be pulled using the command below.

Before running the command below, make sure you have a local config.yaml file and a proper output directory. Adjust the mount points accordingly, if necessary.

Example command

.sh
docker run \
    -e CONFIG_FILE=/app/config.yaml \
    -e AUTH_HEADER="Bearer REPLACE_THIS" \
    -e BASE_URL="https://api.scim.dev/scim/v2" \
    -e HAR_FILE_NAME="/output/output.har" \
    -v $(pwd)/site/.vitepress/theme/components/config.yaml:/app/config.yaml \
    -v $(pwd)/output/:/output \
    ghcr.io/limosa-io/scimverify

Example configuration

.yaml
detectSchema: true
detectResourceTypes: true

users:
  enabled: true
  operations:
    - GET
    - POST
    - PUT
    - PATCH
    - DELETE
  sortAttributes:
    - userName

  filter_tests:
    - filter: userName eq "bjensen"
      user_schema:
        {
          "type": "object",
          "properties":
            {
              "schemas":
                {
                  "type": "array",
                  "items": { "type": "string" },
                  "contains":
                    { "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
                },
              "urn:ietf:params:scim:schemas:core:2.0:User":
                {
                  "type": "object",
                  "properties":
                    { "userName": { "type": "string", "const": "bjensen" } },
                  "required": ["userName"],
                  "additionalProperties": true,
                },
            },
          "required": ["schemas", "urn:ietf:params:scim:schemas:core:2.0:User"],
          "additionalProperties": true,
        }

  post_tests:
    - request:
        {
          "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
          "userName": "barbara jensen",
          "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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:User":
                {
                  "type": "object",
                  "properties":
                    {
                      "userName":
                        { "type": "string", "const": "barbara jensen" },
                      "emails":
                        {
                          "type": "array",
                          "items":
                            {
                              "type": "object",
                              "properties":
                                {
                                  "value":
                                    {
                                      "type": "string",
                                      "const": "barbara.jensen@example.com",
                                    },
                                },
                            },
                        },
                    },
                  "required": ["userName"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
          "additionalProperties": true,
        }
    - request:
        {
          "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
          "userName": "bjensen",
          "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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:User":
                {
                  "type": "object",
                  "properties":
                    {
                      "userName": { "type": "string", "const": "bjensen" },
                      "emails":
                        {
                          "type": "array",
                          "items":
                            {
                              "type": "object",
                              "properties":
                                {
                                  "value":
                                    {
                                      "type": "string",
                                      "const": "barbara.jensen@example.com",
                                    },
                                },
                            },
                        },
                    },
                  "required": ["userName", "emails"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
          "additionalProperties": true,
        }

  put_tests:
    - id: AUTO
      request:
        {
          "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
          "userName": "bdoe",
          "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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:User":
                {
                  "type": "object",
                  "properties":
                    {
                      "userName": { "type": "string", "const": "bdoe" },
                      "emails":
                        {
                          "type": "array",
                          "items":
                            {
                              "type": "object",
                              "properties":
                                {
                                  "value":
                                    {
                                      "type": "string",
                                      "const": "barbara.jensen@example.com",
                                    },
                                },
                            },
                        },
                    },
                  "required": ["userName"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
          "additionalProperties": true,
        }

  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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:User":
                {
                  "type": "object",
                  "properties":
                    { "userName": { "type": "string", "const": "JohnDoe" } },
                  "required": ["userName"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
          "additionalProperties": true,
        }
  delete_tests:
    - id: AUTO

groups:
  enabled: true
  operations:
    - GET
    - POST
    - PUT
    - PATCH
    - DELETE
  sortAttributes:
    - displayName

  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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:Group":
                {
                  "type": "object",
                  "properties":
                    {
                      "displayName": { "type": "string", "const": "TestGroup" },
                    },
                  "required": ["displayName"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:Group"],
          "additionalProperties": true,
        }
    - request:
        {
          "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
          "displayName": "Engineering",
          "members": [{ "value": "AUTO" }],
        }
      response:
        {
          "type": "object",
          "properties":
            {
              "schemas":
                {
                  "type": "array",
                  "items": { "type": "string" },
                  "contains":
                    { "const": "urn:ietf:params:scim:schemas:core:2.0:Group" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:Group":
                {
                  "type": "object",
                  "properties":
                    {
                      "displayName":
                        { "type": "string", "const": "Engineering" },
                      "members":
                        {
                          "type": "array",
                          "items":
                            {
                              "type": "object",
                              "properties": { "value": { "type": "string" } },
                            },
                        },
                    },
                  "required": ["displayName", "members"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:Group"],
          "additionalProperties": true,
        }

  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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:Group":
                {
                  "type": "object",
                  "properties":
                    {
                      "displayName":
                        { "type": "string", "const": "UpdatedGroup" },
                      "members":
                        {
                          "type": "array",
                          "items":
                            {
                              "type": "object",
                              "properties": { "value": { "type": "string" } },
                            },
                        },
                    },
                  "required": ["displayName", "members"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["urn:ietf:params:scim:schemas:core:2.0:Group", "schemas"],
          "additionalProperties": true,
        }

  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" },
                },
              "id": { "type": "string" },
              "meta": { "type": "object" },
              "urn:ietf:params:scim:schemas:core:2.0:Group":
                {
                  "type": "object",
                  "properties":
                    {
                      "displayName":
                        { "type": "string", "const": "NewGroupName" },
                    },
                  "required": ["displayName"],
                  "additionalProperties": true,
                },
            },
          "required":
            ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:Group"],
          "additionalProperties": true,
        }
  delete_tests:
    - id: AUTO

Last updated: