@unilogin/sdk
Version:
SDK is a JS library, that communicates with relayer. SDK allows managing contract, by creating basic contract-calling messages.
73 lines (61 loc) • 2.84 kB
text/typescript
import {expect} from 'chai';
import sinon from 'sinon';
import {utils} from 'ethers';
import {TEST_ACCOUNT_ADDRESS, TransferDetails} from '@unilogin/commons';
import {RecipientValidator} from '../../../../src/core/services/validations/RecipientValidator';
import {TransferErrors} from '../../../../src/core/services/validations/Validator';
import UniLoginSdk from '../../../../src';
import {AddressZero} from 'ethers/constants';
const TEST_TRANSFER_DETAILS: TransferDetails = {
to: '0x',
amount: '',
transferToken: '0x1',
gasParameters: {
gasToken: '0x',
gasPrice: utils.parseUnits('1', 'gwei'),
},
};
const sdk = {
resolveName: sinon.stub().resolves('0x'),
} as unknown as UniLoginSdk;
describe('UNIT: RecipientValidator', () => {
let errors: TransferErrors;
beforeEach(() => {
errors = {amount: [], to: []};
});
it('empty recipient', async () => {
const emptyRecipientTransferDetails = {...TEST_TRANSFER_DETAILS, to: null} as unknown as TransferDetails;
await new RecipientValidator(sdk).validate(emptyRecipientTransferDetails, errors);
expect(errors).to.deep.eq({to: ['Empty recipient'], amount: []});
});
it('proper ens name', async () => {
await new RecipientValidator(sdk).validate({...TEST_TRANSFER_DETAILS, to: 'test.mylogin.eth'}, errors);
expect(errors).to.deep.eq({to: [], amount: []});
});
it('proper address', async () => {
await new RecipientValidator(sdk).validate({...TEST_TRANSFER_DETAILS, to: TEST_ACCOUNT_ADDRESS}, errors);
expect(errors).to.deep.eq({to: [], amount: []});
});
it('invalid address', async () => {
await new RecipientValidator(sdk).validate({...TEST_TRANSFER_DETAILS, to: '0x123'}, errors);
expect(errors).to.deep.eq({to: ['0x123 is not a valid address'], amount: []});
});
it('invalid ens name', async () => {
const sdkWithNullResolveName = {
resolveName: sinon.stub().resolves(null),
} as unknown as UniLoginSdk;
await new RecipientValidator(sdkWithNullResolveName).validate({...TEST_TRANSFER_DETAILS, to: 'test.mylogin.eth'}, errors);
expect(errors).to.deep.eq({to: ['Can\'t resolve ENS address: test.mylogin.eth'], amount: []});
});
it('invalid ens name', async () => {
const sdkWithNullResolveName = {
resolveName: sinon.stub().resolves(AddressZero),
} as unknown as UniLoginSdk;
await new RecipientValidator(sdkWithNullResolveName).validate({...TEST_TRANSFER_DETAILS, to: 'test.mylogin.eth'}, errors);
expect(errors).to.deep.eq({to: ['Can\'t resolve ENS address: test.mylogin.eth'], amount: []});
});
it('invalid ens name and address', async () => {
await new RecipientValidator(sdk).validate({...TEST_TRANSFER_DETAILS, to: 'test'}, errors);
expect(errors).to.deep.eq({to: ['test is not a valid address or ENS name'], amount: []});
});
});