Skip to content

Commit

Permalink
fix: fixed the broken create and import of mocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Raymond Ottun committed Sep 30, 2021
1 parent 26568de commit b83f6ba
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 19 deletions.
14 changes: 3 additions & 11 deletions ui/src/components/mocks/Import.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import { ImportOutlined } from '@ant-design/icons';
import { Button, Drawer } from 'antd';
import { useState } from 'react';
import { Create } from './Create';
import { Record, Mock } from '../../../../src/engine';
import { Record } from '../../../../src/engine';
import { useServerState } from '../Provider';
import { convertRecordToMock } from '../../utils';

export const MockImport = ({ selections = [] }: any) => {
const disabled = selections.length === 0;
Expand Down Expand Up @@ -36,18 +37,9 @@ export const MockImport = ({ selections = [] }: any) => {

const startImport = () => {
const mocks: Array<any> = selections.map((key: string) => {
// TODO: fix later
// @ts-ignore: ignore for now
const record: Record = records.find((rec) => rec.key === key);
const cleanRequestHeaders = cleanHeaders(record.request.headers || {});
const newMock: Mock = {
request: Object.assign({}, record.request, { headers: cleanRequestHeaders }),
response: record.response,
};

delete newMock.request.time;
delete newMock.request.protocol;
return newMock;
return convertRecordToMock(record);
});

setToImport(mocks);
Expand Down
2 changes: 2 additions & 0 deletions ui/src/components/records/RecordRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,5 @@ export const RecordRow = ({ record }: { record: Record }) => {
</div>
);
};

RecordRow.displayName = 'RecordRow';
14 changes: 6 additions & 8 deletions ui/src/components/records/Records.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { MockImport } from '../mocks/Import';
import { useServerState } from '../Provider';
import { useEditMocks } from '../mocks/Provider';
import ViewMock from '../ViewMock';
import { convertRecordToMock } from '../../utils';

const columns = [
{
Expand Down Expand Up @@ -77,19 +78,14 @@ const cleanupRequest = (req) => {

const ExpandedRow = ({ record }) => {
const edit = useEditMocks();
const { request, response, proxyRequest } = record;
const newRequest = cleanupRequest(Object.assign({}, request));
const { proxyRequest } = record;
const mock = convertRecordToMock(record);

return (
<Space direction="vertical" style={{ width: '100%' }}>
<Row justify="space-between">
{proxyRequest && (
<Button
type="dashed"
size="small"
onClick={() => edit.create({ request: newRequest, response })}
icon={<PlusCircleFilled />}
>
<Button type="dashed" size="small" onClick={() => edit.create(mock)} icon={<PlusCircleFilled />}>
Create Mock
</Button>
)}
Expand Down Expand Up @@ -134,3 +130,5 @@ export const Records = () => {
</Space>
);
};

Records.displayName = 'Records';
38 changes: 38 additions & 0 deletions ui/src/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { Mock, Record } from '../../src/types';

export const convertRecordToMock = (record: Record): Mock => {
const USELESS_HEADERS = [
'x-forwarded-host',
'x-forwarded-proto',
'x-forwarded-port',
'x-forwarded-for',
'connection',
'user-agent',
'remoteAddress',
'content-length',
'httpVersion',
];

const cleanHeaders = (headers: any) => {
const newHeader: any = {};
Object.entries(headers).forEach(([key, value]: [string, any]) => {
if (!USELESS_HEADERS.includes(key)) {
newHeader[key] = value;
}
});
return newHeader;
};

const requestHeaders = cleanHeaders(record.request.headers || {});
const responseHeaders = cleanHeaders(record.response.headers || {});
const mock: Mock = {
request: Object.assign({}, record.request, { headers: requestHeaders }),
response: Object.assign({}, record.response, { headers: responseHeaders }),
limit: 'unlimited',
delay: 0,
};

delete mock.request.protocol;
delete mock.request.time;
return mock;
};

0 comments on commit b83f6ba

Please sign in to comment.