summary refs log tree commit diff
path: root/cdn
diff options
context:
space:
mode:
authorxnacly <matteogropp@protonmail.com>2021-08-29 18:05:46 +0200
committerxnacly <matteogropp@protonmail.com>2021-08-29 18:05:46 +0200
commit6ceb710df97da772b5f570f78bbd6b7ae455721c (patch)
tree99aa0fcca1fe6fa4b89be0acf0691759cb2d0e35 /cdn
parentfixed missing imports and programming issues [cdn] (diff)
downloadserver-6ceb710df97da772b5f570f78bbd6b7ae455721c.tar.xz
added /external unit tests [cdn]
Diffstat (limited to 'cdn')
-rw-r--r--cdn/tests/cdn_endpoints.test.js (renamed from cdn/tests/server.test.js)58
1 files changed, 57 insertions, 1 deletions
diff --git a/cdn/tests/server.test.js b/cdn/tests/cdn_endpoints.test.js
index 6f06c2b6..a133d0dd 100644
--- a/cdn/tests/server.test.js
+++ b/cdn/tests/cdn_endpoints.test.js
@@ -3,6 +3,9 @@ const path = require("path");
 const fse = require("fs-extra");
 dotenv.config();
 
+// TODO: write unittest to check if FileStorage.ts is working
+// TODO: write unitest to check if env vars are defined
+
 if (!process.env.STORAGE_PROVIDER) process.env.STORAGE_PROVIDER = "file";
 // TODO:nodejs path.join trailing slash windows compatible
 if (process.env.STORAGE_PROVIDER === "file") {
@@ -15,7 +18,6 @@ if (process.env.STORAGE_PROVIDER === "file") {
 	}
 	fse.ensureDirSync(process.env.STORAGE_LOCATION);
 }
-
 const { CDNServer } = require("../dist/Server");
 const { Config } = require("@fosscord/util");
 const supertest = require("supertest");
@@ -153,3 +155,57 @@ describe("/avatars", () => {
 		});
 	});
 });
+
+describe("/external", () => {
+	describe("POST", () => {
+		describe("without signature specified", () => {
+			test("route should respond with 400", async () => {
+				const response = await request.post("/external");
+				expect(response.statusCode).toBe(400);
+			});
+		});
+		describe("with signature specified, without file specified", () => {
+			test("route should respond with 400", async () => {
+				const response = await request
+					.post("/external")
+					.set({ signature: Config.get().security.requestSignature });
+				expect(response.statusCode).toBe(400);
+			});
+		});
+		describe("with signature specified, with file specified ", () => {
+			test("route should respond with Content-type: application/json, 200 and res.body.url", async () => {
+				const response = await request
+					.post("/external")
+					.set({ signature: Config.get().security.requestSignature })
+					.send({ url: "https://i.ytimg.com/vi_webp/TiXzhQr5AUc/mqdefault.webp" });
+				expect(response.statusCode).toBe(200);
+				expect(response.headers["content-type"]).toEqual(expect.stringContaining("json"));
+				expect(response.body.id).toBeDefined();
+			});
+		});
+		describe("with signature specified, with falsy url specified ", () => {
+			test("route should respond with 400", async () => {
+				const response = await request
+					.post("/external")
+					.set({ signature: Config.get().security.requestSignature })
+					.send({
+						url: "notavalidurl.123",
+					});
+				expect(response.statusCode).toBe(400);
+			});
+		});
+	});
+	describe("GET", () => {
+		describe("getting uploaded image by url returned by POST /avatars", () => {
+			test("route should respond with 200", async () => {
+				let response = await request
+					.post("/external")
+					.set({ signature: Config.get().security.requestSignature })
+					.send({ url: "https://i.ytimg.com/vi_webp/TiXzhQr5AUc/mqdefault.webp" });
+				request.get(`external/${response.body.id}`).then((x) => {
+					expect(x.statusCode).toBe(200);
+				});
+			});
+		});
+	});
+});