request-pre
Version:
process format data before request send
365 lines (356 loc) • 7.98 kB
text/typescript
import mixin from '../../src/util/mixin';
const caseBase = function (caseInfo): void {
test(`mixin(
${JSON.stringify(caseInfo.input.serviceConfig)},
${JSON.stringify(caseInfo.input.apiSchema)},
${JSON.stringify(caseInfo.input.requestObj)}
)`, (): void => {
expect(mixin(caseInfo.input.serviceConfig, caseInfo.input.apiSchema, caseInfo.input.requestObj)).toStrictEqual(caseInfo.output);
});
};
caseBase({
input: {
serviceConfig: {},
apiSchema: {
url: {},
},
requestObj: {},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
config: {
other: 'anyway',
},
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'GET',
query: {
a: 1,
},
},
mock: {
listSuccess: {
data: [],
success: true,
},
},
},
requestObj: {
path: {
id: 1,
},
query: {
b: 2,
},
config: {
mock: 'listSuccess',
},
},
},
output: {
url: {
path: '/domain/a/b/1',
method: 'GET',
query: {
a: 1,
b: 2,
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
mock: 'listSuccess',
other: 'anyway',
},
mock: {
listSuccess: {
data: [],
success: true,
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'GET',
query: {
a: 1,
},
},
},
requestObj: {
path: {
id: 1,
},
},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b/1',
method: 'GET',
query: {
a: 1,
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'POST',
query: {
a: 1,
},
},
},
requestObj: {
path: {
id: 1,
},
},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b/1',
method: 'POST',
query: {
a: 1,
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'POST',
query: {
a: 1,
},
},
},
requestObj: {
path: {
id: 1,
},
body: {
username: 'test',
},
},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b/1',
method: 'POST',
query: {
a: 1,
},
body: {
username: 'test',
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'POST',
query: {
a: 1,
},
},
},
requestObj: {
path: {
id: 1,
},
body: [1,2,3],
},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b/1',
method: 'POST',
query: {
a: 1,
},
body: [1,2,3],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b/{id}',
method: 'POST',
query: {
a: 1,
},
},
},
requestObj: {
path: {
id: 1,
},
body: 233,
},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b/1',
method: 'POST',
query: {
a: 1,
},
body: 233,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});
caseBase({
input: {
serviceConfig: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
prefix: '/domain',
},
apiSchema: {
url: {
path: '/a/b',
method: 'POST',
query: {
a: 1,
},
headers: {
'x-xx': 1,
},
},
},
requestObj: {},
},
output: {
config: {
"priority": {
preprocess: 100,
postprocess: 100,
},
},
url: {
path: '/domain/a/b',
method: 'POST',
query: {
a: 1,
},
headers: {
'x-xx': 1,
'Content-Type': 'application/x-www-form-urlencoded'
},
},
},
});