diff --git a/info/lib/displayServiceInfo.js b/info/lib/displayServiceInfo.js index a89c016..9e390ac 100644 --- a/info/lib/displayServiceInfo.js +++ b/info/lib/displayServiceInfo.js @@ -96,8 +96,7 @@ module.exports = { const getFunctionNameInService = (funcName, service, stage) => { let funcNameInService = funcName; - funcNameInService = funcNameInService.replace(service, ''); - funcNameInService = funcNameInService.replace(stage, ''); - funcNameInService = funcNameInService.slice(2, funcNameInService.length); + funcNameInService = funcNameInService.replace(`${service}-`, ''); + funcNameInService = funcNameInService.replace(`${stage}-`, ''); return funcNameInService; }; diff --git a/info/lib/displayServiceInfo.test.js b/info/lib/displayServiceInfo.test.js index 5f08b9b..eee741a 100644 --- a/info/lib/displayServiceInfo.test.js +++ b/info/lib/displayServiceInfo.test.js @@ -16,11 +16,11 @@ describe('DisplayServiceInfo', () => { serverless = new Serverless(); serverless.service.service = 'my-service'; serverless.service.functions = { - func1: { + 'func1': { handler: 'handler', events: [{ http: 'foo' }], }, - func2: { + 'func2': { handler: 'handler', events: [ { @@ -32,6 +32,11 @@ describe('DisplayServiceInfo', () => { }, ], }, + 'my-func3': { + name: 'my-func3', + handler: 'handler', + events: [{ http: 'foo' }], + }, }; serverless.service.provider = { project: 'my-project', @@ -131,6 +136,37 @@ describe('DisplayServiceInfo', () => { }); }); + it('should gather the resource data when the function name is specified', () => { + const resources = { + resources: [ + { type: 'resource.which.should.be.filterered', name: 'someResource' }, + { + type: 'gcp-types/cloudfunctions-v1:projects.locations.functions', + name: 'my-func3', + }, + ], + }; + + const expectedData = { + service: 'my-service', + project: 'my-project', + stage: 'dev', + region: 'us-central1', + resources: { + functions: [ + { + name: 'my-func3', + resource: 'https://us-central1-my-project.cloudfunctions.net/my-func3', + }, + ], + }, + }; + + return googleInfo.gatherData(resources).then((data) => { + expect(data).toEqual(expectedData); + }); + }); + it('should resolve with empty data if resource type is not matching', () => { const resources = { resources: [{ type: 'resource.which.should.be.filterered', name: 'someResource' }], diff --git a/test/serverless.js b/test/serverless.js index 321d72a..c79458d 100644 --- a/test/serverless.js +++ b/test/serverless.js @@ -12,8 +12,11 @@ class Serverless { }; this.service.getFunction = function (functionName) { //eslint-disable-line - // NOTE the stage is always 'dev'! - this.functions[functionName].name = `${this.service}-dev-${functionName}`; + // NOTE assign the function name only when it is not specified + if (!this.functions[functionName].name) { + // NOTE the stage is always 'dev'! + this.functions[functionName].name = `${this.service}-dev-${functionName}`; + } return this.functions[functionName]; }; this.utils = {