Adding basic test cases for static and dynamic variables (backend).
This commit is contained in:
parent
b5a52cb790
commit
44a8d36c91
|
@ -57,6 +57,12 @@ module FetchMock {
|
||||||
],
|
],
|
||||||
bookmark: "test",
|
bookmark: "test",
|
||||||
})
|
})
|
||||||
|
} else if (url.includes("google.com")) {
|
||||||
|
return json({
|
||||||
|
url,
|
||||||
|
opts,
|
||||||
|
value: "<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"en-GB\"></html>",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return fetch(url, opts)
|
return fetch(url, opts)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// Mock out postgres for this
|
// Mock out postgres for this
|
||||||
jest.mock("pg")
|
jest.mock("pg")
|
||||||
|
jest.mock("node-fetch")
|
||||||
|
|
||||||
// Mock isProdAppID to we can later mock the implementation and pretend we are
|
// Mock isProdAppID to we can later mock the implementation and pretend we are
|
||||||
// using prod app IDs
|
// using prod app IDs
|
||||||
|
@ -226,4 +227,76 @@ describe("/queries", () => {
|
||||||
.expect(400)
|
.expect(400)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("test variables", () => {
|
||||||
|
async function restDatasource(cfg) {
|
||||||
|
return await config.createDatasource({
|
||||||
|
datasource: {
|
||||||
|
...basicDatasource().datasource,
|
||||||
|
source: "REST",
|
||||||
|
config: cfg || {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should work with static variables", async () => {
|
||||||
|
const datasource = await restDatasource({
|
||||||
|
staticVariables: {
|
||||||
|
variable: "google",
|
||||||
|
variable2: "1",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const res = await request
|
||||||
|
.post(`/api/queries/preview`)
|
||||||
|
.send({
|
||||||
|
datasourceId: datasource._id,
|
||||||
|
parameters: {},
|
||||||
|
fields: {
|
||||||
|
path: "www.{{ variable }}.com",
|
||||||
|
queryString: "test={{ variable2 }}",
|
||||||
|
},
|
||||||
|
queryVerb: "read",
|
||||||
|
})
|
||||||
|
.set(config.defaultHeaders())
|
||||||
|
.expect("Content-Type", /json/)
|
||||||
|
.expect(200)
|
||||||
|
// these responses come from the mock
|
||||||
|
expect(res.body.schemaFields).toEqual(["url", "opts", "value"])
|
||||||
|
expect(res.body.rows[0].url).toEqual("http://www.google.com?test=1")
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should work with dynamic variables", async () => {
|
||||||
|
const datasource = await restDatasource()
|
||||||
|
const basedOnQuery = await config.createQuery({
|
||||||
|
...basicQuery(datasource._id),
|
||||||
|
fields: {
|
||||||
|
path: "www.google.com",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
await config.updateDatasource({
|
||||||
|
...datasource,
|
||||||
|
config: {
|
||||||
|
dynamicVariables: [
|
||||||
|
{ queryId: basedOnQuery._id, name: "variable3", value: "{{ data.0.[value] }}" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const res = await request
|
||||||
|
.post(`/api/queries/preview`)
|
||||||
|
.send({
|
||||||
|
datasourceId: datasource._id,
|
||||||
|
parameters: {},
|
||||||
|
fields: {
|
||||||
|
path: "www.google.com",
|
||||||
|
queryString: "test={{ variable3 }}",
|
||||||
|
},
|
||||||
|
queryVerb: "read",
|
||||||
|
})
|
||||||
|
.set(config.defaultHeaders())
|
||||||
|
.expect("Content-Type", /json/)
|
||||||
|
.expect(200)
|
||||||
|
expect(res.body.schemaFields).toEqual(["url", "opts", "value"])
|
||||||
|
expect(res.body.rows[0].url).toContain("doctype html")
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -240,6 +240,16 @@ export interface RestConfig {
|
||||||
[key: string]: any
|
[key: string]: any
|
||||||
}
|
}
|
||||||
authConfigs: AuthConfig[]
|
authConfigs: AuthConfig[]
|
||||||
|
staticVariables: {
|
||||||
|
[key: string]: string
|
||||||
|
}
|
||||||
|
dynamicVariables: [
|
||||||
|
{
|
||||||
|
name: string
|
||||||
|
queryId: string
|
||||||
|
value: string
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Query {
|
export interface Query {
|
||||||
|
|
|
@ -316,6 +316,16 @@ class TestConfiguration {
|
||||||
return this.datasource
|
return this.datasource
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateDatasource(datasource) {
|
||||||
|
const response = await this._req(
|
||||||
|
datasource,
|
||||||
|
{ datasourceId: datasource._id },
|
||||||
|
controllers.datasource.update
|
||||||
|
)
|
||||||
|
this.datasource = response.datasource
|
||||||
|
return this.datasource
|
||||||
|
}
|
||||||
|
|
||||||
async createQuery(config = null) {
|
async createQuery(config = null) {
|
||||||
if (!this.datasource && !config) {
|
if (!this.datasource && !config) {
|
||||||
throw "No data source created for query."
|
throw "No data source created for query."
|
||||||
|
|
Loading…
Reference in New Issue