@Test(expectedExceptions = ConcurrentTaskException.class) public void testDeletingAnUploadingImage() throws Throwable { TaskEntity task = imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); StepEntity step = task.getSteps().get(0); ImageEntity image = (ImageEntity) step.getTransientResourceEntities().get(0); imageBackend.prepareImageDelete(image.getId()); }
@Test public void testUploadingImageWithDuplicatedName() throws NameTakenException, ExternalException { assertThat(imageBackend.getAll().isEmpty(), is(true)); imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); flushSession(); assertThat(imageBackend.getAll().size(), is(2)); }
@Test(dataProvider = "ImageFileNames") public void testPrepareImageUploadImageFileNames(String imageFileName) throws ExternalException { TaskEntity task = imageBackend.prepareImageUpload(inputStream, imageFileName, ImageReplicationType.ON_DEMAND); assertThat(task.getSteps().size(), is(1)); StepEntity step = task.getSteps().get(0); assertThat(step.getTransientResourceEntities().size(), is(1)); assertThat(step.getOperation(), is(Operation.UPLOAD_IMAGE)); ImageEntity image = (ImageEntity) step.getTransientResourceEntities().get(0); assertThat(image.getState(), is(ImageState.CREATING)); assertThat(image.getName(), is(imageName)); }
@Test public void testPrepareImageUploadOnDemand() throws ExternalException { TaskEntity task = imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); assertThat(task.getSteps().size(), is(1)); StepEntity step = task.getSteps().get(0); assertThat(step.getTransientResourceEntities().size(), is(1)); assertThat(step.getOperation(), is(Operation.UPLOAD_IMAGE)); ImageEntity image = (ImageEntity) step.getTransientResourceEntities().get(0); assertThat(image.getName(), is("image-name")); assertThat(image.getState(), is(ImageState.CREATING)); assertThat(image.getReplicationType(), is(ImageReplicationType.ON_DEMAND)); assertThat( (InputStream) step.getTransientResource(ImageUploadStepCmd.INPUT_STREAM), is(inputStream)); }
@Test public void testTombstone() throws Throwable { TaskEntity task = imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); StepEntity step = task.getSteps().get(0); ImageEntity image = (ImageEntity) step.getTransientResourceEntities().get(0); assertThat(image.getState(), is(ImageState.CREATING)); image.setState(ImageState.READY); flushSession(); TenantEntity tenant = new TenantEntity(); tenant.setName("t1"); tenantDao.create(tenant); ProjectEntity project = new ProjectEntity(); project.setTenantId(tenant.getId()); project.setName("staging"); projectDao.create(project); VmEntity vm = new VmEntity(); vm.setName("vm-1"); vm.setProjectId(project.getId()); vm.setImageId(image.getId()); vmDao.create(vm); flushSession(); imageBackend.tombstone(image); assertThat(image.getState(), is(ImageState.PENDING_DELETE)); vm = vmDao.findById(vm.getId()).get(); vmDao.delete(vm); flushSession(); imageBackend.tombstone(image); try { imageBackend.findById(image.getId()); fail("Image should be deleted in database"); } catch (ImageNotFoundException e) { } }
@Test( expectedExceptions = ImageUploadException.class, expectedExceptionsMessageRegExp = "Image file name cannot be blank.") public void testPrepareImageUploadBlankFileName() throws Throwable { imageBackend.prepareImageUpload(inputStream, "", ImageReplicationType.ON_DEMAND); }