@metamask/snaps-simulation
Version:
A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment
27 lines • 968 B
JavaScript
import { createAsyncMiddleware } from "@metamask/json-rpc-engine";
import { getJsonRpcMocks, removeJsonRpcMock } from "../store/mocks.mjs";
/**
* Create a middleware for handling JSON-RPC methods that have been mocked.
*
* @param store - The Redux store to use.
* @returns A middleware function.
*/
export function createMockMiddleware(store) {
return createAsyncMiddleware(async (request, response, next) => {
const mocks = 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(removeJsonRpcMock(key));
}
response.result = result;
return;
}
}
await next();
});
}
//# sourceMappingURL=mock.mjs.map