From f7dac6806559b9d8fd5fd965226b1a3f8f25e9eb Mon Sep 17 00:00:00 2001 From: Xavier Jouslin de Noray <xavier.jouslindenoray@savoirfairelinux.com> Date: Thu, 21 Dec 2023 08:08:11 -0500 Subject: [PATCH] Watcher: avoid doubles in plugins Change-Id: I2025ece90bf72a46d744a9dc8bd9a8dbb745300a --- src/services/plugins.manager.service.ts | 7 ++----- tests/plugins.manager.test.ts | 26 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/services/plugins.manager.service.ts b/src/services/plugins.manager.service.ts index b3056d1..18a5414 100644 --- a/src/services/plugins.manager.service.ts +++ b/src/services/plugins.manager.service.ts @@ -74,7 +74,7 @@ export class PluginsManager { } return await Promise.all( this.plugins - .filter(plugin => this.isPluginAvailable(plugin.id, arch)) + .filter(plugin => plugin.arches.includes(arch)) .map(async (plugin: Plugins) => { return { id: plugin.id, @@ -327,9 +327,6 @@ export class PluginsManager { pluginPath, 'signatures.sig' ); - return !this.certificateManager.verifySignature( - pluginAlreadyInstalled.signature, - signature - ); + return !(Buffer.compare(signature, pluginAlreadyInstalled.signature) === 0); } } diff --git a/tests/plugins.manager.test.ts b/tests/plugins.manager.test.ts index 12597f9..4f46547 100644 --- a/tests/plugins.manager.test.ts +++ b/tests/plugins.manager.test.ts @@ -374,4 +374,30 @@ describe('Plugins manager service tests', function () { expect(result).toBe(true); }); + + it('should return false if plugin is already installed and signature is valid', async () => { + const pluginPath = 'path/to/plugin'; + const signature = Buffer.from('valid-signature'); + const plugin = { + id: 'test', + name: 'test', + version: '1.0.0', + description: 'test', + icon: 'test', + background: 'test', + timestamp: 'test', + signature: signature, + author: 'test', + }; + const expected = [{ + ...plugin, + arches: ["test"], + }]; + architectureService.getAllPluginArches.resolves(['test']); + fileManager.readArchive.resolves(signature); + pluginsManagerService['plugins'] = expected; + Sinon.stub(pluginsManagerService, 'findPlugin').resolves({...plugin, arches: ['test']}); + const result = await pluginsManagerService['checkPluginAlreadyPull'](pluginPath); + expect(result).toBe(false); + }); }); \ No newline at end of file -- GitLab