Skip to content

Commit 9d3c68a

Browse files
committed
improvements
1 parent 475552c commit 9d3c68a

File tree

2 files changed

+100
-78
lines changed

2 files changed

+100
-78
lines changed

site/docs/.vitepress/theme/components/config.yaml

Lines changed: 91 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,23 @@ users:
1717
user_schema:
1818
{
1919
"type": "object",
20-
"properties":
21-
{
22-
"schemas":
23-
{
24-
"type": "array",
25-
"items": { "type": "string" },
26-
"contains":
27-
{ "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
28-
},
29-
"userName": { "type": "string", "const": "bjensen" },
20+
"properties": {
21+
"schemas": {
22+
"type": "array",
23+
"items": { "type": "string" },
24+
"contains": { "const": "urn:ietf:params:scim:schemas:core:2.0:User" }
3025
},
31-
"required": ["userName", "schemas"],
32-
"additionalProperties": true,
26+
"urn:ietf:params:scim:schemas:core:2.0:User": {
27+
"type": "object",
28+
"properties": {
29+
"userName": { "type": "string", "const": "bjensen" }
30+
},
31+
"required": ["userName"],
32+
"additionalProperties": true
33+
}
34+
},
35+
"required": ["schemas", "urn:ietf:params:scim:schemas:core:2.0:User"],
36+
"additionalProperties": true
3337
}
3438

3539
post_tests:
@@ -42,29 +46,34 @@ users:
4246
response:
4347
{
4448
"type": "object",
45-
"properties":
46-
{
47-
"schemas":
48-
{
49-
"type": "array",
50-
"items": { "type": "string" },
51-
"contains":
52-
{ "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
53-
},
54-
"urn:ietf:params:scim:schemas:core:2.0:User":
55-
{
56-
"type": "object",
57-
"properties":
58-
{
59-
"userName":
60-
{ "type": "string", "const": "barbara jensen" },
61-
},
62-
"required": ["userName"],
63-
"additionalProperties": true,
64-
},
49+
"properties": {
50+
"schemas": {
51+
"type": "array",
52+
"items": { "type": "string" },
53+
"contains": { "const": "urn:ietf:params:scim:schemas:core:2.0:User" }
6554
},
66-
"required": ["urn:ietf:params:scim:schemas:core:2.0:User", "schemas"],
67-
"additionalProperties": true,
55+
"id": { "type": "string" },
56+
"meta": { "type": "object" },
57+
"urn:ietf:params:scim:schemas:core:2.0:User": {
58+
"type": "object",
59+
"properties": {
60+
"userName": { "type": "string", "const": "barbara jensen" },
61+
"emails": {
62+
"type": "array",
63+
"items": {
64+
"type": "object",
65+
"properties": {
66+
"value": { "type": "string", "const": "[email protected]" }
67+
}
68+
}
69+
}
70+
},
71+
"required": ["userName"],
72+
"additionalProperties": true
73+
}
74+
},
75+
"required": ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
76+
"additionalProperties": true
6877
}
6978
- request:
7079
{
@@ -84,6 +93,8 @@ users:
8493
"contains":
8594
{ "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
8695
},
96+
"id": { "type": "string" },
97+
"meta": { "type": "object" },
8798
"urn:ietf:params:scim:schemas:core:2.0:User":
8899
{
89100
"type": "object",
@@ -111,7 +122,7 @@ users:
111122
"additionalProperties": true,
112123
},
113124
},
114-
"required": ["schemas", "urn:ietf:params:scim:schemas:core:2.0:User"],
125+
"required": ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
115126
"additionalProperties": true,
116127
}
117128

@@ -126,35 +137,34 @@ users:
126137
response:
127138
{
128139
"type": "object",
129-
"properties":
130-
{
131-
"schemas":
132-
{
133-
"type": "array",
134-
"items": { "type": "string" },
135-
"contains":
136-
{ "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
137-
},
138-
"userName": { "type": "string", "const": "testuser6238" },
139-
"emails":
140-
{
141-
"type": "array",
142-
"items":
143-
{
144-
"type": "object",
145-
"properties":
146-
{
147-
"value":
148-
{
149-
"type": "string",
150-
"const": "[email protected]",
151-
},
152-
},
153-
},
154-
},
140+
"properties": {
141+
"schemas": {
142+
"type": "array",
143+
"items": { "type": "string" },
144+
"contains": { "const": "urn:ietf:params:scim:schemas:core:2.0:User" }
155145
},
156-
"required": ["userName", "schemas", "emails"],
157-
"additionalProperties": true,
146+
"id": { "type": "string" },
147+
"meta": { "type": "object" },
148+
"urn:ietf:params:scim:schemas:core:2.0:User": {
149+
"type": "object",
150+
"properties": {
151+
"userName": { "type": "string", "const": "testuser6238" },
152+
"emails": {
153+
"type": "array",
154+
"items": {
155+
"type": "object",
156+
"properties": {
157+
"value": { "type": "string", "const": "[email protected]" }
158+
}
159+
}
160+
}
161+
},
162+
"required": ["userName"],
163+
"additionalProperties": true
164+
}
165+
},
166+
"required": ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
167+
"additionalProperties": true
158168
}
159169

160170
patch_tests:
@@ -168,19 +178,25 @@ users:
168178
response:
169179
{
170180
"type": "object",
171-
"properties":
172-
{
173-
"schemas":
174-
{
175-
"type": "array",
176-
"items": { "type": "string" },
177-
"contains":
178-
{ "const": "urn:ietf:params:scim:schemas:core:2.0:User" },
179-
},
180-
"userName": { "type": "string", "const": "JohnDoe" },
181+
"properties": {
182+
"schemas": {
183+
"type": "array",
184+
"items": { "type": "string" },
185+
"contains": { "const": "urn:ietf:params:scim:schemas:core:2.0:User" }
181186
},
182-
"required": ["userName", "schemas"],
183-
"additionalProperties": true,
187+
"id": { "type": "string" },
188+
"meta": { "type": "object" },
189+
"urn:ietf:params:scim:schemas:core:2.0:User": {
190+
"type": "object",
191+
"properties": {
192+
"userName": { "type": "string", "const": "JohnDoe" }
193+
},
194+
"required": ["userName"],
195+
"additionalProperties": true
196+
}
197+
},
198+
"required": ["schemas", "id", "urn:ietf:params:scim:schemas:core:2.0:User"],
199+
"additionalProperties": true
184200
}
185201
delete_tests:
186202
- id: AUTO

src/users.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,10 @@ function runTests(userSchema, userSchemaExtensions = [], configuration) {
238238
// Verify response matches the expected response format
239239
if (update.response) {
240240
const ajv = new Ajv();
241-
const valid = ajv.validate(update.response, response.data);
241+
const valid = ajv.validate(
242+
update.response,
243+
canonicalize(response.data, userSchema)
244+
);
242245
assert.ok(valid, `Response doesn't match the expected schema: ${JSON.stringify(ajv.errors)}`);
243246
}
244247
});
@@ -247,7 +250,7 @@ function runTests(userSchema, userSchemaExtensions = [], configuration) {
247250

248251
if (configuration?.users?.operations.includes('PATCH')) {
249252
for(const [index, patch] of configuration.users.patch_tests.entries()) {
250-
test('Updates a user using PATCH - Alternative ', async (t) => {
253+
test(`Updates a user using PATCH - Alternative ${index+1}`, async (t) => {
251254
const testAxios = getAxiosInstance(configuration, t);
252255

253256
let replaceId = patch.id;
@@ -266,7 +269,10 @@ function runTests(userSchema, userSchemaExtensions = [], configuration) {
266269
// Verify response matches the expected response format
267270
if (patch.response) {
268271
const ajv = new Ajv();
269-
const valid = ajv.validate(patch.response, response.data);
272+
const valid = ajv.validate(
273+
patch.response,
274+
canonicalize(response.data, userSchema)
275+
);
270276
assert.ok(valid, `Response doesn't match the expected schema: ${JSON.stringify(ajv.errors)}`);
271277
}
272278

0 commit comments

Comments
 (0)