Skip to content

Commit bc0d618

Browse files
committed
Register extra params middleware in global registry
The extra params (--extra-query, --extra-body, --extra-headers) were being parsed but never applied to requests. This fix registers the extra params middleware in the global middleware registry during BaseCommand.init(), so it applies to ALL HTTP clients (WebDAV, OCAPI, SLAS, ODS, MRT, Custom APIs).
1 parent 85ba07a commit bc0d618

2 files changed

Lines changed: 42 additions & 43 deletions

File tree

packages/b2c-tooling-sdk/src/cli/base-command.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import type {
1414
} from './hooks.js';
1515
import {setLanguage} from '../i18n/index.js';
1616
import {configureLogger, getLogger, type LogLevel, type Logger} from '../logging/index.js';
17-
import type {ExtraParamsConfig} from '../clients/middleware.js';
17+
import {createExtraParamsMiddleware, type ExtraParamsConfig} from '../clients/middleware.js';
1818
import type {ConfigSource} from '../config/types.js';
1919
import {globalMiddlewareRegistry} from '../clients/middleware-registry.js';
2020

@@ -122,6 +122,10 @@ export abstract class BaseCommand<T extends typeof Command> extends Command {
122122

123123
this.configureLogging();
124124

125+
// Register extra params middleware (from --extra-query, --extra-body, --extra-headers flags)
126+
// This must happen before any API clients are created
127+
this.registerExtraParamsMiddleware();
128+
125129
// Collect middleware from plugins before any API clients are created
126130
await this.collectPluginHttpMiddleware();
127131

@@ -357,4 +361,20 @@ export abstract class BaseCommand<T extends typeof Command> extends Command {
357361

358362
return config;
359363
}
364+
365+
/**
366+
* Register extra params (query, body, headers) as global middleware.
367+
* This applies to ALL HTTP clients created during command execution.
368+
*/
369+
private registerExtraParamsMiddleware(): void {
370+
const extraParams = this.getExtraParams();
371+
if (!extraParams) return;
372+
373+
globalMiddlewareRegistry.register({
374+
name: 'cli-extra-params',
375+
getMiddleware() {
376+
return createExtraParamsMiddleware(extraParams);
377+
},
378+
});
379+
}
360380
}

packages/b2c-tooling-sdk/test/cli/base-command.test.ts

Lines changed: 21 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -401,23 +401,16 @@ describe('cli/base-command', () => {
401401
metadata: {},
402402
})) as typeof cmd.parse;
403403

404-
await cmd.init();
405-
let errorCalled = false;
406-
const originalError = cmd.error.bind(command);
407-
cmd.error = () => {
408-
errorCalled = true;
409-
throw new Error('Expected error');
410-
};
411-
404+
// Error is thrown during init() when registerExtraParamsMiddleware() calls getExtraParams()
405+
let errorThrown = false;
412406
try {
413-
command.testGetExtraParams();
414-
} catch {
415-
// Expected
407+
await cmd.init();
408+
} catch (err) {
409+
errorThrown = true;
410+
expect((err as Error).message).to.include('Invalid JSON for --extra-query');
416411
}
417412

418-
expect(errorCalled).to.be.true;
419-
420-
cmd.error = originalError;
413+
expect(errorThrown).to.be.true;
421414
cmd.parse = originalParse;
422415
});
423416

@@ -430,23 +423,16 @@ describe('cli/base-command', () => {
430423
metadata: {},
431424
})) as typeof cmd.parse;
432425

433-
await cmd.init();
434-
let errorCalled = false;
435-
const originalError = cmd.error.bind(command);
436-
cmd.error = () => {
437-
errorCalled = true;
438-
throw new Error('Expected error');
439-
};
440-
426+
// Error is thrown during init() when registerExtraParamsMiddleware() calls getExtraParams()
427+
let errorThrown = false;
441428
try {
442-
command.testGetExtraParams();
443-
} catch {
444-
// Expected
429+
await cmd.init();
430+
} catch (err) {
431+
errorThrown = true;
432+
expect((err as Error).message).to.include('Invalid JSON for --extra-body');
445433
}
446434

447-
expect(errorCalled).to.be.true;
448-
449-
cmd.error = originalError;
435+
expect(errorThrown).to.be.true;
450436
cmd.parse = originalParse;
451437
});
452438

@@ -497,23 +483,16 @@ describe('cli/base-command', () => {
497483
metadata: {},
498484
})) as typeof cmd.parse;
499485

500-
await cmd.init();
501-
let errorCalled = false;
502-
const originalError = cmd.error.bind(command);
503-
cmd.error = () => {
504-
errorCalled = true;
505-
throw new Error('Expected error');
506-
};
507-
486+
// Error is thrown during init() when registerExtraParamsMiddleware() calls getExtraParams()
487+
let errorThrown = false;
508488
try {
509-
command.testGetExtraParams();
510-
} catch {
511-
// Expected
489+
await cmd.init();
490+
} catch (err) {
491+
errorThrown = true;
492+
expect((err as Error).message).to.include('Invalid JSON for --extra-headers');
512493
}
513494

514-
expect(errorCalled).to.be.true;
515-
516-
cmd.error = originalError;
495+
expect(errorThrown).to.be.true;
517496
cmd.parse = originalParse;
518497
});
519498
});

0 commit comments

Comments
 (0)