Adding a test case for the removal of automation logs from app sync, as well as adding to the publish/sync filter a check to not carry over automation logs.
This commit is contained in:
parent
643a4f02aa
commit
3eff4d85d0
|
@ -57,6 +57,9 @@ class Replication {
|
||||||
appReplicateOpts() {
|
appReplicateOpts() {
|
||||||
return {
|
return {
|
||||||
filter: (doc: any) => {
|
filter: (doc: any) => {
|
||||||
|
if (doc._id && doc._id.startsWith(DocumentType.AUTOMATION_LOG)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
return doc._id !== DocumentType.APP_METADATA
|
return doc._id !== DocumentType.APP_METADATA
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ jest.mock("../../../utilities/redis", () => ({
|
||||||
import { clearAllApps, checkBuilderEndpoint } from "./utilities/TestFunctions"
|
import { clearAllApps, checkBuilderEndpoint } from "./utilities/TestFunctions"
|
||||||
import * as setup from "./utilities"
|
import * as setup from "./utilities"
|
||||||
import { AppStatus } from "../../../db/utils"
|
import { AppStatus } from "../../../db/utils"
|
||||||
import { events, utils } from "@budibase/backend-core"
|
import { events, utils, context } from "@budibase/backend-core"
|
||||||
import env from "../../../environment"
|
import env from "../../../environment"
|
||||||
|
|
||||||
jest.setTimeout(15000)
|
jest.setTimeout(15000)
|
||||||
|
@ -324,4 +324,39 @@ describe("/applications", () => {
|
||||||
expect(events.app.unpublished).toBeCalledTimes(1)
|
expect(events.app.unpublished).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("app sync", () => {
|
||||||
|
it("should not sync automation logs", async () => {
|
||||||
|
// setup the apps
|
||||||
|
await config.createApp("testing-auto-logs")
|
||||||
|
const automation = await config.createAutomation()
|
||||||
|
await config.publish()
|
||||||
|
await context.doInAppContext(config.getProdAppId(), () => {
|
||||||
|
return config.createAutomationLog(automation)
|
||||||
|
})
|
||||||
|
|
||||||
|
// do the sync
|
||||||
|
const appId = config.getAppId()
|
||||||
|
await request
|
||||||
|
.post(`/api/applications/${appId}/sync`)
|
||||||
|
.set(config.defaultHeaders())
|
||||||
|
.expect("Content-Type", /json/)
|
||||||
|
.expect(200)
|
||||||
|
|
||||||
|
// does exist in prod
|
||||||
|
await context.doInAppContext(config.getProdAppId(), async () => {
|
||||||
|
const logs = await config.getAutomationLogs()
|
||||||
|
expect(logs.data.length).toBe(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
// delete prod app so we revert to dev log search
|
||||||
|
await config.unpublish()
|
||||||
|
|
||||||
|
// doesn't exist in dev
|
||||||
|
await context.doInAppContext(config.getAppId(), async () => {
|
||||||
|
const logs = await config.getAutomationLogs()
|
||||||
|
expect(logs.data.length).toBe(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -21,6 +21,7 @@ import {
|
||||||
basicScreen,
|
basicScreen,
|
||||||
basicLayout,
|
basicLayout,
|
||||||
basicWebhook,
|
basicWebhook,
|
||||||
|
basicAutomationLog,
|
||||||
} from "./structures"
|
} from "./structures"
|
||||||
import {
|
import {
|
||||||
constants,
|
constants,
|
||||||
|
@ -48,6 +49,7 @@ import {
|
||||||
Table,
|
Table,
|
||||||
SearchFilters,
|
SearchFilters,
|
||||||
UserRoles,
|
UserRoles,
|
||||||
|
Automation,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
import { BUILTIN_ROLE_IDS } from "@budibase/backend-core/src/security/roles"
|
import { BUILTIN_ROLE_IDS } from "@budibase/backend-core/src/security/roles"
|
||||||
|
|
||||||
|
@ -720,6 +722,24 @@ class TestConfiguration {
|
||||||
return { datasource, query: basedOnQuery }
|
return { datasource, query: basedOnQuery }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AUTOMATION LOG
|
||||||
|
|
||||||
|
async createAutomationLog(automation: Automation) {
|
||||||
|
return await context.doInAppContext(this.getProdAppId(), async () => {
|
||||||
|
return await pro.sdk.automations.logs.storeLog(
|
||||||
|
automation,
|
||||||
|
basicAutomationLog(automation._id!)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async getAutomationLogs() {
|
||||||
|
const now = new Date()
|
||||||
|
return await pro.sdk.automations.logs.logSearch({
|
||||||
|
startDate: new Date(now.getTime() - 100000).toISOString(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// QUERY
|
// QUERY
|
||||||
|
|
||||||
async previewQuery(
|
async previewQuery(
|
||||||
|
|
|
@ -9,6 +9,8 @@ import {
|
||||||
import {
|
import {
|
||||||
Automation,
|
Automation,
|
||||||
AutomationActionStepId,
|
AutomationActionStepId,
|
||||||
|
AutomationResults,
|
||||||
|
AutomationStatus,
|
||||||
AutomationStep,
|
AutomationStep,
|
||||||
AutomationStepType,
|
AutomationStepType,
|
||||||
AutomationTrigger,
|
AutomationTrigger,
|
||||||
|
@ -241,6 +243,21 @@ export function collectAutomation(tableId?: string): Automation {
|
||||||
return automation as Automation
|
return automation as Automation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function basicAutomationLog(automationId: string): AutomationResults {
|
||||||
|
return {
|
||||||
|
automationId,
|
||||||
|
status: AutomationStatus.SUCCESS,
|
||||||
|
trigger: "trigger",
|
||||||
|
steps: [
|
||||||
|
{
|
||||||
|
stepId: AutomationActionStepId.SERVER_LOG,
|
||||||
|
inputs: {},
|
||||||
|
outputs: {},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function basicRow(tableId: string) {
|
export function basicRow(tableId: string) {
|
||||||
return {
|
return {
|
||||||
name: "Test Contact",
|
name: "Test Contact",
|
||||||
|
|
Loading…
Reference in New Issue