@requestly/mock-server
v0.3.2
Published
- Methods: GET, POST, PUT, OPTIONS - Description - Endpoint (can be full path) (/api/v1/users) - Multiple Responses - Shuffle Response - Sequential Response - Rules in Response - Status (Any status code 2xx, 4xx) - Latency - Body - Templat
Downloads
176
Keywords
Readme
requestly-mock-server
This Repo contains the core express server @requestly/mock-server package which powers Requestly's Cloud Mock Server.
Development
Install Dependencies
npm i
Start Server
npm start:dev
Usage with firebase-functions
Install
npm i @requestly/mock-server
Setup
import * as functions from 'firebase-functions';
import { MockServer } from '@requestly/mock-server';
import firebaseConfig from '../firebaseConfig';
const startMockServer = () => {
const expressApp = new MockServer(3000, firebaseConfig, '/api/mockv2').app;
return functions.runWith({ minInstances: isProdEnv() ? 1 : 0 }).https.onRequest(expressApp);
};
export const handleMockRequest = startMockServer();
class FirebaseConfig implements IConfig {
getMockSelectorMap = (kwargs?: any) => {
/**
* Fetch and return mockSelectorMap from firestore
* {
* mockId: {
* route: "",
* method: "",
* }
* }
*/
};
getMock = (id: string, kwargs?: any) => {
/**
* Fetch mock details from firestore
*/
}
storeLog? = (log: Log) => {
/**
* Store log in cloud storages
*/
}
}
const firebaseConfig = new FirebaseConfig();
export default firebaseConfig;
Requestly Cloud Mock Server Architechture
STEPS
- Request coming from GET
https://username.requestly.dev/users
- Firebase Function passes the request to @requestly/mock-server
- @requestly/mock-server - MockSelector
a. Fetches all the available mocks using
IConfig.getMockSelectorMap()
(Firestore in case of Requestly) b. Select mock if any endpoint+method matches the incoming request (GET /users) c. Fetch Mock usingIConfig.getMock(mockId)
and pass it to MockProcessor - @requestly/mock-server - MockProcessor a. Process Mock - Response Rendering b. Return Response