Skip to content

Commit

Permalink
Move the create package function in the update client
Browse files Browse the repository at this point in the history
  • Loading branch information
Grégoire Weber committed Apr 15, 2017
1 parent 3a59b60 commit f565f94
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 146 deletions.
24 changes: 1 addition & 23 deletions src/clients/BarracksClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ function mergeTokenClient(barracksClient, options) {
function mergeUpdateClient(barracksClient, options) {
const updateClient = new UpdateClient(options);
barracksClient.createUpdate = updateClient.createUpdate.bind(updateClient);
barracksClient.createUpdatePackage = updateClient.createUpdatePackage.bind(updateClient);
barracksClient.editUpdate = updateClient.editUpdate.bind(updateClient);
barracksClient.getUpdate = updateClient.getUpdate.bind(updateClient);
barracksClient.getUpdates = updateClient.getUpdates.bind(updateClient);
Expand All @@ -82,29 +83,6 @@ class BarracksClient {
mergeUpdateClient(this, options);
}

createPackage(token, updatePackage) {
return new Promise((resolve, reject) => {
this.client.sendEndpointRequest('createPackage', {
headers: {
'x-auth-token': token
},
formData: {
versionId: updatePackage.versionId,
file: {
value: fs.createReadStream(updatePackage.file),
options: {
filename: path.basename(updatePackage.file)
}
}
}
}).then(response => {
resolve(response.body);
}).catch(err => {
reject(err.message);
});
});
}

createComponent(token, component) {
return new Promise((resolve, reject) => {
this.client.sendEndpointRequest('createComponent', {
Expand Down
25 changes: 25 additions & 0 deletions src/clients/UpdateClient.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const PageableStream = require('./PageableStream');
const HTTPClient = require('./HTTPClient');
const logger = require('../utils/logger');
const fs = require('fs');
const path = require('path');

class BarracksClient {

Expand All @@ -24,6 +26,29 @@ class BarracksClient {
});
}

createUpdatePackage(token, updatePackage) {
return new Promise((resolve, reject) => {
this.httpClient.sendEndpointRequest('createUpdatePackage', {
headers: {
'x-auth-token': token
},
formData: {
versionId: updatePackage.versionId,
file: {
value: fs.createReadStream(updatePackage.file),
options: {
filename: path.basename(updatePackage.file)
}
}
}
}).then(response => {
resolve(response.body);
}).catch(err => {
reject(err.message);
});
});
}

editUpdate(token, updateDiff) {
return new Promise((resolve, reject) => {
this.getUpdate(token, updateDiff.uuid).then(update => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/update/CreateUpdateCommand.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class CreateUpdateCommand extends BarracksCommand {
return this.barracks.getSegmentByName(token, program.segment);
}).then(result => {
segment = result;
return this.barracks.createPackage(token, {
return this.barracks.createUpdatePackage(token, {
versionId: program.versionId,
file: program.package
});
Expand Down
2 changes: 1 addition & 1 deletion src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ module.exports = {
method: 'PUT',
path: '/api/member/updates/:uuid/status/scheduled?time=:time'
},
createPackage: {
createUpdatePackage: {
method: 'POST',
path: '/api/member/packages'
},
Expand Down
109 changes: 1 addition & 108 deletions tests/clients/BarracksClient.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ describe('Barracks', () => {

// Then
expect(barracksClient).to.have.property('createUpdate').and.to.be.a('function');
expect(barracksClient).to.have.property('createUpdate').and.to.be.a('function');
expect(barracksClient).to.have.property('editUpdate').and.to.be.a('function');
expect(barracksClient).to.have.property('getUpdate').and.to.be.a('function');
expect(barracksClient).to.have.property('getUpdates').and.to.be.a('function');
Expand All @@ -105,114 +106,6 @@ describe('Barracks', () => {
});
});

describe('#createPackage()', () => {

beforeEach(() => {
const ProxifiedBarracks = proxyquire(barracksClientPath, {
fs: {
createReadStream: file => {
return mockedCreateReadStream(file)
}
},
path: {
basename: file => {
return mockedBasename(file)
}
}
});

barracks = new ProxifiedBarracks();
});

it('should return the package created', done => {
// Given
const segmentId = 'aSegment';
const options = {
headers: { 'x-auth-token': token },
pathVariables: { segmentId }
}
const response = { body: 'coucou' }
const fileReadStream = 'fileReadStream';
const file = 'file';
const versionId = 'version';
const package = { versionId, file };

barracks.client.sendEndpointRequest = sinon.stub().returns(Promise.resolve(response));
mockedCreateReadStream = sinon.stub().returns(fileReadStream);
mockedBasename = sinon.stub().returns(file);

// When / Then
barracks.createPackage(token, package).then(result => {
expect(result).to.be.equals(response.body);
expect(barracks.client.sendEndpointRequest).to.have.been.calledOnce;
expect(barracks.client.sendEndpointRequest).to.have.been.calledWithExactly(
'createPackage',
{
headers: { 'x-auth-token': token },
formData: {
versionId: versionId,
file: {
value: fileReadStream,
options: { filename: file }
}
}
}
);
expect(mockedCreateReadStream).to.have.been.calledOnce;
expect(mockedCreateReadStream).to.have.been.calledWithExactly(file);
expect(mockedBasename).to.have.been.calledOnce;
expect(mockedBasename).to.have.been.calledWithExactly(file);
done();
}).catch(err => {
done(err);
});
});

it('should reject an error if request fails', done => {
// Given
const segmentId = 'aSegment';
const options = {
headers: { 'x-auth-token': token },
pathVariables: { segmentId }
}
const response = { message: 'error' }
const fileReadStream = 'fileReadStream';
const file = 'file';
const versionId = 'version';
const package = { versionId, file };

barracks.client.sendEndpointRequest = sinon.stub().returns(Promise.reject(response));
mockedCreateReadStream = sinon.stub().returns(fileReadStream);
mockedBasename = sinon.stub().returns(file);

// When / Then
barracks.createPackage(token, package).then(result => {
done('shoud have failed');
}).catch(err => {
expect(err).to.be.equals(response.message);
expect(barracks.client.sendEndpointRequest).to.have.been.calledOnce;
expect(barracks.client.sendEndpointRequest).to.have.been.calledWithExactly(
'createPackage',
{
headers: { 'x-auth-token': token },
formData: {
versionId: versionId,
file: {
value: fileReadStream,
options: { filename: file }
}
}
}
);
expect(mockedCreateReadStream).to.have.been.calledOnce;
expect(mockedCreateReadStream).to.have.been.calledWithExactly(file);
expect(mockedBasename).to.have.been.calledOnce;
expect(mockedBasename).to.have.been.calledWithExactly(file);
done();
});
});
});

describe('#createComponent()', () => {

const componentRef = 'my.component.yo';
Expand Down
111 changes: 110 additions & 1 deletion tests/clients/UpdateClient.spec.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
const updateClientPath = '../../src/clients/UpdateClient';
const PageableStream = require('../../src/clients/PageableStream');
const chai = require('chai');
const expect = chai.expect;
const sinon = require('sinon');
const sinonChai = require('sinon-chai');
const chaiAsPromised = require('chai-as-promised');
const UpdateClient = require('../../src/clients/UpdateClient');
const UpdateClient = require(updateClientPath);
const proxyquire = require('proxyquire').noCallThru();

chai.use(chaiAsPromised);
Expand Down Expand Up @@ -65,6 +66,114 @@ describe('UpdateClient', () => {
});
});

describe('#createUpdatePackage()', () => {

beforeEach(() => {
const ProxifiedClient = proxyquire(updateClientPath, {
fs: {
createReadStream: file => {
return mockedCreateReadStream(file)
}
},
path: {
basename: file => {
return mockedBasename(file)
}
}
});

updateClient = new ProxifiedClient();
});

it('should return the package created', done => {
// Given
const segmentId = 'aSegment';
const options = {
headers: { 'x-auth-token': token },
pathVariables: { segmentId }
}
const response = { body: 'coucou' }
const fileReadStream = 'fileReadStream';
const file = 'file';
const versionId = 'version';
const package = { versionId, file };

updateClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.resolve(response));
mockedCreateReadStream = sinon.stub().returns(fileReadStream);
mockedBasename = sinon.stub().returns(file);

// When / Then
updateClient.createUpdatePackage(token, package).then(result => {
expect(result).to.be.equals(response.body);
expect(updateClient.httpClient.sendEndpointRequest).to.have.been.calledOnce;
expect(updateClient.httpClient.sendEndpointRequest).to.have.been.calledWithExactly(
'createUpdatePackage',
{
headers: { 'x-auth-token': token },
formData: {
versionId: versionId,
file: {
value: fileReadStream,
options: { filename: file }
}
}
}
);
expect(mockedCreateReadStream).to.have.been.calledOnce;
expect(mockedCreateReadStream).to.have.been.calledWithExactly(file);
expect(mockedBasename).to.have.been.calledOnce;
expect(mockedBasename).to.have.been.calledWithExactly(file);
done();
}).catch(err => {
done(err);
});
});

it('should reject an error if request fails', done => {
// Given
const segmentId = 'aSegment';
const options = {
headers: { 'x-auth-token': token },
pathVariables: { segmentId }
}
const response = { message: 'error' }
const fileReadStream = 'fileReadStream';
const file = 'file';
const versionId = 'version';
const package = { versionId, file };

updateClient.httpClient.sendEndpointRequest = sinon.stub().returns(Promise.reject(response));
mockedCreateReadStream = sinon.stub().returns(fileReadStream);
mockedBasename = sinon.stub().returns(file);

// When / Then
updateClient.createUpdatePackage(token, package).then(result => {
done('shoud have failed');
}).catch(err => {
expect(err).to.be.equals(response.message);
expect(updateClient.httpClient.sendEndpointRequest).to.have.been.calledOnce;
expect(updateClient.httpClient.sendEndpointRequest).to.have.been.calledWithExactly(
'createUpdatePackage',
{
headers: { 'x-auth-token': token },
formData: {
versionId: versionId,
file: {
value: fileReadStream,
options: { filename: file }
}
}
}
);
expect(mockedCreateReadStream).to.have.been.calledOnce;
expect(mockedCreateReadStream).to.have.been.calledWithExactly(file);
expect(mockedBasename).to.have.been.calledOnce;
expect(mockedBasename).to.have.been.calledWithExactly(file);
done();
});
});
});

describe('#editUpdate()', () => {

const originalUpdate = {
Expand Down
Loading

0 comments on commit f565f94

Please sign in to comment.