Skip to content

Commit 48f4d34

Browse files
committed
removes trailing slash from base_url to prevent double slashes in API URLs
1 parent e293378 commit 48f4d34

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

dist/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25958,7 +25958,7 @@ async function run() {
2595825958
try {
2595925959
// Get inputs (fall back to environment variables for api_key and base_url)
2596025960
const apiKey = core.getInput('api_key') || process.env.INPROD_API_KEY || '';
25961-
const baseUrl = core.getInput('base_url') || process.env.INPROD_BASE_URL || '';
25961+
const baseUrl = (core.getInput('base_url') || process.env.INPROD_BASE_URL || '').replace(/\/$/, '');
2596225962
const changesetFile = core.getInput('changeset_file', { required: true });
2596325963
const environment = core.getInput('environment');
2596425964
const validateBeforeExecute = core.getInput('validate_before_execute') !== 'false';

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ async function run() {
310310
try {
311311
// Get inputs (fall back to environment variables for api_key and base_url)
312312
const apiKey = core.getInput('api_key') || process.env.INPROD_API_KEY || '';
313-
const baseUrl = core.getInput('base_url') || process.env.INPROD_BASE_URL || '';
313+
const baseUrl = (core.getInput('base_url') || process.env.INPROD_BASE_URL || '').replace(/\/$/, '');
314314
const changesetFile = core.getInput('changeset_file', { required: true });
315315
const environment = core.getInput('environment');
316316
const validateBeforeExecute = core.getInput('validate_before_execute') !== 'false';

src/index.test.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,33 @@ describe('run — input validation', () => {
520520

521521
expect(mockCore.setSecret).toHaveBeenCalledWith('secret-key');
522522
});
523+
524+
test('removes trailing slash from base_url to prevent double slashes in API URLs', async () => {
525+
mockInputs({
526+
api_key: 'key',
527+
base_url: 'https://test.inprod.io/',
528+
changeset_file: SAMPLE_CHANGESET_FILE,
529+
validate_before_execute: 'false'
530+
});
531+
const execResult = { run_id: 42, changeset_name: 'Test', environment: { id: 1, name: 'Dev' } };
532+
mockFetch
533+
.mockResolvedValueOnce(mockFetchResponse(200, executeTaskResponse()))
534+
.mockResolvedValueOnce(mockFetchResponse(200, successPollResponse(execResult)));
535+
536+
const promise = run();
537+
await jest.advanceTimersByTimeAsync(5000);
538+
await promise;
539+
540+
// Verify the API was called with a URL that doesn't have double slashes (like //api/v1...)
541+
expect(mockFetch).toHaveBeenCalledWith(
542+
expect.stringContaining('https://test.inprod.io/api/v1/change-set/change-set/execute_yaml/'),
543+
expect.any(Object)
544+
);
545+
// Ensure no double slashes in the URL path
546+
const callUrl = mockFetch.mock.calls[0][0];
547+
expect(callUrl).not.toMatch(/inprod\.io\/\//);
548+
expect(mockCore.setFailed).not.toHaveBeenCalled();
549+
});
523550
});
524551

525552
// ─── run() — Changeset File Resolution ───────────────────────────────────

0 commit comments

Comments
 (0)