Skip to content

Commit 9416f88

Browse files
committed
test: melt-tokens tests
1 parent 69e7b4e commit 9416f88

File tree

1 file changed

+133
-0
lines changed

1 file changed

+133
-0
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
import { TestUtils } from './utils/test-utils-integration';
2+
import { WalletHelper } from './utils/wallet-helper';
3+
4+
describe('melt tokens', () => {
5+
let wallet1;
6+
const tokenA = {
7+
name: 'Token A',
8+
symbol: 'TKA',
9+
uid: null
10+
};
11+
12+
beforeAll(async () => {
13+
wallet1 = new WalletHelper('melt-token-1');
14+
15+
// Starting the wallets
16+
await WalletHelper.startMultipleWalletsForTest([wallet1]);
17+
18+
// Creating a token for the tests
19+
await wallet1.injectFunds(10, 0, { doNotWait: true });
20+
const tkAtx = await wallet1.createToken({
21+
name: tokenA.name,
22+
symbol: tokenA.symbol,
23+
amount: 800,
24+
address: await wallet1.getAddressAt(0),
25+
change_address: await wallet1.getAddressAt(0)
26+
});
27+
tokenA.uid = tkAtx.hash;
28+
});
29+
30+
afterAll(async () => {
31+
await wallet1.stop();
32+
});
33+
34+
// Testing failures first, that do not cause side-effects on the blockchain
35+
36+
it('should not melt an invalid token', async done => {
37+
const response = await TestUtils.request
38+
.post('/wallet/melt-tokens')
39+
.send({
40+
token: 'invalidToken',
41+
amount: 100
42+
})
43+
.set({ 'x-wallet-id': wallet1.walletId });
44+
45+
expect(response.status)
46+
.toBe(200);
47+
expect(response.body.success)
48+
.toBe(false);
49+
50+
// Even though the result is correct, the error thrown is not related. Should be fixed later.
51+
// expect(response.body.error).toContain('invalid');
52+
done();
53+
});
54+
55+
it('should not melt with an invalid amount', async done => {
56+
const response = await TestUtils.request
57+
.post('/wallet/melt-tokens')
58+
.send({
59+
token: tokenA.uid,
60+
amount: 'invalidVamount'
61+
})
62+
.set({ 'x-wallet-id': wallet1.walletId });
63+
64+
expect(response.status)
65+
.toBe(400);
66+
expect(response.body.success)
67+
.toBe(false);
68+
expect(response.text)
69+
.toContain('invalid');
70+
done();
71+
});
72+
73+
// Insufficient funds
74+
75+
it('should not melt with insuficcient tokens', async done => {
76+
const response = await TestUtils.request
77+
.post('/wallet/melt-tokens')
78+
.send({
79+
token: tokenA.uid,
80+
address: await wallet1.getAddressAt(1),
81+
amount: 1000
82+
})
83+
.set({ 'x-wallet-id': wallet1.walletId });
84+
85+
expect(response.status)
86+
.toBe(200);
87+
expect(response.body.success)
88+
.toBe(false);
89+
expect(response.body.error)
90+
.toContain('enough inputs to melt');
91+
done();
92+
});
93+
94+
// Success
95+
96+
it('should melt with correct parameters', async done => {
97+
const response = await TestUtils.request
98+
.post('/wallet/melt-tokens')
99+
.send({
100+
token: tokenA.uid,
101+
address: await wallet1.getAddressAt(1),
102+
amount: 300
103+
})
104+
.set({ 'x-wallet-id': wallet1.walletId });
105+
106+
expect(response.body.success)
107+
.toBe(true);
108+
done();
109+
});
110+
111+
it('should melt all the tokens', async done => {
112+
const response = await TestUtils.request
113+
.post('/wallet/melt-tokens')
114+
.send({
115+
token: tokenA.uid,
116+
address: await wallet1.getAddressAt(1),
117+
amount: 500
118+
})
119+
.set({ 'x-wallet-id': wallet1.walletId });
120+
121+
expect(response.body.success)
122+
.toBe(true);
123+
124+
const balanceResult = await TestUtils.request
125+
.get('/wallet/balance')
126+
.query({ token: tokenA.uid })
127+
.set({ 'x-wallet-id': wallet1.walletId });
128+
129+
expect(balanceResult.body.available)
130+
.toBe(0);
131+
done();
132+
});
133+
});

0 commit comments

Comments
 (0)