|
|
|
@ -346,4 +346,170 @@ describe("/queries", () => { |
|
|
|
expect(contents).toBe(null) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
describe("Current User Request Mapping", () => { |
|
|
|
|
|
|
|
async function previewGet(datasource, fields, params) { |
|
|
|
return config.previewQuery(request, config, datasource, fields, params) |
|
|
|
} |
|
|
|
|
|
|
|
async function previewPost(datasource, fields, params) { |
|
|
|
return config.previewQuery(request, config, datasource, fields, params, "create") |
|
|
|
} |
|
|
|
|
|
|
|
it("should parse global and query level header mappings", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
|
|
|
|
const datasource = await config.restDatasource({ |
|
|
|
defaultHeaders: { |
|
|
|
"test": "headerVal", |
|
|
|
"emailHdr": "{{[user].[email]}}" |
|
|
|
} |
|
|
|
}) |
|
|
|
const res = await previewGet(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "email={{[user].[email]}}", |
|
|
|
headers: { |
|
|
|
queryHdr : "{{[user].[firstName]}}", |
|
|
|
secondHdr : "1234" |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
expect(parsedRequest.opts.headers).toEqual({ |
|
|
|
"test": "headerVal", |
|
|
|
"emailHdr": userDetails.email, |
|
|
|
"queryHdr": userDetails.firstName, |
|
|
|
"secondHdr" : "1234" |
|
|
|
}) |
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?email=" + userDetails.email) |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user to query parameters", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
|
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewGet(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "test={{myEmail}}&testName={{myName}}&testParam={{testParam}}", |
|
|
|
}, { |
|
|
|
"myEmail" : "{{[user].[email]}}", |
|
|
|
"myName" : "{{[user].[firstName]}}", |
|
|
|
"testParam" : "1234" |
|
|
|
}) |
|
|
|
|
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?test=" + userDetails.email + |
|
|
|
"&testName=" + userDetails.firstName + "&testParam=1234") |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user the request body - plain text", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewPost(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "testParam={{testParam}}", |
|
|
|
requestBody: "This is plain text and this is my email: {{[user].[email]}}. This is a test param: {{testParam}}", |
|
|
|
bodyType: "text" |
|
|
|
}, { |
|
|
|
"testParam" : "1234" |
|
|
|
}) |
|
|
|
|
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
expect(parsedRequest.opts.body).toEqual(`This is plain text and this is my email: ${userDetails.email}. This is a test param: 1234`) |
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?testParam=1234") |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user the request body - json", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewPost(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "testParam={{testParam}}", |
|
|
|
requestBody: "{\"email\":\"{{[user].[email]}}\",\"queryCode\":{{testParam}},\"userRef\":\"{{userRef}}\"}", |
|
|
|
bodyType: "json" |
|
|
|
}, { |
|
|
|
"testParam" : "1234", |
|
|
|
"userRef" : "{{[user].[firstName]}}" |
|
|
|
}) |
|
|
|
|
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
const test = `{"email":"${userDetails.email}","queryCode":1234,"userRef":"${userDetails.firstName}"}` |
|
|
|
expect(parsedRequest.opts.body).toEqual(test) |
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?testParam=1234") |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user the request body - xml", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewPost(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "testParam={{testParam}}", |
|
|
|
requestBody: "<note> <email>{{[user].[email]}}</email> <code>{{testParam}}</code> " + |
|
|
|
"<ref>{{userId}}</ref> <somestring>testing</somestring> </note>", |
|
|
|
bodyType: "xml" |
|
|
|
}, { |
|
|
|
"testParam" : "1234", |
|
|
|
"userId" : "{{[user].[firstName]}}" |
|
|
|
}) |
|
|
|
|
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
const test = `<note> <email>${userDetails.email}</email> <code>1234</code> <ref>${userDetails.firstName}</ref> <somestring>testing</somestring> </note>` |
|
|
|
|
|
|
|
expect(parsedRequest.opts.body).toEqual(test) |
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?testParam=1234") |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user the request body - form-data", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewPost(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "testParam={{testParam}}", |
|
|
|
requestBody: "{\"email\":\"{{[user].[email]}}\",\"queryCode\":{{testParam}},\"userRef\":\"{{userRef}}\"}", |
|
|
|
bodyType: "form" |
|
|
|
}, { |
|
|
|
"testParam" : "1234", |
|
|
|
"userRef" : "{{[user].[firstName]}}" |
|
|
|
}) |
|
|
|
|
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
|
|
|
|
const emailData = parsedRequest.opts.body._streams[1] |
|
|
|
expect(emailData).toEqual(userDetails.email) |
|
|
|
|
|
|
|
const queryCodeData = parsedRequest.opts.body._streams[4] |
|
|
|
expect(queryCodeData).toEqual("1234") |
|
|
|
|
|
|
|
const userRef = parsedRequest.opts.body._streams[7] |
|
|
|
expect(userRef).toEqual(userDetails.firstName) |
|
|
|
|
|
|
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?testParam=1234") |
|
|
|
}) |
|
|
|
|
|
|
|
it("should bind the current user the request body - encoded", async () => { |
|
|
|
const userDetails = config.getUserDetails() |
|
|
|
const datasource = await config.restDatasource() |
|
|
|
|
|
|
|
const res = await previewPost(datasource, { |
|
|
|
path: "www.google.com", |
|
|
|
queryString: "testParam={{testParam}}", |
|
|
|
requestBody: "{\"email\":\"{{[user].[email]}}\",\"queryCode\":{{testParam}},\"userRef\":\"{{userRef}}\"}", |
|
|
|
bodyType: "encoded" |
|
|
|
}, { |
|
|
|
"testParam" : "1234", |
|
|
|
"userRef" : "{{[user].[firstName]}}" |
|
|
|
}) |
|
|
|
const parsedRequest = JSON.parse(res.body.extra.raw) |
|
|
|
|
|
|
|
expect(parsedRequest.opts.body.email).toEqual(userDetails.email) |
|
|
|
expect(parsedRequest.opts.body.queryCode).toEqual("1234") |
|
|
|
expect(parsedRequest.opts.body.userRef).toEqual(userDetails.firstName) |
|
|
|
}) |
|
|
|
|
|
|
|
}); |
|
|
|
}) |
|
|
|
|