750 lines
20 KiB
JSON
750 lines
20 KiB
JSON
{
|
|
"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": []
|
|
}
|
|
]
|
|
} |