10fa524540
- refactored SCIM 2.0 server core library - new Domain SCIM resource - simple JWT implementation - enhanced documentation - split out PostfixAdmin SCIM API
1060 lines
No EOL
28 KiB
JSON
1060 lines
No EOL
28 KiB
JSON
{
|
|
"info": {
|
|
"_postman_id": "c90f5107-b2fb-46dc-9a32-b07f5ff68440",
|
|
"name": "SCIM PHP Collection",
|
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
},
|
|
"item": [
|
|
{
|
|
"name": "JWT",
|
|
"item": [
|
|
{
|
|
"name": "Get JWT",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"const response = pm.response.json();",
|
|
"pm.environment.set(\"jwt_token\", response.Bearer)"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/jwt",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"jwt"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Users",
|
|
"item": [
|
|
{
|
|
"name": "Create a single user",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 201\", () => {",
|
|
" pm.response.to.have.status(201);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
|
|
" pm.expect(pm.response.json().userName).to.eql(\"createdtestuser\");",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains a valid non-null user ID (the ID of the user which was created)\", () => {",
|
|
" pm.expect(pm.response.json().id).to.not.be.null;",
|
|
"});",
|
|
"",
|
|
"pm.collectionVariables.set(\"testUserId\", pm.response.json().id);"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/scim+json",
|
|
"type": "default"
|
|
}
|
|
],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"userName\": \"createdtestuser\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{url}}/Users",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Read a single user",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains the user ID of the user we want to read\", () => {",
|
|
" pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testUserId'));",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
|
|
" pm.expect(pm.response.json().userName).to.eql(\"createdtestuser\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Users/{{testUserId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users",
|
|
"{{testUserId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Read all users",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json().Resources).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
|
|
" var resources = pm.response.json().Resources.map(x => x.userName);",
|
|
" pm.expect(resources).to.contain(\"createdtestuser\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Users",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter users by userName",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
|
|
" pm.expect(pm.response.json().Resources[0].userName).to.eql(\"createdtestuser\");",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains a valid non-null user ID\", () => {",
|
|
" pm.expect(pm.response.json().id).to.not.be.null;",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Users?filter=userName%20eq%20createdtestuser",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "userName%20eq%20createdtestuser"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter users with invalid filter",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 500\", () => {",
|
|
" pm.response.to.have.status(500);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains error '\\\"pr\\\" filter operator must be used without a comparison value'\", () => {",
|
|
" pm.expect(pm.response.json().error.description).to.eql(\"\\\"pr\\\" filter operator must be used without a comparison value\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Users?filter=userName%20pr%20createdtestuser",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "userName%20pr%20createdtestuser"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter users with unmatching filter",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains no users\", () => {",
|
|
" pm.expect(pm.response.json().Resources).to.be.empty;",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Users?filter=userName%20sw%20somenonexistentstring",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "userName%20sw%20somenonexistentstring"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Update a single user",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains the user ID of the user we want to read\", () => {",
|
|
" pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testUserId'));",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains user with userName \\\"updatedtestuser\\\"\", () => {",
|
|
" pm.expect(pm.response.json().userName).to.eql(\"updatedtestuser\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "PUT",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/scim+json",
|
|
"type": "default"
|
|
}
|
|
],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"userName\": \"updatedtestuser\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{url}}/Users/{{testUserId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users",
|
|
"{{testUserId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Delete a single user",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 204\", () => {",
|
|
" pm.response.to.have.status(204);",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/scim+json",
|
|
"type": "default"
|
|
}
|
|
],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"userName\": \"updatedtestuser\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{url}}/Users/{{testUserId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Users",
|
|
"{{testUserId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Groups",
|
|
"item": [
|
|
{
|
|
"name": "Create a single group",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 201\", () => {",
|
|
" pm.response.to.have.status(201);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
|
|
" pm.expect(pm.response.json().displayName).to.eql(\"createdtestgroup\");",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains a valid non-null group ID (the ID of the group which was created)\", () => {",
|
|
" pm.expect(pm.response.json().id).to.not.be.null;",
|
|
"});",
|
|
"",
|
|
"pm.collectionVariables.set(\"testGroupId\", pm.response.json().id);"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/scim+json",
|
|
"type": "default"
|
|
}
|
|
],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"displayName\": \"createdtestgroup\",\n \"members\": []\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{url}}/Groups",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Read a single group",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains the group ID of the group we want to read\", () => {",
|
|
" pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testGroupId'));",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
|
|
" pm.expect(pm.response.json().displayName).to.eql(\"createdtestgroup\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups/{{testGroupId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups",
|
|
"{{testGroupId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Read all groups",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json().Resources).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
|
|
" var resources = pm.response.json().Resources.map(x => x.displayName);",
|
|
" pm.expect(resources).to.contain(\"createdtestgroup\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter groups by displayName",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
|
|
" pm.expect(pm.response.json().Resources[0].displayName).to.eql(\"createdtestgroup\");",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains a valid non-null group ID\", () => {",
|
|
" pm.expect(pm.response.json().id).to.not.be.null;",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups?filter=displayName%20eq%20createdtestgroup",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "displayName%20eq%20createdtestgroup"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter groups with invalid filter",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 500\", () => {",
|
|
" pm.response.to.have.status(500);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains error '\\\"pr\\\" filter operator must be used without a comparison value'\", () => {",
|
|
" pm.expect(pm.response.json().error.description).to.eql(\"\\\"pr\\\" filter operator must be used without a comparison value\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups?filter=displayName%20pr%20createdtestgroup",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "displayName%20pr%20createdtestgroup"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Filter groups with unmatching filter",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains no groups\", () => {",
|
|
" pm.expect(pm.response.json().Resources).to.be.empty;",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups?filter=displayName%20sw%20somenonexistentstring",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "filter",
|
|
"value": "displayName%20sw%20somenonexistentstring"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Update a single group",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 201\", () => {",
|
|
" pm.response.to.have.status(201);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains the group ID of the group we want to read\", () => {",
|
|
" pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testGroupId'));",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains group with displayName \\\"updatedtestgroup\\\"\", () => {",
|
|
" pm.expect(pm.response.json().displayName).to.eql(\"updatedtestgroup\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "PUT",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"displayName\": \"updatedtestgroup\",\n \"members\": []\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{url}}/Groups/{{testGroupId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups",
|
|
"{{testGroupId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
},
|
|
{
|
|
"name": "Delete a single group",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Groups/{{testGroupId}}",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Groups",
|
|
"{{testGroupId}}"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ResourceTypes",
|
|
"item": [
|
|
{
|
|
"name": "Read all ResourceTypes",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json().Resources).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains exactly two entries\", () => {",
|
|
" pm.expect(pm.response.json().Resources.length).to.eql(2);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains ResourceType with id \\\"User\\\"\", () => {",
|
|
" pm.expect(pm.response.json().Resources[0].id).to.eql(\"User\");",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains ResourceType with id \\\"Group\\\"\", () => {",
|
|
" pm.expect(pm.response.json().Resources[1].id).to.eql(\"Group\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/ResourceTypes",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"ResourceTypes"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Schemas",
|
|
"item": [
|
|
{
|
|
"name": "Read all Schemas",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"jsonData = pm.response.json();",
|
|
"",
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(jsonData.Resources).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains exactly four entries\", () => {",
|
|
" pm.expect(jsonData.Resources.length).to.eql(4);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains Schema with id \\\"urn:ietf:params:scim:schemas:core:2.0:Group\\\"\", () => {",
|
|
" isContained = jsonData.Resources.some((resource) => resource.id === \"urn:ietf:params:scim:schemas:core:2.0:Group\");",
|
|
" pm.expect(isContained).to.be.true;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains Schema with id \\\"urn:ietf:params:scim:schemas:core:2.0:ResourceType\\\"\", () => {",
|
|
" isContained = jsonData.Resources.some((resource) => resource.id === \"urn:ietf:params:scim:schemas:core:2.0:ResourceType\");",
|
|
" pm.expect(isContained).to.be.true;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains Schema with id \\\"urn:ietf:params:scim:schemas:core:2.0:Schema\\\"\", () => {",
|
|
" isContained = jsonData.Resources.some((resource) => resource.id === \"urn:ietf:params:scim:schemas:core:2.0:Schema\");",
|
|
" pm.expect(isContained).to.be.true;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains Schema with id \\\"urn:ietf:params:scim:schemas:core:2.0:User\\\"\", () => {",
|
|
" isContained = jsonData.Resources.some((resource) => resource.id === \"urn:ietf:params:scim:schemas:core:2.0:User\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/Schemas",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"Schemas"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ServiceProviderConfigs",
|
|
"item": [
|
|
{
|
|
"name": "Read all ServiceProviderConfigs",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"pm.test(\"Response status code is 200\", () => {",
|
|
" pm.response.to.have.status(200);",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Content-Type header is application/scim+json\", () => {",
|
|
" pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/scim+json');",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body is not empty\", () => {",
|
|
" pm.expect(pm.response.json()).to.not.be.empty;",
|
|
"});",
|
|
"",
|
|
"pm.test(\"Response body contains a ServiceProviderConfig with a correct schema\", () => {",
|
|
" pm.expect(pm.response.json().schemas).to.include(\"urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig\");",
|
|
"});"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{url}}/ServiceProviderConfig",
|
|
"host": [
|
|
"{{url}}"
|
|
],
|
|
"path": [
|
|
"ServiceProviderConfig"
|
|
]
|
|
}
|
|
},
|
|
"response": []
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{jwt_token}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
""
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
""
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"variable": [
|
|
{
|
|
"key": "testUserId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "testGroupId",
|
|
"value": ""
|
|
}
|
|
]
|
|
} |