Skip to content

Commit

Permalink
fix: Apply auth to public upload, not private (#2427)
Browse files Browse the repository at this point in the history
* fix: Apply auth to public upload, not private

* test: Update test cases
  • Loading branch information
DafyddLlyr authored Nov 15, 2023
1 parent 7cce5f9 commit 8e0df7f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 18 deletions.
33 changes: 17 additions & 16 deletions api.planx.uk/modules/file/file.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,23 +43,10 @@ describe("File upload", () => {

describe("Private", () => {
const ENDPOINT = "/file/private/upload";
const auth = authHeader({ role: "teamEditor" });

it("returns an error if authorization headers are not set", async () => {
await supertest(app)
.post("/flows/1/move/new-team")
.expect(401)
.then((res) => {
expect(res.body).toEqual({
error: "No authorization token was found",
});
});
});

it("should not upload without filename", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "")
.attach("file", Buffer.from("some data"), "some_file.txt")
.expect(400)
Expand All @@ -73,7 +60,6 @@ describe("File upload", () => {
it("should not upload without file", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "some filename")
.expect(500)
.then((res) => {
Expand All @@ -85,7 +71,6 @@ describe("File upload", () => {
it("should upload file", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "some_file.txt")
.attach("file", Buffer.from("some data"), "some_file.txt")
.then((res) => {
Expand All @@ -107,7 +92,6 @@ describe("File upload", () => {

await supertest(app)
.post("/file/private/upload")
.set(auth)
.field("filename", "some_file.txt")
.attach("file", Buffer.from("some data"), "some_file.txt")
.expect(500)
Expand All @@ -121,9 +105,23 @@ describe("File upload", () => {
describe("Public", () => {
const ENDPOINT = "/file/public/upload";

const auth = authHeader({ role: "teamEditor" });

it("returns an error if authorization headers are not set", async () => {
await supertest(app)
.post("/flows/1/move/new-team")
.expect(401)
.then((res) => {
expect(res.body).toEqual({
error: "No authorization token was found",
});
});
});

it("should not upload without filename", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "")
.attach("file", Buffer.from("some data"), "some_file.txt")
.expect(400)
Expand All @@ -137,6 +135,7 @@ describe("File upload", () => {
it("should not upload without file", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "some filename")
.expect(500)
.then((res) => {
Expand All @@ -148,6 +147,7 @@ describe("File upload", () => {
it("should upload file", async () => {
await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "some_file.txt")
.attach("file", Buffer.from("some data"), "some_file.txt")
.then((res) => {
Expand All @@ -169,6 +169,7 @@ describe("File upload", () => {

await supertest(app)
.post(ENDPOINT)
.set(auth)
.field("filename", "some_file.txt")
.attach("file", Buffer.from("some data"), "some_file.txt")
.expect(500)
Expand Down
2 changes: 1 addition & 1 deletion api.planx.uk/modules/file/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ const router = Router();
router.post(
"/public/upload",
multer().single("file"),
useTeamEditorAuth,
validate(uploadFileSchema),
publicUploadController,
);

router.post(
"/private/upload",
multer().single("file"),
useTeamEditorAuth,
validate(uploadFileSchema),
privateUploadController,
);
Expand Down
1 change: 0 additions & 1 deletion api.planx.uk/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,6 @@ app.use("/webhooks", webhookRoutes);
app.use("/analytics", analyticsRoutes);
app.use("/admin", adminRoutes);
app.use(ordnanceSurveyRoutes);
app.use(fileRoutes);
app.use("/file", fileRoutes);

app.use("/gis", router);
Expand Down

0 comments on commit 8e0df7f

Please sign in to comment.