Skip to content
This repository has been archived by the owner on Jun 10, 2022. It is now read-only.

Commit

Permalink
Added unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
fboucquez committed Nov 9, 2020
1 parent 80d310b commit c1e57eb
Showing 1 changed file with 73 additions and 70 deletions.
143 changes: 73 additions & 70 deletions rest/test/plugins/lockSecret/lockSecretRoutes_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,113 +105,116 @@ describe('lock secret routes', () => {
dbSecretLocksFake.resetHistory();
});

describe('GET', () => {
const route = mockServer.getRoute('/account/:address/lock/secret').get();
const aliases = ['/account/:address/lock/secret', '/lock/secret'];
aliases.forEach(alias => {
describe(`GET ${alias}`, () => {
const route = mockServer.getRoute(alias).get();

describe('by address', () => {
it('parses and forwards paging options', () => {
describe('by address', () => {
it('parses and forwards paging options', () => {
// Arrange:
const pagingBag = 'fakePagingBagObject';
const paginationParser = sinon.stub(routeUtils, 'parsePaginationArguments').returns(pagingBag);
const req = { params: { address: testAddress } };
const pagingBag = 'fakePagingBagObject';
const paginationParser = sinon.stub(routeUtils, 'parsePaginationArguments').returns(pagingBag);
const req = { params: { address: testAddress } };

// Act:
return mockServer.callRoute(route, req).then(() => {
// Act:
return mockServer.callRoute(route, req).then(() => {
// Assert:
expect(paginationParser.firstCall.args[0]).to.deep.equal(req.params);
expect(paginationParser.firstCall.args[2]).to.deep.equal({ id: 'objectId' });
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[2]).to.deep.equal(pagingBag);
paginationParser.restore();
expect(paginationParser.firstCall.args[0]).to.deep.equal(req.params);
expect(paginationParser.firstCall.args[2]).to.deep.equal({ id: 'objectId' });
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[2]).to.deep.equal(pagingBag);
paginationParser.restore();
});
});
});

it('allowed sort fields are taken into account', () => {
it('allowed sort fields are taken into account', () => {
// Arrange:
const paginationParserSpy = sinon.spy(routeUtils, 'parsePaginationArguments');
const expectedAllowedSortFields = { id: 'objectId' };
const paginationParserSpy = sinon.spy(routeUtils, 'parsePaginationArguments');
const expectedAllowedSortFields = { id: 'objectId' };

// Act:
return mockServer.callRoute(route, { params: { address: testAddress } }).then(() => {
// Act:
return mockServer.callRoute(route, { params: { address: testAddress } }).then(() => {
// Assert:
expect(paginationParserSpy.calledOnce).to.equal(true);
expect(paginationParserSpy.firstCall.args[2]).to.deep.equal(expectedAllowedSortFields);
paginationParserSpy.restore();
expect(paginationParserSpy.calledOnce).to.equal(true);
expect(paginationParserSpy.firstCall.args[2]).to.deep.equal(expectedAllowedSortFields);
paginationParserSpy.restore();
});
});
});

it('forwards address', () => {
it('forwards address', () => {
// Arrange:
const req = { params: { address: testAddress } };
const req = { params: { address: testAddress } };

// Act:
return mockServer.callRoute(route, req).then(() => {
// Act:
return mockServer.callRoute(route, req).then(() => {
// Assert:
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddress)]);
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddress)]);

expect(mockServer.next.calledOnce).to.equal(true);
expect(mockServer.next.calledOnce).to.equal(true);
});
});
});

it('forwards secret', () => {
it('forwards secret', () => {
// Arrange:
const req = { params: { address: testAddress, secret: testSecret } };
const req = { params: { address: testAddress, secret: testSecret } };

// Act:
return mockServer.callRoute(route, req).then(() => {
// Act:
return mockServer.callRoute(route, req).then(() => {
// Assert:
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[1]).to.deep.equal(convert.hexToUint8(testSecret));
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[1]).to.deep.equal(convert.hexToUint8(testSecret));

expect(mockServer.next.calledOnce).to.equal(true);
expect(mockServer.next.calledOnce).to.equal(true);
});
});
});

it('returns empty if no secret locks found', () => {
it('returns empty if no secret locks found', () => {
// Arrange:
const req = { params: { address: testAddressNoLocks } };
const req = { params: { address: testAddressNoLocks } };

// Act:
return mockServer.callRoute(route, req).then(() => {
// Act:
return mockServer.callRoute(route, req).then(() => {
// Assert:
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddressNoLocks)]);

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
payload: emptyPageSample,
type: 'secretLockInfo',
structure: 'page'
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddressNoLocks)]);

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
payload: emptyPageSample,
type: 'secretLockInfo',
structure: 'page'
});
expect(mockServer.next.calledOnce).to.equal(true);
});
expect(mockServer.next.calledOnce).to.equal(true);
});
});

it('returns page with results', () => {
it('returns page with results', () => {
// Arrange:
const req = { params: { address: testAddress } };
const req = { params: { address: testAddress } };

// Act:
return mockServer.callRoute(route, req).then(() => {
// Act:
return mockServer.callRoute(route, req).then(() => {
// Assert:
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddress)]);

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
payload: pageSample,
type: 'secretLockInfo',
structure: 'page'
expect(dbSecretLocksFake.calledOnce).to.equal(true);
expect(dbSecretLocksFake.firstCall.args[0]).to.deep.equal([address.stringToAddress(testAddress)]);

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
payload: pageSample,
type: 'secretLockInfo',
structure: 'page'
});
expect(mockServer.next.calledOnce).to.equal(true);
});
expect(mockServer.next.calledOnce).to.equal(true);
});
});

it('throws error if address is invalid', () => {
it('throws error if address is invalid', () => {
// Arrange:
const req = { params: { address: 'AB12345' } };
const req = { params: { address: 'AB12345' } };

// Act + Assert:
expect(() => mockServer.callRoute(route, req)).to.throw('address has an invalid format');
// Act + Assert:
expect(() => mockServer.callRoute(route, req)).to.throw('address has an invalid format');
});
});
});
});
Expand Down

0 comments on commit c1e57eb

Please sign in to comment.