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);