Skip to content

Commit

Permalink
Add flag for device package changed hook
Browse files Browse the repository at this point in the history
  • Loading branch information
Rémi committed Aug 8, 2017
1 parent a44aa43 commit b8273c5
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 27 deletions.
11 changes: 8 additions & 3 deletions src/commands/hook/CreateHookCommand.js
Expand Up @@ -22,16 +22,20 @@ function getEventType(program) {
if(program.deviceDataChange) {
return 'DEVICE_DATA_CHANGE';
}
if(program.devicePackageChange) {
return 'DEVICE_PACKAGE_CHANGE';
}
}

function getGoogleClientSecret(program) {
return ObjectReader.readObjectFromFile(program.googleClientSecret);
}

function hasValidEventType(program) {
return (!program.ping && program.enrollment && !program.deviceDataChange ||
program.ping && !program.enrollment && !program.deviceDataChange ||
!program.ping && !program.enrollment && program.deviceDataChange);
return (!program.ping && program.enrollment && !program.deviceDataChange && !program.devicePackageChange ||
program.ping && !program.enrollment && !program.deviceDataChange && !program.devicePackageChange ||
!program.ping && !program.enrollment && program.deviceDataChange && !program.devicePackageChange ||
!program.ping && !program.enrollment && !program.deviceDataChange && program.devicePackageChange);
}

function hasValidHookTypeAndArguments(program) {
Expand All @@ -47,6 +51,7 @@ class CreateHookCommand extends BarracksCommand {
.option('--ping', 'To create a hook triggered by the ping of a device.')
.option('--enrollment', 'To create a hook for the first ping of a device.')
.option('--deviceDataChange', 'To create a hook triggered when a device pings with new custom client data.')
.option('--devicePackageChange', 'To create a hook triggered when a device pings with new packages.')
.option('--web', 'To create a web hook')
.option('--googleAnalytics', 'To create a Google Analytics hook')
.option('--bigquery', 'To create a BigQuery hook')
Expand Down
71 changes: 47 additions & 24 deletions tests/commands/hook/CreateHookCommand.spec.js
Expand Up @@ -118,7 +118,7 @@ describe('CreateHookCommand', () => {
expect(result).to.be.true;
});

it('should return true when event type is enrollment', () => {
it('should return true when event type is deviceDataChange', () => {
// Given
const program = Object.assign({}, programWithValidOptions, { ping: false, deviceDataChange:true });
// When
Expand All @@ -127,6 +127,16 @@ describe('CreateHookCommand', () => {
expect(result).to.be.true;
});

it('should return true when event type is devicePackageChange', () => {
// Given
const program = Object.assign({}, programWithValidOptions, { ping: false, devicePackageChange:true });
// When
const result = createHookCommand.validateCommand(program);
// Then
expect(result).to.be.true;
});


it('should return false when event type is missing', () => {
// Given
const program = Object.assign({}, programWithValidOptions, { ping: undefined });
Expand Down Expand Up @@ -163,6 +173,15 @@ describe('CreateHookCommand', () => {
expect(result).to.be.false;
});

it('should return false when devicePackageChange and deviceDataChange', () => {
// Given
const program = Object.assign({}, programWithValidOptions, { ping:false, deviceDataChange: true, devicePackageChange:true });
// When
const result = createHookCommand.validateCommand(program);
// Then
expect(result).to.be.false;
});

it('should return false when web and GA', () => {
// Given
const program = Object.assign({}, programWithValidOptions, { web:true, googleAnalytics: true });
Expand Down Expand Up @@ -255,12 +274,6 @@ describe('CreateHookCommand', () => {

it('should return the created hook when the request was successful and event type is ping', done => {
// Given
const spyReadObjectFromFile = sinon.spy();
proxyReadObjectFromFile = (file) => {
spyReadObjectFromFile(file);
return undefined;
};

createHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token));
createHookCommand.barracks = {
createHook: sinon.stub().returns(Promise.resolve(createdHook))
Expand Down Expand Up @@ -288,12 +301,6 @@ describe('CreateHookCommand', () => {

it('should return the created hook when the request was successful and event type is enrollment', done => {
// Given
const spyReadObjectFromFile = sinon.spy();
proxyReadObjectFromFile = (file) => {
spyReadObjectFromFile(file);
return undefined;
};

const program = Object.assign({}, programWithValidOptions, { ping: false, enrollment:true });
createHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token));
createHookCommand.barracks = {
Expand Down Expand Up @@ -322,12 +329,6 @@ describe('CreateHookCommand', () => {

it('should return the created hook when the request was successful and event type is deviceDataChange', done => {
// Given
const spyReadObjectFromStdin = sinon.spy();
proxyReadObjectFromStdin = () => {
spyReadObjectFromStdin();
return undefined;
};

const program = Object.assign({}, programWithValidOptions, { ping: false, deviceDataChange:true });
createHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token));
createHookCommand.barracks = {
Expand All @@ -354,14 +355,36 @@ describe('CreateHookCommand', () => {
});
});

it('should return the created hook when the request was successful and hook type is google analytics', done => {
it('should return the created hook when the request was successful and event type is devicePackageChange', done => {
// Given
const spyReadObjectFromFile = sinon.spy();
proxyReadObjectFromFile = (file) => {
spyReadObjectFromFile(file);
return undefined;
const program = Object.assign({}, programWithValidOptions, { ping: false, devicePackageChange:true });
createHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token));
createHookCommand.barracks = {
createHook: sinon.stub().returns(Promise.resolve(createdHook))
};

// When / Then
createHookCommand.execute(program).then(result => {
expect(result).to.be.equals(createdHook);
expect(createHookCommand.getAuthenticationToken).to.have.been.calledOnce;
expect(createHookCommand.getAuthenticationToken).to.have.been.calledWithExactly();
expect(createHookCommand.barracks.createHook).to.have.been.calledOnce;
expect(createHookCommand.barracks.createHook).to.have.been.calledWithExactly(token, {
eventType: 'DEVICE_PACKAGE_CHANGE',
type: 'web',
name: program.name,
url: program.url,
gaTrackingId: undefined,
googleClientSecret: undefined
});
done();
}).catch(err => {
done(err);
});
});

it('should return the created hook when the request was successful and hook type is google analytics', done => {
// Given
const program = Object.assign({}, programWithValidOptions, { web: false, googleAnalytics: true, gaTrackingId: 'UA-12453453-23' });
createHookCommand.getAuthenticationToken = sinon.stub().returns(Promise.resolve(token));
createHookCommand.barracks = {
Expand Down

0 comments on commit b8273c5

Please sign in to comment.