From 49e103e8ef31362fe7b21cbd359c4a35d2644a1c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 21 Oct 2022 18:52:39 +0100 Subject: [PATCH] Fixing test case. --- .../src/api/routes/tests/backup.spec.js | 2 +- .../server/src/sdk/app/backups/exports.ts | 10 +++- .../internal-api/TestConfiguration/screens.ts | 38 +++++++------- .../config/internal-api/fixtures/screens.ts | 50 +++++++++---------- .../internal-api/screens/screens.spec.ts | 33 ++++++++---- 5 files changed, 75 insertions(+), 58 deletions(-) diff --git a/packages/server/src/api/routes/tests/backup.spec.js b/packages/server/src/api/routes/tests/backup.spec.js index 7f92a4f3d1..7863129c75 100644 --- a/packages/server/src/api/routes/tests/backup.spec.js +++ b/packages/server/src/api/routes/tests/backup.spec.js @@ -21,7 +21,7 @@ describe("/backups", () => { .set(config.defaultHeaders()) .expect(200) expect(res.text).toBeDefined() - expect(res.text.includes(`"db_name":"${config.getAppId()}"`)).toEqual(true) + expect(res.headers["content-type"]).toEqual("application/gzip") expect(events.app.exported.mock.calls.length).toBe(1) }) diff --git a/packages/server/src/sdk/app/backups/exports.ts b/packages/server/src/sdk/app/backups/exports.ts index 26277fcd66..8de51ed1e6 100644 --- a/packages/server/src/sdk/app/backups/exports.ts +++ b/packages/server/src/sdk/app/backups/exports.ts @@ -1,7 +1,7 @@ import { db as dbCore } from "@budibase/backend-core" import { budibaseTempDir } from "../../../utilities/budibaseDir" import { retrieveDirectory } from "../../../utilities/fileSystem/utilities" -import { streamFile } from "../../../utilities/fileSystem" +import { streamFile, createTempFolder } from "../../../utilities/fileSystem" import { ObjectStoreBuckets } from "../../../constants" import { LINK_USER_METADATA_PREFIX, @@ -11,6 +11,7 @@ import { import { DB_EXPORT_FILE, GLOBAL_DB_EXPORT_FILE } from "./constants" import fs from "fs" import { join } from "path" +import env from "../../../environment" const uuid = require("uuid/v4") const tar = require("tar") const MemoryStream = require("memorystream") @@ -85,7 +86,12 @@ export async function exportApp(appId: string, config?: ExportOpts) { const prodAppId = dbCore.getProdAppID(appId) const appPath = `${prodAppId}/` // export bucket contents - const tmpPath = await retrieveDirectory(ObjectStoreBuckets.APPS, appPath) + let tmpPath + if (!env.isTest()) { + tmpPath = await retrieveDirectory(ObjectStoreBuckets.APPS, appPath) + } else { + tmpPath = createTempFolder(uuid()) + } const downloadedPath = join(tmpPath, appPath) if (fs.existsSync(downloadedPath)) { const allFiles = fs.readdirSync(downloadedPath) diff --git a/qa-core/src/config/internal-api/TestConfiguration/screens.ts b/qa-core/src/config/internal-api/TestConfiguration/screens.ts index 30c688022a..7814ffdfbc 100644 --- a/qa-core/src/config/internal-api/TestConfiguration/screens.ts +++ b/qa-core/src/config/internal-api/TestConfiguration/screens.ts @@ -1,23 +1,23 @@ -import { Screen } from "@budibase/types" +import { Screen } from "@budibase/types" import { Response } from "node-fetch" import InternalAPIClient from "./InternalAPIClient" - - export default class ScreenApi { - api: InternalAPIClient - - constructor(apiClient: InternalAPIClient) { - this.api = apiClient - } - - async create(body: any): Promise<[Response, Screen]> { - const response = await this.api.post(`/screens`, { body }) - const json = await response.json() - return [response, json] - } - async delete(screenId: string, rev: string): Promise<[Response, Screen]> { - const response = await this.api.del(`/screens/${screenId}/${rev}`) - const json = await response.json() - return [response, json] - } +export default class ScreenApi { + api: InternalAPIClient + + constructor(apiClient: InternalAPIClient) { + this.api = apiClient } + + async create(body: any): Promise<[Response, Screen]> { + const response = await this.api.post(`/screens`, { body }) + const json = await response.json() + return [response, json] + } + + async delete(screenId: string, rev: string): Promise<[Response, Screen]> { + const response = await this.api.del(`/screens/${screenId}/${rev}`) + const json = await response.json() + return [response, json] + } +} diff --git a/qa-core/src/config/internal-api/fixtures/screens.ts b/qa-core/src/config/internal-api/fixtures/screens.ts index 1ebc1eb5c8..044a35ba83 100644 --- a/qa-core/src/config/internal-api/fixtures/screens.ts +++ b/qa-core/src/config/internal-api/fixtures/screens.ts @@ -3,32 +3,32 @@ import generator from "../../generator" const randomId = generator.guid() const generateScreen = (roleId: string): any => ({ - showNavigation: true, - width: "Large", - name: randomId, - template: "createFromScratch", - props: { - _id: randomId, - _component: - "@budibase/standard-components/container", - _styles: { - normal: {}, - hover: {}, - active: {}, - selected: {} - }, - _children: [], - _instanceName: "New Screen", - direction: "column", - hAlign: "stretch", - vAlign: "top", - size: "grow", - gap: "M" - }, routing: { - route: "/test", - roleId: roleId, - homeScreen: false + showNavigation: true, + width: "Large", + name: randomId, + template: "createFromScratch", + props: { + _id: randomId, + _component: "@budibase/standard-components/container", + _styles: { + normal: {}, + hover: {}, + active: {}, + selected: {}, }, + _children: [], + _instanceName: "New Screen", + direction: "column", + hAlign: "stretch", + vAlign: "top", + size: "grow", + gap: "M", + }, + routing: { + route: "/test", + roleId: roleId, + homeScreen: false, + }, }) export default generateScreen diff --git a/qa-core/src/tests/internal-api/screens/screens.spec.ts b/qa-core/src/tests/internal-api/screens/screens.spec.ts index 68e1022cb4..1e0d647c3c 100644 --- a/qa-core/src/tests/internal-api/screens/screens.spec.ts +++ b/qa-core/src/tests/internal-api/screens/screens.spec.ts @@ -2,10 +2,9 @@ import TestConfiguration from "../../../config/internal-api/TestConfiguration" import { App } from "@budibase/types" import InternalAPIClient from "../../../config/internal-api/TestConfiguration/InternalAPIClient" import generateApp from "../../../config/internal-api/fixtures/applications" -import { Screen } from "@budibase/types" +import { Screen } from "@budibase/types" import generateScreen from "../../../config/internal-api/fixtures/screens" - describe("Internal API - /screens endpoints", () => { const api = new InternalAPIClient() const config = new TestConfiguration(api) @@ -21,13 +20,17 @@ describe("Internal API - /screens endpoints", () => { it("POST - Create a screen with each role type", async () => { // Create app - const [appResponse, app] = await appConfig.applications.create(generateApp()) - + const [appResponse, app] = await appConfig.applications.create( + generateApp() + ) + // Create Screen const roleArray = ["BASIC", "POWER", "ADMIN", "PUBLIC"] appConfig.applications.api.appId = app.appId for (let role in roleArray) { - const [response, screen] = await config.screen.create(generateScreen(roleArray[role])) + const [response, screen] = await config.screen.create( + generateScreen(roleArray[role]) + ) expect(response).toHaveStatusCode(200) expect(screen.routing.roleId).toEqual(roleArray[role]) } @@ -35,11 +38,15 @@ describe("Internal API - /screens endpoints", () => { it("GET - Fetch screens", async () => { // Create app - const [appResponse, app] = await appConfig.applications.create(generateApp()) - + const [appResponse, app] = await appConfig.applications.create( + generateApp() + ) + // Create Screen appConfig.applications.api.appId = app.appId - const [response, screen] = await config.screen.create(generateScreen("BASIC")) + const [response, screen] = await config.screen.create( + generateScreen("BASIC") + ) // Check screen exists const [routesResponse, routes] = await appConfig.applications.getRoutes() @@ -49,11 +56,15 @@ describe("Internal API - /screens endpoints", () => { it("DELETE - Delete a screen", async () => { // Create app - const [appResponse, app] = await appConfig.applications.create(generateApp()) - + const [appResponse, app] = await appConfig.applications.create( + generateApp() + ) + // Create Screen appConfig.applications.api.appId = app.appId - const [screenResponse, screen] = await config.screen.create(generateScreen("BASIC")) + const [screenResponse, screen] = await config.screen.create( + generateScreen("BASIC") + ) // Delete Screen const [response] = await config.screen.delete(screen._id!, screen._rev!)