@metamask/snaps-simulation
Version:
A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment
31 lines • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMockMiddleware = void 0;
const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
const mocks_1 = require("../store/mocks.cjs");
/**
* Create a middleware for handling JSON-RPC methods that have been mocked.
*
* @param store - The Redux store to use.
* @returns A middleware function.
*/
function createMockMiddleware(store) {
return (0, json_rpc_engine_1.createAsyncMiddleware)(async (request, response, next) => {
const mocks = (0, mocks_1.getJsonRpcMocks)(store.getState());
const keys = Object.keys(mocks);
for (const key of keys) {
const { implementation, once } = mocks[key];
const result = await implementation(request);
if (result !== undefined) {
if (once) {
store.dispatch((0, mocks_1.removeJsonRpcMock)(key));
}
response.result = result;
return;
}
}
await next();
});
}
exports.createMockMiddleware = createMockMiddleware;
//# sourceMappingURL=mock.cjs.map