Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Tests that don't apply are reported as **SKIPPED** (not failures). However, grou

## Test Categories Summary

The existing post-create and post-PATCH propagation waits in `SCIMTests_Workflow.json` are 30 seconds before dependent operations or verification reads. These waits cover null updates, user and group updates, and manager updates to allow asynchronously updated attributes to become visible.
The post-create and post-PATCH propagation waits in `SCIMTests_Workflow.json` are 30 seconds before dependent operations or verification reads, except `Delay_SCIM_Update_User_After_Patch`, which waits 90 seconds before verifying the direct user update. The longer wait accommodates observed propagation delays of approximately 60-65 seconds under concurrent full-suite load. Other null-update, group-update, and manager-update waits remain unchanged.

For connections whose saved `baseAddress` contains `googleapis.com` (case-insensitive), initialization reads `/Schemas` and identifies mapped required attributes and subattributes, also honoring `targetSchema.required`. `SCIM_Null_Update_Test` excludes those targets from both empty-string and null PATCH payloads and their verification lists. For example, a required `emails[type eq "other"].value` is not cleared; optional sibling fields and optional address or enterprise-extension fields remain eligible. Clearing a whole complex attribute is also excluded when it contains a subattribute declared required by either `/Schemas` or another mapping's `targetSchema.required`, even if the parent is optional. The same parent protection applies to blank mapped sources in the Entra update payload. Schema URNs are matched separately, so a required extension attribute does not exclude an optional core attribute with the same name.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2970,7 +2970,7 @@
"type": "Wait",
"inputs": {
"interval": {
"count": 30,
"count": 90,
"unit": "Second"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Exit code `0` means the tests passed; a nonzero exit code indicates a failure.
| Google empty-update provenance | Only a previously nonempty Google payload emptied by filtering receives the exception marker; already-empty/null payloads and other providers do not. |
| Google nested-update filtering | Removing the last required blank/null nested source prunes its empty parent and reaches the existing pass exception; populated siblings, `false`, `0`, missing sources, and non-Google behavior are preserved. |
| Google empty-update reporting | Successful create/provisioning remains mandatory; only eligible empty updates bypass the update phase and report `PASSED` with an explicit explanation. Normal updates and cleanup dependencies are preserved. |
| Preservation and consistency | Existing nested protocol actions, unrelated suite logic and collector remain unchanged; documentation uses the selector name; the template version is blank; final results identify the choice |
| Preservation and consistency | Existing nested protocol actions, unrelated suite logic and collector remain unchanged, except the intentional direct-user-update propagation wait adjustment; documentation uses the selector name; the template version is blank; final results identify the choice |
| Version and timing output | Native result uses the deployed version; timestamps come from single captures; epoch/duration calculations cover whole seconds, subsecond truncation and midnight crossing |
| Offline deployment | The PowerShell test below verifies version injection, preserved parameters, read-back and preflight failures without cloud calls |

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,12 @@ test('token protocols and unrelated semantic source remain unchanged; naming and
const actual = structuredClone(child.SCIMTests_Scope.actions[name]);
// Permit the two new selection gates, but no changes inside their protocol actions.
if (['Validate_Credentials_Test', 'Federated_Identity_Test'].includes(name)) actual.expression = old.SCIMTests_Scope.actions[name].expression;
if (name === 'SCIM_User_Update_Test') {
actual.actions.SCIM_User_Update_Test_Actions.actions.Check_Update_Has_Eligible_Attrs.actions
.Delay_SCIM_Update_User_After_Patch.inputs.interval.count =
old.SCIMTests_Scope.actions[name].actions.SCIM_User_Update_Test_Actions.actions
.Check_Update_Has_Eligible_Attrs.actions.Delay_SCIM_Update_User_After_Patch.inputs.interval.count;
}
assert.deepEqual(actual, old.SCIMTests_Scope.actions[name], name);
}
const initialization = load('Initialization_Workflow.json');
Expand Down