Skip to content

Commit 5cb0ae4

Browse files
juliaElasticclaude
andcommitted
[Fleet] add unit tests for no-downgrade behavior
Backport of elastic#262509 test changes to 9.3 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent bc314cd commit 5cb0ae4

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

x-pack/platform/plugins/shared/fleet/server/tasks/auto_install_content_packages_task.test.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,56 @@ describe('AutoInstallContentPackagesTask', () => {
249249
expect(packageClientMock.installPackage).not.toHaveBeenCalled();
250250
expect(dataStreamService.getAllFleetDataStreams).not.toHaveBeenCalled();
251251
});
252+
253+
it('should not downgrade package when a newer prerelease version is installed', async () => {
254+
// Registry has 1.1.0, but a prerelease 2.0.0-preview is already installed.
255+
// The task must not downgrade to 1.1.0.
256+
mockGetInstalledPackages.mockResolvedValue({
257+
items: [
258+
{
259+
name: 'kubernetes_otel',
260+
version: '2.0.0-preview',
261+
},
262+
{
263+
name: 'test_package',
264+
version: '2.0.0-preview',
265+
},
266+
],
267+
});
268+
269+
await runTask();
270+
271+
expect(packageClientMock.installPackage).not.toHaveBeenCalled();
272+
});
273+
274+
it('should not downgrade one package while upgrading another', async () => {
275+
// kubernetes_otel has a prerelease installed (must not downgrade),
276+
// test_package has an older version installed (must upgrade).
277+
mockGetInstalledPackages.mockResolvedValue({
278+
items: [
279+
{
280+
name: 'kubernetes_otel',
281+
version: '2.0.0-preview',
282+
},
283+
{
284+
name: 'test_package',
285+
version: '1.0.0',
286+
},
287+
],
288+
});
289+
290+
await runTask();
291+
292+
expect(packageClientMock.installPackage).toHaveBeenCalledTimes(1);
293+
expect(packageClientMock.installPackage).toHaveBeenCalledWith({
294+
pkgName: 'test_package',
295+
pkgVersion: '1.1.0',
296+
useStreaming: true,
297+
automaticInstall: true,
298+
});
299+
expect(packageClientMock.installPackage).not.toHaveBeenCalledWith(
300+
expect.objectContaining({ pkgName: 'kubernetes_otel' })
301+
);
302+
});
252303
});
253304
});

0 commit comments

Comments
 (0)