Skip to content

Commit

Permalink
Fix test + handle file missing for CI
Browse files Browse the repository at this point in the history
  • Loading branch information
joshdover committed Sep 11, 2023
1 parent 23c98da commit 046695c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 21 deletions.
6 changes: 3 additions & 3 deletions x-pack/plugins/fleet/server/routes/agent/handlers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { getAvailableVersionsHandler } from './handlers';

jest.mock('../../services/agents/versions', () => {
return {
getAvailableVersions: jest.fn().mockReturnValue(['8.1.0', '8.0.0', '7.17.0', '7.16.0']),
getAvailableVersions: jest.fn().mockReturnValue(['8.1.0', '8.0.0', '7.17.0']),
};
});

Expand All @@ -25,15 +25,15 @@ jest.mock('../../services/app_context', () => {
});

describe('getAvailableVersionsHandler', () => {
it('should return available version and filter version < 7.17', async () => {
it('should return the value from getAvailableVersions', async () => {
const ctx = coreMock.createCustomRequestHandlerContext(coreMock.createRequestHandlerContext());
const response = httpServerMock.createResponseFactory();

await getAvailableVersionsHandler(ctx, httpServerMock.createKibanaRequest(), response);

expect(response.ok).toBeCalled();
expect(response.ok.mock.calls[0][0]?.body).toEqual({
items: ['8.1.0', '8.0.0', '7.17.0', '7.16.0'],
items: ['8.1.0', '8.0.0', '7.17.0'],
});
});
});
45 changes: 27 additions & 18 deletions x-pack/plugins/fleet/server/services/agents/versions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,37 @@ export const getAvailableVersions = async (cached = true): Promise<string[]> =>
let versionsToDisplay: string[] = [];

const kibanaVersion = appContextService.getKibanaVersion();
const file = await readFile(Path.join(REPO_ROOT, AGENT_VERSION_BUILD_FILE), 'utf-8');

// Exclude versions older than MINIMUM_SUPPORTED_VERSION and pre-release versions (SNAPSHOT, rc..)
// De-dup and sort in descending order
const data: string[] = JSON.parse(file);
try {
const file = await readFile(Path.join(REPO_ROOT, AGENT_VERSION_BUILD_FILE), 'utf-8');

const versions = data
.map((item: any) => semverCoerce(item)?.version || '')
.filter((v: any) => semverGte(v, MINIMUM_SUPPORTED_VERSION))
.sort((a: any, b: any) => (semverGt(a, b) ? -1 : 1));
versionsToDisplay = uniq(versions) as string[];
// Exclude versions older than MINIMUM_SUPPORTED_VERSION and pre-release versions (SNAPSHOT, rc..)
// De-dup and sort in descending order
const data: string[] = JSON.parse(file);

if (!config?.internal?.onlyAllowAgentUpgradeToKnownVersions) {
// Add current version if not already present
const hasCurrentVersion = versionsToDisplay.some((v) => v === kibanaVersion);
const versions = data
.map((item: any) => semverCoerce(item)?.version || '')
.filter((v: any) => semverGte(v, MINIMUM_SUPPORTED_VERSION))
.sort((a: any, b: any) => (semverGt(a, b) ? -1 : 1));
versionsToDisplay = uniq(versions) as string[];

versionsToDisplay = !hasCurrentVersion
? [kibanaVersion].concat(versionsToDisplay)
: versionsToDisplay;
}
if (!config?.internal?.onlyAllowAgentUpgradeToKnownVersions) {
// Add current version if not already present
const hasCurrentVersion = versionsToDisplay.some((v) => v === kibanaVersion);

versionsToDisplay = !hasCurrentVersion
? [kibanaVersion].concat(versionsToDisplay)
: versionsToDisplay;
}

availableVersions = versionsToDisplay;
availableVersions = versionsToDisplay;

return availableVersions;
return availableVersions;
} catch (e) {
if (e.code === 'ENOENT' && !config?.internal?.onlyAllowAgentUpgradeToKnownVersions) {
// If the file does not exist, return the current version
return [kibanaVersion];
}
throw e;
}
};

0 comments on commit 046695c

Please sign in to comment.