const statusCodes = require("../utilities/statusCodes"); const { readFile, writeFile, remove } = require("fs-extra"); module.exports = (app) => { it("should serve unauthenticated index.html as default", async () => { const response = await app.get("/testApp") .expect(statusCodes.OK); const expectedIndexHtml = await readFile("appPackages/testApp/public/unauthenticated/index.html", "utf8"); expect(response.text).toBe(expectedIndexHtml); }); it("should serve specified files when unauthenticated", async () => { const response = await app.get("/testApp/app.js") .expect(statusCodes.OK); const expectedFile = await readFile("appPackages/testApp/public/unauthenticated/app.js", "utf8"); expect(response.text).toBe(expectedFile); }); it("should serve main index.html as default when authenticated", async () => { const response = await app.get("/testApp") .set("cookie", app.credentials.testAppUser1.cookie) .expect(statusCodes.OK); const expectedIndexHtml = await readFile("appPackages/testApp/public/main/index.html", "utf8"); expect(response.text).toBe(expectedIndexHtml); }); it("should serve specified files when authenticated", async () => { const response = await app.get("/testApp/budibase-client.js") .set("cookie", app.credentials.testAppUser1.cookie) .expect(statusCodes.OK); const expectedFile = await readFile("appPackages/testApp/public/main/budibase-client.js", "utf8"); expect(response.text).toBe(expectedFile); }); it("should serve file from shared when authenticated", async () => { const response = await app.get("/testApp/_shared/shared_file.txt") .set("cookie", app.credentials.testAppUser1.cookie) .expect(statusCodes.OK); const expectedFile = await readFile("appPackages/testApp/public/_shared/shared_file.txt", "utf8"); expect(response.text).toBe(expectedFile); }); it("should serve file from shared when not authenticated", async () => { const response = await app.get("/testApp/_shared/shared_file.txt") .expect(statusCodes.OK); const expectedFile = await readFile("appPackages/testApp/public/_shared/shared_file.txt", "utf8"); expect(response.text).toBe(expectedFile); }); it("should serve file from latest when instance is versionless", async () => { try { await writeFile("appPackages/testApp/public/_shared/new_file_for_versionless_test.txt", "thats right", {encoding:"utf8"}); } catch(err) { // empty } try { await app.get("/testApp/_shared/new_file_for_versionless_test.txt") .set("cookie", app.credentials.user1_versionlessInstance.cookie) .expect(statusCodes.OK); } finally { try { await remove("appPackages/testApp/public/_shared/new_file_for_versionless_test.txt"); } catch(err) { // empty } } }); it("should not serve file from latest when instance has version", async () => { try { await writeFile("appPackages/testApp/public/_shared/new_file_for_versionless_test.txt", "thats right", {encoding:"utf8"}); } catch(err) { // empty } try { await app.get("/testApp/_shared/new_file_for_versionless_test.txt") .set("cookie", app.credentials.testAppUser1.cookie) .expect(statusCodes.NOT_FOUND); } finally { try { await remove("appPackages/testApp/public/_shared/new_file_for_versionless_test.txt"); } catch(err) { // empty } } }); }