Skip to content

Commit 3cf5836

Browse files
committed
fix
1 parent ed0baa8 commit 3cf5836

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

spec/ParseFile.spec.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,35 @@ describe('Parse.File testing', () => {
654654
});
655655
});
656656

657+
describe('getting files', () => {
658+
it('can get invalid file', async () => {
659+
const getFile = async () => {
660+
try {
661+
await request({ url: 'http://localhost:8378/1/files/invalid-id/invalid-file.txt' });
662+
} catch (e) {
663+
throw new Parse.Error(e.data.code, e.data.error);
664+
}
665+
};
666+
await expectAsync(getFile()).toBeRejectedWith(
667+
new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, 'Invalid appId.')
668+
);
669+
const { status, data } = await request({ url: 'http://localhost:8378/1/health' });
670+
expect(status).toEqual(200);
671+
expect(data).toEqual({ status: 'ok' });
672+
});
673+
674+
it('can get invalid metadata', async () => {
675+
const metadata = await request({
676+
url: `http://localhost:8378/1/files/invalid-id/metadata/invalid-file.txt`,
677+
});
678+
expect(metadata.status).toBe(200);
679+
expect(metadata.data).toEqual({});
680+
const { status, data } = await request({ url: 'http://localhost:8378/1/health' });
681+
expect(status).toEqual(200);
682+
expect(data).toEqual({ status: 'ok' });
683+
});
684+
});
685+
657686
xdescribe('Gridstore Range tests', () => {
658687
it('supports range requests', done => {
659688
const headers = {

src/Routers/FilesRouter.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ export class FilesRouter {
6666

6767
getHandler(req, res) {
6868
const config = Config.get(req.params.appId);
69+
if (!config) {
70+
res.status(403);
71+
const err = new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, 'Invalid application ID.');
72+
res.json({ code: err.code, error: err.message });
73+
return;
74+
}
6975
const filesController = config.filesController;
7076
const filename = req.params.filename;
7177
const contentType = mime.getType(filename);
@@ -250,10 +256,10 @@ export class FilesRouter {
250256
}
251257

252258
async metadataHandler(req, res) {
253-
const config = Config.get(req.params.appId);
254-
const { filesController } = config;
255-
const { filename } = req.params;
256259
try {
260+
const config = Config.get(req.params.appId);
261+
const { filesController } = config;
262+
const { filename } = req.params;
257263
const data = await filesController.getMetadata(filename);
258264
res.status(200);
259265
res.json(data);

0 commit comments

Comments
 (0)