Skip to content

Commit df87099

Browse files
authored
feat: move march back-compat auth tests to optional backcompat suite (#127)
Move auth/2025-03-26-oauth-metadata-backcompat and auth/2025-03-26-oauth-endpoint-fallback out of the required authScenariosList into a new backcompatScenariosList. These test backward compatibility with the old 2025-03-26 auth spec (no PRM, OAuth metadata at server root) which is not part of the current spec requirements. - Add new 'backcompat' client suite - Back-compat scenarios remain in the 'all' suite - Removed from 'core' and 'auth' suites - Add separate test describe block for back-compat scenarios Closes #126
1 parent 4f91d7f commit df87099

4 files changed

Lines changed: 35 additions & 7 deletions

File tree

src/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
listAuthScenarios,
1919
listMetadataScenarios,
2020
listCoreScenarios,
21-
listExtensionScenarios
21+
listExtensionScenarios,
22+
listBackcompatScenarios
2223
} from './scenarios';
2324
import { ConformanceCheck } from './types';
2425
import { ClientOptionsSchema, ServerOptionsSchema } from './schemas';
@@ -69,6 +70,7 @@ program
6970
all: listScenarios,
7071
core: listCoreScenarios,
7172
extensions: listExtensionScenarios,
73+
backcompat: listBackcompatScenarios,
7274
auth: listAuthScenarios,
7375
metadata: listMetadataScenarios,
7476
'sep-835': () =>
@@ -182,7 +184,7 @@ program
182184
console.error('\nAvailable client scenarios:');
183185
listScenarios().forEach((s) => console.error(` - ${s}`));
184186
console.error(
185-
'\nAvailable suites: all, core, extensions, auth, metadata, sep-835'
187+
'\nAvailable suites: all, core, extensions, backcompat, auth, metadata, sep-835'
186188
);
187189
process.exit(1);
188190
}

src/scenarios/client/auth/index.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { authScenariosList } from './index';
1+
import { authScenariosList, backcompatScenariosList } from './index';
22
import {
33
runClientAgainstScenario,
44
InlineClientRunner
@@ -48,6 +48,19 @@ describe('Client Auth Scenarios', () => {
4848
}
4949
});
5050

51+
describe('Client Back-compat Scenarios', () => {
52+
for (const scenario of backcompatScenariosList) {
53+
test(`${scenario.name} passes`, async () => {
54+
const clientFn = getHandler(scenario.name);
55+
if (!clientFn) {
56+
throw new Error(`No handler registered for scenario: ${scenario.name}`);
57+
}
58+
const runner = new InlineClientRunner(clientFn);
59+
await runClientAgainstScenario(runner, scenario.name);
60+
});
61+
}
62+
});
63+
5164
describe('Negative tests', () => {
5265
test('bad client requests root PRM location', async () => {
5366
const runner = new InlineClientRunner(badPrmClient);

src/scenarios/client/auth/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ import { PreRegistrationScenario } from './pre-registration';
2828
export const authScenariosList: Scenario[] = [
2929
...metadataScenarios,
3030
new AuthBasicCIMDScenario(),
31-
new Auth20250326OAuthMetadataBackcompatScenario(),
32-
new Auth20250326OEndpointFallbackScenario(),
3331
new ScopeFromWwwAuthenticateScenario(),
3432
new ScopeFromScopesSupportedScenario(),
3533
new ScopeOmittedWhenUndefinedScenario(),
@@ -42,6 +40,12 @@ export const authScenariosList: Scenario[] = [
4240
new PreRegistrationScenario()
4341
];
4442

43+
// Back-compat scenarios (optional - backward compatibility with older spec versions)
44+
export const backcompatScenariosList: Scenario[] = [
45+
new Auth20250326OAuthMetadataBackcompatScenario(),
46+
new Auth20250326OEndpointFallbackScenario()
47+
];
48+
4549
// Extension scenarios (optional for tier 1 - protocol extensions)
4650
export const extensionScenariosList: Scenario[] = [
4751
new ClientCredentialsJwtScenario(),

src/scenarios/index.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ import {
5353

5454
import { DNSRebindingProtectionScenario } from './server/dns-rebinding';
5555

56-
import { authScenariosList, extensionScenariosList } from './client/auth/index';
56+
import {
57+
authScenariosList,
58+
backcompatScenariosList,
59+
extensionScenariosList
60+
} from './client/auth/index';
5761
import { listMetadataScenarios } from './client/auth/discovery-metadata';
5862

5963
// Pending client scenarios (not yet fully tested/implemented)
@@ -137,13 +141,14 @@ export const clientScenarios = new Map<string, ClientScenario>(
137141
allClientScenariosList.map((scenario) => [scenario.name, scenario])
138142
);
139143

140-
// All client test scenarios (core + extensions)
144+
// All client test scenarios (core + backcompat + extensions)
141145
const scenariosList: Scenario[] = [
142146
new InitializeScenario(),
143147
new ToolsCallScenario(),
144148
new ElicitationClientDefaultsScenario(),
145149
new SSERetryScenario(),
146150
...authScenariosList,
151+
...backcompatScenariosList,
147152
...extensionScenariosList
148153
];
149154

@@ -201,4 +206,8 @@ export function listExtensionScenarios(): string[] {
201206
return extensionScenariosList.map((scenario) => scenario.name);
202207
}
203208

209+
export function listBackcompatScenarios(): string[] {
210+
return backcompatScenariosList.map((scenario) => scenario.name);
211+
}
212+
204213
export { listMetadataScenarios };

0 commit comments

Comments
 (0)