{ "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": [] } ] }