mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-02 06:07:06 +01:00
100 lines
2.3 KiB
JavaScript
100 lines
2.3 KiB
JavaScript
|
import { ERC20, ERC721 } from '@metamask/controller-utils';
|
||
|
import { ethErrors } from 'eth-rpc-errors';
|
||
|
import watchAssetHandler from './watch-asset';
|
||
|
|
||
|
describe('watchAssetHandler', () => {
|
||
|
let mockEnd;
|
||
|
let mockHandleWatchAssetRequest;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
mockEnd = jest.fn();
|
||
|
mockHandleWatchAssetRequest = jest.fn();
|
||
|
});
|
||
|
|
||
|
it('should handle valid input for type ERC721 correctly', async () => {
|
||
|
const req = {
|
||
|
params: {
|
||
|
options: {
|
||
|
address: '0x1234',
|
||
|
tokenId: 'testTokenId',
|
||
|
},
|
||
|
type: ERC721,
|
||
|
},
|
||
|
origin: 'testOrigin',
|
||
|
};
|
||
|
|
||
|
const res = {
|
||
|
result: false,
|
||
|
};
|
||
|
|
||
|
await watchAssetHandler.implementation(req, res, null, mockEnd, {
|
||
|
handleWatchAssetRequest: mockHandleWatchAssetRequest,
|
||
|
});
|
||
|
|
||
|
expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith(
|
||
|
req.params.options,
|
||
|
req.params.type,
|
||
|
req.origin,
|
||
|
);
|
||
|
expect(res.result).toStrictEqual(true);
|
||
|
expect(mockEnd).toHaveBeenCalledWith();
|
||
|
});
|
||
|
|
||
|
it('should handle valid input for type ERC20 correctly', async () => {
|
||
|
const req = {
|
||
|
params: {
|
||
|
options: {
|
||
|
address: '0x1234',
|
||
|
symbol: 'TEST',
|
||
|
decimals: 18,
|
||
|
},
|
||
|
type: ERC20,
|
||
|
},
|
||
|
origin: 'testOrigin',
|
||
|
};
|
||
|
|
||
|
const res = {
|
||
|
result: false,
|
||
|
};
|
||
|
|
||
|
await watchAssetHandler.implementation(req, res, null, mockEnd, {
|
||
|
handleWatchAssetRequest: mockHandleWatchAssetRequest,
|
||
|
});
|
||
|
|
||
|
expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith(
|
||
|
req.params.options,
|
||
|
req.params.type,
|
||
|
req.origin,
|
||
|
);
|
||
|
expect(res.result).toStrictEqual(true);
|
||
|
expect(mockEnd).toHaveBeenCalledWith();
|
||
|
});
|
||
|
|
||
|
it('should throw when type is ERC721 and tokenId type is invalid', async () => {
|
||
|
const req = {
|
||
|
params: {
|
||
|
options: {
|
||
|
address: '0x1234',
|
||
|
tokenId: 222,
|
||
|
},
|
||
|
type: ERC721,
|
||
|
},
|
||
|
origin: 'testOrigin',
|
||
|
};
|
||
|
|
||
|
const res = {
|
||
|
result: false,
|
||
|
};
|
||
|
|
||
|
await watchAssetHandler.implementation(req, res, null, mockEnd, {
|
||
|
handleWatchAssetRequest: mockHandleWatchAssetRequest,
|
||
|
});
|
||
|
|
||
|
expect(mockEnd).toHaveBeenCalledWith(
|
||
|
ethErrors.rpc.invalidParams({
|
||
|
message: `Expected parameter 'tokenId' to be type 'string'. Received type 'number'`,
|
||
|
}),
|
||
|
);
|
||
|
});
|
||
|
});
|