1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-01 21:57:06 +01:00
metamask-extension/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.test.js

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'`,
}),
);
});
});