1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const { balance, ether, expectRevert } = require('openzeppelin-test-helpers');
- const gsn = require('@openzeppelin/gsn-helpers');
- const { expect } = require('chai');
- const GSNRecipientMock = artifacts.require('GSNRecipientMock');
- contract('GSNRecipient', function ([_, payee]) {
- beforeEach(async function () {
- this.recipient = await GSNRecipientMock.new();
- });
- it('returns the RelayHub address address', async function () {
- expect(await this.recipient.getHubAddr()).to.equal('0xD216153c06E857cD7f72665E0aF1d7D82172F494');
- });
- it('returns the compatible RelayHub version', async function () {
- expect(await this.recipient.relayHubVersion()).to.equal('1.0.0');
- });
- context('with deposited funds', async function () {
- const amount = ether('1');
- beforeEach(async function () {
- await gsn.fundRecipient(web3, { recipient: this.recipient.address, amount });
- });
- it('funds can be withdrawn', async function () {
- const balanceTracker = await balance.tracker(payee);
- await this.recipient.withdrawDeposits(amount, payee);
- expect(await balanceTracker.delta()).to.be.bignumber.equal(amount);
- });
- it('partial funds can be withdrawn', async function () {
- const balanceTracker = await balance.tracker(payee);
- await this.recipient.withdrawDeposits(amount.divn(2), payee);
- expect(await balanceTracker.delta()).to.be.bignumber.equal(amount.divn(2));
- });
- it('reverts on overwithdrawals', async function () {
- await expectRevert(this.recipient.withdrawDeposits(amount.addn(1), payee), 'insufficient funds');
- });
- });
- });
|