Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
5 changes: 4 additions & 1 deletion examples/clients/typescript/everything-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,10 @@ registerScenarios(
'auth/token-endpoint-auth-post',
'auth/token-endpoint-auth-none',
// Resource mismatch (client should error when PRM resource doesn't match)
'auth/resource-mismatch'
'auth/resource-mismatch',
// SEP-2207: Offline access / refresh token guidance (draft)
'auth/offline-access-scope',
'auth/offline-access-not-supported'
],
runAuthClient
);
Expand Down
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
listCoreScenarios,
listExtensionScenarios,
listBackcompatScenarios,
listDraftScenarios,
listScenariosForSpec,
listClientScenariosForSpec,
getScenarioSpecVersions,
Expand Down Expand Up @@ -112,6 +113,7 @@ program
backcompat: listBackcompatScenarios,
auth: listAuthScenarios,
metadata: listMetadataScenarios,
draft: listDraftScenarios,
'sep-835': () =>
listAuthScenarios().filter((name) => name.startsWith('auth/scope-'))
};
Expand Down Expand Up @@ -230,7 +232,7 @@ program
console.error('\nAvailable client scenarios:');
listScenarios().forEach((s) => console.error(` - ${s}`));
console.error(
'\nAvailable suites: all, core, extensions, backcompat, auth, metadata, sep-835'
'\nAvailable suites: all, core, extensions, backcompat, auth, metadata, draft, sep-835'
);
process.exit(1);
}
Expand Down
21 changes: 20 additions & 1 deletion src/scenarios/client/auth/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { authScenariosList, backcompatScenariosList } from './index';
import {
authScenariosList,
backcompatScenariosList,
draftScenariosList
} from './index';
import {
runClientAgainstScenario,
InlineClientRunner
Expand Down Expand Up @@ -61,6 +65,21 @@ describe('Client Back-compat Scenarios', () => {
}
});

describe('Client Draft Scenarios', () => {
for (const scenario of draftScenariosList) {
test(`${scenario.name} passes`, async () => {
const clientFn = getHandler(scenario.name);
if (!clientFn) {
throw new Error(`No handler registered for scenario: ${scenario.name}`);
}
const runner = new InlineClientRunner(clientFn);
await runClientAgainstScenario(runner, scenario.name, {
allowClientError: allowClientErrorScenarios.has(scenario.name)
});
});
}
});

describe('Negative tests', () => {
test('bad client requests root PRM location', async () => {
const runner = new InlineClientRunner(badPrmClient);
Expand Down
12 changes: 11 additions & 1 deletion src/scenarios/client/auth/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ import {
import { ResourceMismatchScenario } from './resource-mismatch';
import { PreRegistrationScenario } from './pre-registration';
import { CrossAppAccessCompleteFlowScenario } from './cross-app-access';
import {
OfflineAccessScopeScenario,
OfflineAccessNotSupportedScenario
} from './offline-access';

// Auth scenarios (required for tier 1)
export const authScenariosList: Scenario[] = [
Expand All @@ -37,7 +41,6 @@ export const authScenariosList: Scenario[] = [
new ClientSecretBasicAuthScenario(),
new ClientSecretPostAuthScenario(),
new PublicClientAuthScenario(),
new ResourceMismatchScenario(),
new PreRegistrationScenario()
];

Expand All @@ -53,3 +56,10 @@ export const extensionScenariosList: Scenario[] = [
new ClientCredentialsBasicScenario(),
new CrossAppAccessCompleteFlowScenario()
];

// Draft scenarios (informational - not scored for tier assessment)
export const draftScenariosList: Scenario[] = [
new ResourceMismatchScenario(),
new OfflineAccessScopeScenario(),
new OfflineAccessNotSupportedScenario()
];
Loading