Skip to content

Commit

Permalink
fix: wip refactor integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ZavenArra committed Feb 17, 2021
1 parent e4ae6e1 commit 44d2f7c
Show file tree
Hide file tree
Showing 17 changed files with 2,177 additions and 315 deletions.
56 changes: 56 additions & 0 deletions __tests__/auth.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
require('dotenv').config()
const request = require('supertest');
const server = require("../server/app");
const { expect } = require('chai');
const seed = require('./seed');
const log = require('loglevel');
const Transfer = require("../server/models/Transfer");
const TrustRelationship = require("../server/models/TrustRelationship");
const sinon = require("sinon");
const chai = require("chai");
chai.use(require('chai-uuid'));

describe('Authentication', () => {
let bearerToken;
let bearerTokenB;

before( async () => {
await seed.clear();
await seed.seed();
});

beforeEach(async () => {
sinon.restore();
})

// Authorization path
it(`[POST /auth] login with ${seed.wallet.name}`, (done) => {
request(server)
.post('/auth')
.set('treetracker-api-key', seed.apiKey)
.send({wallet: seed.wallet.name, password: seed.wallet.password})
.expect('Content-Type', /application\/json/)
.expect(200)
.end((err, res) => {
if (err) done(err);
expect(res.body).to.have.property('token');
done();
});
});


it(`[POST /auth] login with using wallet id: ${seed.wallet.id}`, (done) => {
request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({wallet: seed.wallet.id, password: seed.wallet.password})
.expect('Content-Type', /application\/json/)
.expect(200)
.end((err, res) => {
if (err) done(err);
expect(res.body).to.have.property('token');
done();
});
});

});
95 changes: 95 additions & 0 deletions __tests__/bundle-transfer-cancel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
require('dotenv').config()
const request = require('supertest');
const server = require("../server/app");
const { expect } = require('chai');
const seed = require('./seed');
const log = require('loglevel');
const Transfer = require("../server/models/Transfer");
const TrustRelationship = require("../server/models/TrustRelationship");
const sinon = require("sinon");
const chai = require("chai");
chai.use(require('chai-uuid'));

const apiKey = seed.apiKey;

describe('Create and accept a bundle transfer', () => {

let bearerToken;
let bearerTokenB;
let pendingTransfer;

before( async () => {

await seed.clear();
await seed.seed();

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.wallet.name,
password: seed.wallet.password,
});
expect(res).to.have.property('statusCode', 200);
bearerToken = res.body.token;
expect(bearerToken).to.match(/\S+/);
}

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.walletB.name,
password: seed.walletB.password,
});
expect(res).to.have.property('statusCode', 200);
bearerTokenB = res.body.token;
expect(bearerTokenB).to.match(/\S+/);
}
});

beforeEach(async () => {
sinon.restore();
})


it(`create Bundle transfer tokens from ${seed.wallet.name} to ${seed.walletB.name}`, async () => {
const res = await request(server)
.post("/transfers")
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`)
.send({
bundle: {
bundle_size: 1,
},
sender_wallet: seed.wallet.name,
receiver_wallet: seed.walletB.name,
});
expect(res).property("statusCode").to.eq(202);
pendingTransfer = res.body
expect(res).property("body").property("parameters").property("bundle").property("bundleSize").eq(1);
})

it("Delete/cancel the pending transfer", async () => {
const res = await request(server)
.del(`/transfers/${pendingTransfer.id}`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`);
expect(res).to.have.property('statusCode', 200);
})

it(`Wallet:${seed.wallet.name} should be able to find the transfer, it should be cancelled`, async () => {
const res = await request(server)
.get(`/transfers?limit=1000`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.transfers).lengthOf(1);
expect(res.body.transfers[0]).property("state").eq(Transfer.STATE.cancelled);
});
});

116 changes: 116 additions & 0 deletions __tests__/bundle-transfer-create-accept.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
require('dotenv').config()
const request = require('supertest');
const server = require("../server/app");
const { expect } = require('chai');
const seed = require('./seed');
const log = require('loglevel');
const Transfer = require("../server/models/Transfer");
const TrustRelationship = require("../server/models/TrustRelationship");
const sinon = require("sinon");
const chai = require("chai");
chai.use(require('chai-uuid'));

const apiKey = seed.apiKey;

describe('Create and accept a bundle transfer', () => {

let bearerToken;
let bearerTokenB;
let pendingTransfer;

before( async () => {

await seed.clear();
await seed.seed();

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.wallet.name,
password: seed.wallet.password,
});
expect(res).to.have.property('statusCode', 200);
bearerToken = res.body.token;
expect(bearerToken).to.match(/\S+/);
}

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.walletB.name,
password: seed.walletB.password,
});
expect(res).to.have.property('statusCode', 200);
bearerTokenB = res.body.token;
expect(bearerTokenB).to.match(/\S+/);
}
});

