From 50b9ae480337252bca311f45faa2e39797c1f050 Mon Sep 17 00:00:00 2001 From: Drew Date: Thu, 26 May 2016 16:15:54 -0700 Subject: [PATCH] Fix #1919 (#1926) --- spec/schemas.spec.js | 17 +++++++++++++++++ src/Routers/SchemasRouter.js | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/spec/schemas.spec.js b/spec/schemas.spec.js index 568dd2b8..2d1a6ea3 100644 --- a/spec/schemas.spec.js +++ b/spec/schemas.spec.js @@ -1556,4 +1556,21 @@ describe('schemas', () => { done(); }) }) + + it('gives correct response when deleting a schema with CLPs (regression test #1919)', done => { + new Parse.Object('MyClass').save({ data: 'foo'}) + .then(obj => obj.destroy()) + .then(() => setPermissionsOnClass('MyClass', { find: {}, get: {} }, true)) + .then(() => { + request.del({ + url: 'http://localhost:8378/1/schemas/MyClass', + headers: masterKeyHeaders, + json: true, + }, (error, response, body) => { + expect(response.statusCode).toEqual(200); + expect(response.body).toEqual({}); + done(); + }); + }); + }); }); diff --git a/src/Routers/SchemasRouter.js b/src/Routers/SchemasRouter.js index 75891fd6..da8307c7 100644 --- a/src/Routers/SchemasRouter.js +++ b/src/Routers/SchemasRouter.js @@ -67,7 +67,7 @@ function modifySchema(req) { // A helper function that removes all join tables for a schema. Returns a promise. var removeJoinTables = (database, mongoSchema) => { return Promise.all(Object.keys(mongoSchema) - .filter(field => mongoSchema[field].startsWith('relation<')) + .filter(field => field !== '_metadata' && mongoSchema[field].startsWith('relation<')) .map(field => { let collectionName = `_Join:${field}:${mongoSchema._id}`; return database.adapter.deleteOneSchema(collectionName);