Socket
Socket
Sign inDemoInstall

@requestly/mock-server

Package Overview
Dependencies
65
Maintainers
7
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.4 to 0.1.5

build/constants/queryParams.d.ts

16

build/core/common/mockHandler.js

@@ -18,2 +18,5 @@ "use strict";

const mockSelector_1 = __importDefault(require("./mockSelector"));
const mockServerResponseHelper_1 = require("../utils/mockServerResponseHelper");
const mockServerResponse_1 = require("../../enums/mockServerResponse");
const queryParams_1 = require("../../constants/queryParams");
class MockServerHandler {

@@ -33,12 +36,11 @@ }

console.debug("[Debug] Mock Selected with data", mockData);
const mockResponse = yield mockProcessor_1.default.process(mockData, endpoint, method);
const mockResponse = yield mockProcessor_1.default.process(mockData, {
endpoint,
method,
password: queryParams[queryParams_1.RQ_PASSWORD]
});
return mockResponse;
}
console.debug("[Debug] No Mock Selected");
const notFoundResponse = {
statusCode: 404,
headers: {},
body: "Mock Not Found",
};
return notFoundResponse;
return (0, mockServerResponseHelper_1.getServerMockResponse)(mockServerResponse_1.HttpStatusCode.NOT_FOUND);
});

