{
    "version": "1.0",
    "exported_at": 1715608731,
    "name": "Okta SCIM 2.0 SPEC Test",
    "description": "Basic tests to see if your SCIM server will work with Okta",
    "trigger_url": "https://api.runscope.com/radar/37d9f10e-e250-4071-9cec-1fa30e56b42b/trigger",
    "steps": [
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Test Users endpoint",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users?count=1&startIndex=1",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:ListResponse",
            "property": "schemas"
          },
          {
            "comparison": "is_a_number",
            "source": "response_json",
            "value": null,
            "property": "itemsPerPage"
          },
          {
            "comparison": "is_a_number",
            "source": "response_json",
            "value": null,
            "property": "startIndex"
          },
          {
            "comparison": "is_a_number",
            "source": "response_json",
            "value": null,
            "property": "totalResults"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].id"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].name.familyName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].name.givenName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].userName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].active"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "Resources[0].emails[0].value"
          }
        ],
        "variables": [
          {
            "source": "response_json",
            "name": "ISVUserid",
            "property": "Resources[0].id"
          }
        ],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Get Users/{{id}} ",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users/{{ISVUserid}}",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "id"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "name.familyName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "name.givenName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "userName"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "active"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "emails[0].value"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{ISVUserid}}",
            "property": "id"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Test invalid User by username",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users?filter=userName eq \"{{InvalidUserEmail}}\"",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:ListResponse",
            "property": "schemas"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "0",
            "property": "totalResults"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Test invalid User by ID",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users/{{UserIdThatDoesNotExist}}",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "404"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "detail"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:Error",
            "property": "schemas"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Make sure random user doesn't exist",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users?filter=userName eq \"{{randomEmail}}\"",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "equal_number",
            "source": "response_json",
            "value": "0",
            "property": "totalResults"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:ListResponse",
            "property": "schemas"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Create Okta user with realistic values",
        "auth": {},
        "body": "{\"schemas\":[\"urn:ietf:params:scim:schemas:core:2.0:User\"],\"userName\":\"{{randomUsername}}\",\"name\":{\"givenName\":\"{{randomGivenName}}\",\"familyName\":\"{{randomFamilyName}}\"},\"emails\":[{\"primary\":true,\"value\":\"{{randomEmail}}\",\"type\":\"work\"}],\"displayName\":\"{{randomGivenName}} {{randomFamilyName}}\",\"active\":true}",
        "form": {},
        "multipart_form": [],
        "binary_body": null,
        "headers": {
          "Content-Type": [
            "application/json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json; charset=utf-8"
          ]
        },
        "method": "POST",
        "url": "{{SCIMBaseURL}}/Users",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "201"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "true",
            "property": "active"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "id"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomFamilyName}}",
            "property": "name.familyName"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomGivenName}}",
            "property": "name.givenName"
          },
          {
            "comparison": "contains",
            "source": "response_json",
            "value": "urn:ietf:params:scim:schemas:core:2.0:User",
            "property": "schemas"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomUsername}}",
            "property": "userName"
          }
        ],
        "variables": [
          {
            "source": "response_json",
            "name": "idUserOne",
            "property": "id"
          },
          {
            "source": "response_json",
            "name": "randomUserEmail",
            "property": "emails[0].value"
          }
        ],
        "scripts": [
          ""
        ],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Verify that user was created",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users/{{idUserOne}}",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomUsername}}",
            "property": "userName"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomFamilyName}}",
            "property": "name.familyName"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "{{randomGivenName}}",
            "property": "name.givenName"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 10
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Expect failure when recreating user with same values",
        "auth": {},
        "body": "{\"schemas\":[\"urn:ietf:params:scim:schemas:core:2.0:User\"],\"userName\":\"{{randomUsername}}\",\"name\":{\"givenName\":\"{{randomGivenName}}\",\"familyName\":\"{{randomFamilyName}}\"},\"emails\":[{\"primary\":true,\"value\":\"{{randomUsername}}\",\"type\":\"work\"}],\"displayName\":\"{{randomGivenName}} {{randomFamilyName}}\",\"active\":true}",
        "form": {},
        "multipart_form": [],
        "binary_body": null,
        "headers": {
          "Content-Type": [
            "application/json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json; charset=utf-8"
          ]
        },
        "method": "POST",
        "url": "{{SCIMBaseURL}}/Users",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "409"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Username Case Sensitivity Check",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users?filter=userName eq \"{{randomUsernameCaps}}\"",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Optional Test: Verify Groups endpoint",
        "auth": {},
        "multipart_form": [],
        "headers": {
          "Accept-Charset": [
            "utf-8"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "Accept": [
            "application/scim+json"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Groups",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "200"
          },
          {
            "comparison": "is_less_than",
            "source": "response_time",
            "value": "600"
          }
        ],
        "variables": [],
        "scripts": [
          "var data = JSON.parse(response.body);\nvar max = data.totalResults;\nvar res = data.Resources;\nvar exists = false;\n\nif (max === 0)\n\tassert(\"nogroups\", \"No Groups found in the endpoint\");\nelse if (max >= 1 && Array.isArray(res)) {\n    exists = true;\n    assert.ok(exists, \"Resources is of type Array\");\n\tlog(exists);\n}"
        ],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Check status 401",
        "multipart_form": [],
        "headers": {
          "Accept": [
            "application/scim+json"
          ],
          "Accept-Charset": [
            "utf-8"
          ],
          "Authorization": [
            "non-token"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "auth": {},
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users?filter=userName eq \"{{randomUsernameCaps}}\"",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "401"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "detail"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "401",
            "property": "status"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:Error",
            "property": "schemas"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      },
      {
        "step_type": "pause",
        "skipped": false,
        "duration": 5
      },
      {
        "step_type": "request",
        "skipped": false,
        "note": "Required Test: Check status 404",
        "multipart_form": [],
        "headers": {
          "Accept": [
            "application/scim+json"
          ],
          "Accept-Charset": [
            "utf-8"
          ],
          "Authorization": [
            "{{auth}}"
          ],
          "Content-Type": [
            "application/scim+json; charset=utf-8"
          ],
          "User-Agent": [
            "OKTA SCIM Integration"
          ]
        },
        "auth": {},
        "method": "GET",
        "url": "{{SCIMBaseURL}}/Users/00919288221112222",
        "assertions": [
          {
            "comparison": "equal_number",
            "source": "response_status",
            "value": "404"
          },
          {
            "comparison": "not_empty",
            "source": "response_json",
            "value": null,
            "property": "detail"
          },
          {
            "comparison": "equal",
            "source": "response_json",
            "value": "404",
            "property": "status"
          },
          {
            "comparison": "has_value",
            "source": "response_json",
            "value": "urn:ietf:params:scim:api:messages:2.0:Error",
            "property": "schemas"
          }
        ],
        "variables": [],
        "scripts": [],
        "before_scripts": []
      }
    ]
  }