Skip to content

Commit

Permalink
Allow deleting pre-releases
Browse files Browse the repository at this point in the history
  • Loading branch information
garethbowen committed Dec 3, 2019
1 parent 0df970e commit e47ed8d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
14 changes: 7 additions & 7 deletions ddocs/builds/validate_doc_update.js
Expand Up @@ -9,14 +9,14 @@ function(newDoc, oldDoc, userCtx) {
throw({ forbidden: 'Document _id format invalid' });
}

if (newDoc._deleted && version.branch) {
// You are allowed to delete branches, don't worry worry about validating anything
return;
}

if (newDoc._deleted) {
// and you're not allowed to delete anything else!
throw({ forbidden: 'You are not allowed to delete releases or pre-releases'});
if (version.branch || version.pre) {
// You are allowed to delete branches, alphas, and betas.
// Don't worry worry about validating anything.
return;
}
// You're not allowed to delete anything else (eg: final releases)
throw({ forbidden: 'You are not allowed to delete releases' });
}

var meta = newDoc.build_info;
Expand Down
17 changes: 17 additions & 0 deletions test/int/ddoc.js
Expand Up @@ -221,6 +221,23 @@ describe('Design document', () => {
.then(result => BuildsDb.put(withBuildInfo({_id: 'medic:medic:2.0.0-beta.1', value: 2, _rev: result.rev})))
.should.be.rejectedWith('You are not allowed to overwrite existing releases or pre-releases'));

it('Blocks deleting releases', () =>
BuildsDb.put(withBuildInfo({ _id: 'medic:medic:2.1.0', value: 1 }))
.then(result => BuildsDb.put(withBuildInfo({ _id: 'medic:medic:2.1.0', _rev: result.rev, _deleted: true })))
.should.be.rejectedWith('You are not allowed to delete releases'));

it('Allows deleting pre-preleases', () =>
BuildsDb.put(withBuildInfo({_id: 'medic:medic:2.1.0-beta.1', value: 1 }))
.then(result => BuildsDb.put(withBuildInfo({_id: 'medic:medic:2.1.0-beta.1', _rev: result.rev, _deleted: true })))
.then(() => BuildsDb.get('medic:medic:2.1.0-beta.1'))
.should.be.rejectedWith('deleted'));

it('Allows deleting branches', () =>
BuildsDb.put(withBuildInfo({_id: 'medic:medic:1111-some-branch', value: 1 }))
.then(result => BuildsDb.put(withBuildInfo({_id: 'medic:medic:1111-some-branch', _rev: result.rev, _deleted: true })))
.then(() => BuildsDb.get('medic:medic:1111-some-branch'))
.should.be.rejectedWith('deleted'));

it('Blocks incorrect document ids', () =>
BuildsDb.put({_id: 'not-a-valid-version-identifier'})
.should.be.rejectedWith('Document _id format invalid'));
Expand Down

0 comments on commit e47ed8d

Please sign in to comment.