From c8c3fad532e5234854825c4deb0f89f1f86c8c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Re=CC=81mi?= Date: Thu, 27 Jul 2017 16:09:58 -0400 Subject: [PATCH 1/3] Add log for errors --- src/clients/HookClient.js | 18 ++++- src/commands/hook/UpdateHookCommand.js | 1 + tests/clients/HookClient.spec.js | 77 +++++++++++++++++++ tests/commands/hook/UpdateHookCommand.spec.js | 8 +- 4 files changed, 100 insertions(+), 4 deletions(-) diff --git a/src/clients/HookClient.js b/src/clients/HookClient.js index 4a80138..e6d2731 100644 --- a/src/clients/HookClient.js +++ b/src/clients/HookClient.js @@ -70,7 +70,12 @@ class HookClient { ).then(response => { resolve(response.body); }).catch(errResponse => { - reject(errResponse.message); + if (errResponse.statusCode === 404) { + reject('This is not the hook you are looking for.'); + } + else { + reject(errResponse.message); + } }); }); } @@ -108,8 +113,15 @@ class HookClient { } ).then(response => { resolve(response.body); - }).catch(err => { - reject(err.message); + }).catch(errResponse => { + if (errResponse.statusCode === 404) { + reject('The hook you want to update does not exist.'); + } + else if (errResponse.statusCode === 400){ + reject('A hook with this name already exists.'); + } else { + reject(errResponse.message); + } }); }); } diff --git a/src/commands/hook/UpdateHookCommand.js b/src/commands/hook/UpdateHookCommand.js index c782e6d..fa2bd9b 100644 --- a/src/commands/hook/UpdateHookCommand.js +++ b/src/commands/hook/UpdateHookCommand.js @@ -2,6 +2,7 @@ const BarracksCommand = require('../BarracksCommand'); function buildNewHook(currentHook, program) { return Object.assign({}, currentHook, { + type: currentHook.hookType.toLowerCase(), name: program.newName || currentHook.name, url: program.url || currentHook.url }); diff --git a/tests/clients/HookClient.spec.js b/tests/clients/HookClient.spec.js index df117b6..be56bbe 100644 --- a/tests/clients/HookClient.spec.js +++ b/tests/clients/HookClient.spec.js @@ -129,6 +129,33 @@ describe('hookClient', () => { }); }); + it('should return an error when request fails with 404', done => { + // Given + const error = { statusCode: 404, message: 'Error !' }; + hookClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.reject(error)); + + // When / Then + hookClient.getHook(token, hookName).then(result => { + done('should have failed'); + }).catch(err => { + expect(err).to.be.equals('This is not the hook you are looking for.'); + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledOnce; + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledWithExactly( + { + method: 'GET', + path: '/api/dispatcher/hooks/:hook' + }, + { + headers: { 'x-auth-token': token }, + pathVariables: { + hook: hookName + } + } + ); + done(); + }); + }); + it('should return specified hook when request succeeds', done => { // Given const response = { body: hook }; @@ -218,6 +245,56 @@ describe('hookClient', () => { }); }); + it('should return an error message when request fails with 404', done => { + // Given + const error = { statusCode: 404, message: 'Error !' }; + hookClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.reject(error)); + + // When / Then + hookClient.updateHook(token, hookName, newHook).then(result => { + done('should have failed'); + }).catch(err => { + expect(err).to.be.equals('The hook you want to update does not exist.'); + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledOnce; + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledWithExactly( + { + method: 'PUT', + path: '/api/dispatcher/hooks/:hook' + }, { + headers: { 'x-auth-token': token }, + pathVariables: { hook : hookName}, + body: newHook + } + ); + done(); + }); + }); + + it('should return an error message when request fails with 400', done => { + // Given + const error = { statusCode: 400, message: 'Error !' }; + hookClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.reject(error)); + + // When / Then + hookClient.updateHook(token, hookName, newHook).then(result => { + done('should have failed'); + }).catch(err => { + expect(err).to.be.equals('A hook with this name already exists.'); + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledOnce; + expect(hookClient.httpClient.sendEndpointRequest).to.have.been.calledWithExactly( + { + method: 'PUT', + path: '/api/dispatcher/hooks/:hook' + }, { + headers: { 'x-auth-token': token }, + pathVariables: { hook : hookName}, + body: newHook + } + ); + done(); + }); + }); + it('should return the updated hook', done => { // Given const response = { body: newHook }; diff --git a/tests/commands/hook/UpdateHookCommand.spec.js b/tests/commands/hook/UpdateHookCommand.spec.js index 823b601..34f283b 100644 --- a/tests/commands/hook/UpdateHookCommand.spec.js +++ b/tests/commands/hook/UpdateHookCommand.spec.js @@ -15,6 +15,7 @@ describe('UpdateHookCommand', () => { const token = 'i8uhkj.token.65ryft'; const name = 'MyHook'; const newName = 'MyNewHook'; + const type = 'web'; const url = 'https://new.url/callDaHook'; const programWithNameOptions = { name }; const programWithValidOptions = { @@ -152,11 +153,14 @@ describe('UpdateHookCommand', () => { const oldUrl = 'https://old.url/callDaHook'; const hook = { + hookType: 'WEB', name: name, url: oldUrl }; const newHook = { + hookType: 'WEB', + type: 'web', name: newName, url: url }; @@ -231,6 +235,8 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only name was changed', done => { // Given const partialNewHook = { + hookType: 'WEB', + type: 'web', name: newName, url: oldUrl }; @@ -263,7 +269,7 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only url was changed', done => { // Given - const partialNewHook = { name, url }; + const partialNewHook = { hookType: 'WEB', type, name, url }; const program = Object.assign({}, programWithNameOptions, { url }); updateHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token)); updateHookCommand.barracks.getHook = sinon.stub().returns(Promise.resolve(hook)); From 1c557fe9c554165eaefbf12428485f81c18cdb18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Re=CC=81mi?= Date: Fri, 28 Jul 2017 13:37:14 -0400 Subject: [PATCH 2/3] Removed hookType from model --- src/clients/HookClient.js | 2 +- src/commands/hook/UpdateHookCommand.js | 1 - tests/clients/HookClient.spec.js | 4 ++-- tests/commands/hook/UpdateHookCommand.spec.js | 6 ++---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/clients/HookClient.js b/src/clients/HookClient.js index e6d2731..5a593cd 100644 --- a/src/clients/HookClient.js +++ b/src/clients/HookClient.js @@ -117,7 +117,7 @@ class HookClient { if (errResponse.statusCode === 404) { reject('The hook you want to update does not exist.'); } - else if (errResponse.statusCode === 400){ + else if (errResponse.statusCode === 409){ reject('A hook with this name already exists.'); } else { reject(errResponse.message); diff --git a/src/commands/hook/UpdateHookCommand.js b/src/commands/hook/UpdateHookCommand.js index fa2bd9b..c782e6d 100644 --- a/src/commands/hook/UpdateHookCommand.js +++ b/src/commands/hook/UpdateHookCommand.js @@ -2,7 +2,6 @@ const BarracksCommand = require('../BarracksCommand'); function buildNewHook(currentHook, program) { return Object.assign({}, currentHook, { - type: currentHook.hookType.toLowerCase(), name: program.newName || currentHook.name, url: program.url || currentHook.url }); diff --git a/tests/clients/HookClient.spec.js b/tests/clients/HookClient.spec.js index be56bbe..abeacb9 100644 --- a/tests/clients/HookClient.spec.js +++ b/tests/clients/HookClient.spec.js @@ -270,9 +270,9 @@ describe('hookClient', () => { }); }); - it('should return an error message when request fails with 400', done => { + it('should return an error message when request fails with 409', done => { // Given - const error = { statusCode: 400, message: 'Error !' }; + const error = { statusCode: 409, message: 'Error !' }; hookClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.reject(error)); // When / Then diff --git a/tests/commands/hook/UpdateHookCommand.spec.js b/tests/commands/hook/UpdateHookCommand.spec.js index 34f283b..9a075b4 100644 --- a/tests/commands/hook/UpdateHookCommand.spec.js +++ b/tests/commands/hook/UpdateHookCommand.spec.js @@ -153,13 +153,12 @@ describe('UpdateHookCommand', () => { const oldUrl = 'https://old.url/callDaHook'; const hook = { - hookType: 'WEB', + type: 'web', name: name, url: oldUrl }; const newHook = { - hookType: 'WEB', type: 'web', name: newName, url: url @@ -235,7 +234,6 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only name was changed', done => { // Given const partialNewHook = { - hookType: 'WEB', type: 'web', name: newName, url: oldUrl @@ -269,7 +267,7 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only url was changed', done => { // Given - const partialNewHook = { hookType: 'WEB', type, name, url }; + const partialNewHook = { type: 'web', type, name, url }; const program = Object.assign({}, programWithNameOptions, { url }); updateHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token)); updateHookCommand.barracks.getHook = sinon.stub().returns(Promise.resolve(hook)); From 080141d9b6ac750ea6514ab3da893686d877eaa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Re=CC=81mi?= Date: Fri, 28 Jul 2017 13:49:46 -0400 Subject: [PATCH 3/3] Remove useless parameter in tests --- tests/commands/hook/UpdateHookCommand.spec.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/commands/hook/UpdateHookCommand.spec.js b/tests/commands/hook/UpdateHookCommand.spec.js index 9a075b4..823b601 100644 --- a/tests/commands/hook/UpdateHookCommand.spec.js +++ b/tests/commands/hook/UpdateHookCommand.spec.js @@ -15,7 +15,6 @@ describe('UpdateHookCommand', () => { const token = 'i8uhkj.token.65ryft'; const name = 'MyHook'; const newName = 'MyNewHook'; - const type = 'web'; const url = 'https://new.url/callDaHook'; const programWithNameOptions = { name }; const programWithValidOptions = { @@ -153,13 +152,11 @@ describe('UpdateHookCommand', () => { const oldUrl = 'https://old.url/callDaHook'; const hook = { - type: 'web', name: name, url: oldUrl }; const newHook = { - type: 'web', name: newName, url: url }; @@ -234,7 +231,6 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only name was changed', done => { // Given const partialNewHook = { - type: 'web', name: newName, url: oldUrl }; @@ -267,7 +263,7 @@ describe('UpdateHookCommand', () => { it('should resolve the new hook when updateHook request succeed and only url was changed', done => { // Given - const partialNewHook = { type: 'web', type, name, url }; + const partialNewHook = { name, url }; const program = Object.assign({}, programWithNameOptions, { url }); updateHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token)); updateHookCommand.barracks.getHook = sinon.stub().returns(Promise.resolve(hook));