@@ -45,0 +47,0 @@ MockServerHandler.cleanupEndpoint = (endpoint) => {

@@ -1,5 +0,5 @@

import { MockServerResponse, RequestMethod } from "../../types";
import { Mock, Response } from "../../types/mock";
import { MockServerResponse } from "../../types";
import { Mock, MockMetadata, Response } from "../../types/mock";
declare class MockProcessor {
static process: (mockData: Mock, endpoint: string, method: RequestMethod) => Promise<MockServerResponse>;
static process: (mockData: Mock, requestContextParams: Partial<MockMetadata>) => Promise<MockServerResponse>;
static renderMockServerResponse: (mockData: Mock) => Promise<MockServerResponse>;

@@ -6,0 +6,0 @@ static renderStatusCode: (responseTemplate: Response) => number;

@@ -16,2 +16,5 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const mockServerResponse_1 = require("../../enums/mockServerResponse");
const mockProcessor_1 = require("../utils/mockProcessor");
const mockServerResponseHelper_1 = require("../utils/mockServerResponseHelper");
const pathMatcher_1 = __importDefault(require("../utils/pathMatcher"));

@@ -21,3 +24,7 @@ class MockProcessor {

_a = MockProcessor;
MockProcessor.process = (mockData, endpoint, method) => __awaiter(void 0, void 0, void 0, function* () {
MockProcessor.process = (mockData, requestContextParams) => __awaiter(void 0, void 0, void 0, function* () {
const { endpoint, method, password } = requestContextParams;
if (!(0, mockProcessor_1.validatePassword)(mockData.password, password)) {
return (0, mockServerResponseHelper_1.getServerMockResponse)(mockServerResponse_1.HttpStatusCode.UNAUTHORIZED);
}
const urlParams = (0, pathMatcher_1.default)(mockData.endpoint, endpoint).params || {};

@@ -24,0 +31,0 @@ return _a.renderMockServerResponse(mockData);

import { Mock } from "../../types/mock";
export declare const dummyMock1: Mock;
export declare const dummyMock2: Mock;
export declare const dummyMock3: Mock;
export declare const getSelectorMap: () => any;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSelectorMap = exports.dummyMock2 = exports.dummyMock1 = void 0;
exports.getSelectorMap = exports.dummyMock3 = exports.dummyMock2 = exports.dummyMock1 = void 0;
const types_1 = require("../../types");

@@ -43,2 +43,22 @@ exports.dummyMock1 = {

};
exports.dummyMock3 = {
id: "3",
desc: "Mock 3 : Password protected",
method: types_1.RequestMethod.GET,
endpoint: "users3",
password: '1234',
responses: [
{
id: "1",
desc: "Mock 3 Response 1",
latency: 0,
statusCode: 200,
headers: {
"foo": "bar",
"content-type": "application/json",
},
body: "{\"Hello\":\"There\",\"mockId\":\"3\"}"
}
]
};
const getSelectorMap = () => {

@@ -54,4 +74,8 @@ let selectorMap = {};

};
selectorMap[exports.dummyMock3.id] = {
method: exports.dummyMock3.method,
endpoint: exports.dummyMock3.endpoint
};
return selectorMap;
};
exports.getSelectorMap = getSelectorMap;

@@ -17,2 +17,5 @@ "use strict";

}
else if (id === "3") {
return mock1_1.dummyMock3;
}
return null;

@@ -19,0 +22,0 @@ };

@@ -0,1 +1,2 @@

import { HttpStatusCode } from "../enums/mockServerResponse";
export declare enum RequestMethod {

@@ -15,3 +16,3 @@ GET = "GET",

body: string;
statusCode: number;
statusCode: HttpStatusCode;
headers: {

@@ -18,0 +19,0 @@ [key: string]: string;

@@ -14,2 +14,3 @@ import { RequestMethod } from ".";

updatedTs?: string;
password?: string;
}

@@ -16,0 +17,0 @@ export interface Response {

{
"name": "@requestly/mock-server",
"version": "0.1.4",
"version": "0.1.5",
"description": "- 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 - Templating - Faker js - Headers",

@@ -5,0 +5,0 @@ "main": "build/index.js",

@@ -1,24 +0,77 @@

## Requirements
- 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
- Templating
- Faker js
- Headers
# requestly-mock-server
## Features
- Drag and drop folders
- Collection of mocks (nested)
This Repo contains the core express server [@requestly/mock-server](https://www.npmjs.com/package/@requestly/mock-server) package which powers Requestly's Cloud Mock Server.
## Development
### Install Dependencies
``` sh
npm i
```
### Start Server
``` sh
npm start:dev
```
V0
- Minimal Implementation of current mock server
- Editing mocks allowed
## Usage with firebase-functions
### Install
``` sh
npm i @requestly/mock-server
```
### Setup
``` javascript
import * as functions from 'firebase-functions';
import { MockServer } from '@requestly/mock-server';
import firebaseConfigFetcher from '../firebaseConfigFetcher';
const startMockServer = () => {
const expressApp = new MockServer(3000, firebaseConfigFetcher, '/api/mockv2').app;
return functions.runWith({ minInstances: isProdEnv() ? 1 : 0 }).https.onRequest(expressApp);
};
export const handleMockRequest = startMockServer();
```
``` javascript
class FirebaseConfigFetcher implements IConfigFetcher {
getMockSelectorMap = (kwargs?: any) => {
/**
* Fetch and return mockSelectorMap from firestore
* {
* mockId: {
* route: "",
* method: "",
* }
* }
*/
};
getMock = (id: string, kwargs?: any) => {
/**
* Fetch mock details from firestore
*/
}
}
const firebaseConfigFetcher = new FirebaseConfigFetcher();
export default firebaseConfigFetcher;
```
## Requestly Cloud Mock Server Architechture
![image](https://github.com/requestly/requestly-mock-server/assets/16779465/277fbe21-45ad-45d2-ab65-64ea362ce17a)
**STEPS**
1. Request coming from GET `https://username.requestly.dev/users`
2. Firebase Function passes the request to @requestly/mock-server
3. @requestly/mock-server - MockSelector
a. Fetches all the available mocks using `IConfigFetcher.getMockSelectorMap()` (Firestore in case of Requestly)
b. Select mock if any endpoint+method matches the incoming request (GET /users)
c. Fetch Mock using `IConfigFetcher.getMock(mockId)` and pass it to MockProcessor
4. @requestly/mock-server - MockProcessor
a. Process Mock - Response Rendering
b. Return Response
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc