Skip to content

Commit

Permalink
[Console] Fix incorrect output message when status code is 200 and bo…
Browse files Browse the repository at this point in the history
…dy is empty (elastic#199975)
  • Loading branch information
sabarasaba authored and CAWilson94 committed Nov 18, 2024
1 parent b4ee78f commit ac2e378
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,18 @@ export function sendRequest(args: RequestArgs): Promise<RequestResult[]> {

const { statusCode, statusText } = extractStatusCodeAndText(response, path);

if (body) {
value = JSON.stringify(body, null, 2);
// When the request is sent, the HTTP library tries to parse the response body as JSON.
// However, if the response body is empty or not in valid JSON format, it throws an error.
// To handle this, if the request resolves with a 200 status code but has an empty or invalid body,
// we should still display a success message to the user.
if (statusCode === 200 && body === null) {
value = 'OK';
} else {
value = 'Request failed to get to the server (status code: ' + statusCode + ')';
if (body) {
value = JSON.stringify(body, null, 2);
} else {
value = 'Request failed to get to the server (status code: ' + statusCode + ')';
}
}

if (isMultiRequest) {
Expand Down
16 changes: 16 additions & 0 deletions test/functional/apps/console/_console.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,5 +223,21 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
expect(await PageObjects.console.hasSuccessBadge()).to.be(true);
});
});

it('Shows OK when status code is 200 but body is empty', async () => {
await PageObjects.console.clearEditorText();

// This request will return 200 but with an empty body
await PageObjects.console.enterText(
'POST /_cluster/voting_config_exclusions?node_names=node'
);
await PageObjects.console.clickPlay();

await retry.try(async () => {
const actualResponse = await PageObjects.console.getOutputText();
log.debug(actualResponse);
expect(actualResponse).to.contain('OK');
});
});
});
}

0 comments on commit ac2e378

Please sign in to comment.