diff --git a/src/services/plugins.manager.service.ts b/src/services/plugins.manager.service.ts index b3056d139cae1b7416b3a7a35f9910ca2f687a92..18a541468f74b2b7d0171a799cdb6be67ee7bd12 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 12597f936b28b5b0eb44cbc64df6763f24b73bfb..4f46547195126188cc91daad47b74de1d48d86f9 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