// subject must have create bundle version permission
private void deleteBundleVersion(Subject subject, Bundle b1) throws Exception {
assertNotNull(b1);
BundleVersion bv1 = createBundleVersion(subject, b1.getName() + "-1", null, b1);
assertNotNull(bv1);
assertEquals("1.0", bv1.getVersion());
BundleVersion bv2 = createBundleVersion(subject, b1.getName() + "-2", null, b1);
assertNotNull(bv2);
assertEquals("1.1", bv2.getVersion());
// let's add a bundle file so we can ensure our deletion will also delete the file too
bundleManager.addBundleFileViaByteArray(subject, bv2.getId(), "testDeleteBundleVersion", "1.0",
new Architecture("noarch"), "content".getBytes());
BundleFileCriteria bfCriteria = new BundleFileCriteria();
bfCriteria.addFilterBundleVersionId(bv2.getId());
bfCriteria.fetchPackageVersion(true);
PageList<BundleFile> files = bundleManager.findBundleFilesByCriteria(overlord, bfCriteria);
assert files.size() == 1 : files;
assert files.get(0).getPackageVersion().getGeneralPackage().getName().equals("testDeleteBundleVersion") : files;
BundleVersionCriteria bvCriteria = new BundleVersionCriteria();
BundleCriteria bCriteria = new BundleCriteria();
// delete the first one - this deletes the BV but the bundle should remain intact
bundleManager.deleteBundleVersion(subject, bv2.getId(), true);
bvCriteria.addFilterId(bv2.getId());
PageList<BundleVersion> bvResults = bundleManager.findBundleVersionsByCriteria(subject, bvCriteria);
assert bvResults.size() == 0;
bCriteria.addFilterId(b1.getId());
PageList<Bundle> bResults = bundleManager.findBundlesByCriteria(subject, bCriteria);
assert bResults.size() == 1 : "Should not have deleted bundle yet, 1 version still exists";