beforeEach(async () => {
sinon.restore();
})


it(`create Bundle transfer tokens from ${seed.wallet.name} to ${seed.walletB.name}`, async () => {
const res = await request(server)
.post("/transfers")
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`)
.send({
bundle: {
bundle_size: 1,
},
sender_wallet: seed.wallet.name,
receiver_wallet: seed.walletB.name,
});
expect(res).property("statusCode").to.eq(202);
expect(res).property("body").property("parameters").property("bundle").property("bundleSize").eq(1);
})


it("get all pending transfers belongs to walletB, should have one", async () => {
const res = await request(server)
.get('/transfers?state=pending&limit=1000')
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerTokenB}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.transfers).lengthOf(1);
pendingTransfer = res.body.transfers[0];
expect(pendingTransfer).property("destination_wallet").eq(seed.walletB.name);
})

it("Accept the pending bundle transfer", async () => {
const res = await request(server)
.post(`/transfers/${pendingTransfer.id}/accept`)
.set('Content-Type', "application/json")
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerTokenB}`);
expect(res).to.have.property('statusCode', 200);
})

it(`Wallet:${seed.wallet.name} should be able to find the transfer, it should be completed 2`, async () => {
const res = await request(server)
.get(`/transfers?limit=1000`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`);
console.log(res.body)
expect(res).to.have.property('statusCode', 200);
expect(res.body.transfers).lengthOf(1);
expect(res.body.transfers[0]).property("state").eq(Transfer.STATE.completed);
});

it(`Token:#${seed.token.id} now should belong to ${seed.walletB.name}`, async () => {
const res = await request(server)
.get(`/tokens/${seed.token.id}`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerTokenB}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.wallet_id).eq(seed.walletB.id);
});
});
116 changes: 116 additions & 0 deletions __tests__/bundle-transfer-decline.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
require('dotenv').config()
const request = require('supertest');
const server = require("../server/app");
const { expect } = require('chai');
const seed = require('./seed');
const log = require('loglevel');
const Transfer = require("../server/models/Transfer");
const TrustRelationship = require("../server/models/TrustRelationship");
const sinon = require("sinon");
const chai = require("chai");
chai.use(require('chai-uuid'));

const apiKey = seed.apiKey;

describe('Create and accept a bundle transfer', () => {

let bearerToken;
let bearerTokenB;
let pendingTransfer;

before( async () => {

await seed.clear();
await seed.seed();

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.wallet.name,
password: seed.wallet.password,
});
expect(res).to.have.property('statusCode', 200);
bearerToken = res.body.token;
expect(bearerToken).to.match(/\S+/);
}

{
// Authorizes before each of the follow tests
const res = await request(server)
.post('/auth')
.set('treetracker-api-key', apiKey)
.send({
wallet: seed.walletB.name,
password: seed.walletB.password,
});
expect(res).to.have.property('statusCode', 200);
bearerTokenB = res.body.token;
expect(bearerTokenB).to.match(/\S+/);
}
});

beforeEach(async () => {
sinon.restore();
})


it(`create Bundle transfer tokens from ${seed.wallet.name} to ${seed.walletB.name}`, async () => {
const res = await request(server)
.post("/transfers")
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`)
.send({
bundle: {
bundle_size: 1,
},
sender_wallet: seed.wallet.name,
receiver_wallet: seed.walletB.name,
});
expect(res).property("statusCode").to.eq(202);
expect(res).property("body").property("parameters").property("bundle").property("bundleSize").eq(1);
})


it("get all pending transfers belongs to walletB, should have one", async () => {
const res = await request(server)
.get('/transfers?state=pending&limit=1000')
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerTokenB}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.transfers).lengthOf(1);
pendingTransfer = res.body.transfers[0];
expect(pendingTransfer).property("destination_wallet").eq(seed.walletB.name);
})

it("Decline the pending transfer", async () => {
const res = await request(server)
.post(`/transfers/${pendingTransfer.id}/decline`)
.set('Content-Type', "application/json")
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerTokenB}`);
console.log(res.body)
expect(res).to.have.property('statusCode', 200);
})

it(`Wallet:${seed.wallet.name} should be able to find the transfer, it should be cancelled`, async () => {
const res = await request(server)
.get(`/transfers?limit=1000`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.transfers).lengthOf(1);
expect(res.body.transfers[0]).property("state").eq(Transfer.STATE.cancelled);
});

it(`Token:#${seed.token.id} now should still belong to ${seed.wallet.name}`, async () => {
const res = await request(server)
.get(`/tokens/${seed.token.id}`)
.set('treetracker-api-key', apiKey)
.set('Authorization', `Bearer ${bearerToken}`);
expect(res).to.have.property('statusCode', 200);
expect(res.body.wallet_id).eq(seed.wallet.id);
});
});
Loading

0 comments on commit 44d2f7c

Please sign in to comment.