ImageService updateOwner, setAlt, and setCaption implementations.

This commit is contained in:
Jesse Brault 2024-07-23 08:50:21 -05:00
parent a264b10cdb
commit 3e4db86457
2 changed files with 67 additions and 3 deletions

View File

@ -71,6 +71,18 @@ public class S3ImageServiceTests {
);
}
private Image createHal9000(User owner) throws ImageException, IOException {
try (final InputStream hal9000 = getHal9000()) {
return this.imageService.create(
owner,
"HAL9000.svg",
hal9000,
"image/svg+xml",
27881L
);
}
}
@Test
public void smokeScreen() {}
@ -168,6 +180,46 @@ public class S3ImageServiceTests {
}
}
@Test
@DirtiesContext
public void updateOwner() {
try (final InputStream hal9000 = getHal9000()) {
final User oldOwner = this.createTestUser("oldImageOwner");
final User newOwner = this.createTestUser("newImageOwner");
Image image = this.createHal9000(oldOwner, hal9000);
assertThat(image.getOwner(), isUser(oldOwner));
image = this.imageService.updateOwner(image, oldOwner, newOwner);
assertThat(image.getOwner(), isUser(newOwner));
} catch (ImageException | IOException e) {
throw new RuntimeException(e);
}
}
@Test
@DirtiesContext
public void setAlt() throws ImageException, IOException {
final User owner = this.createTestUser("imageOwner");
Image image = this.createHal9000(owner);
image = this.imageService.setAlt(image, owner, "Example alt.");
assertThat(image.getAlt(), is("Example alt."));
}
@Test
@DirtiesContext
public void setCaption() throws ImageException, IOException {
final User owner = this.createTestUser("imageOwner");
Image image = this.createHal9000(owner);
image = this.imageService.setCaption(image, owner, "Example caption.");
assertThat(image.getCaption(), is("Example caption."));
}
@Test
@DirtiesContext
public void setPublicToTrue() throws ImageException, IOException {
final User owner = this.createTestUser("imageOwner");
Image image = this.createHal9000(owner);
image = this.imageService.setPublic(image, owner, true);
assertThat(image.isPublic(), is(true));
}
}

View File

@ -94,18 +94,27 @@ public class S3ImageService implements ImageService {
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #oldOwner)")
public Image updateOwner(Image image, User oldOwner, User newOwner) {
return null;
final ImageEntity imageEntity = (ImageEntity) image;
imageEntity.setOwner((UserEntity) newOwner);
return this.imageRepository.save(imageEntity);
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #owner)")
public Image setAlt(Image image, User owner, String alt) {
return null;
final ImageEntity imageEntity = (ImageEntity) image;
imageEntity.setAlt(alt);
return this.imageRepository.save(imageEntity);
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #owner)")
public Image setCaption(Image image, User owner, String caption) {
return null;
final ImageEntity imageEntity = (ImageEntity) image;
imageEntity.setCaption(caption);
return this.imageRepository.save(imageEntity);
}
@Override
@ -117,6 +126,7 @@ public class S3ImageService implements ImageService {
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #owner)")
public Image addViewer(Image image, User owner, User viewer) {
final ImageEntity withViewers = this.imageRepository.getByIdWithViewers(image.getId());
withViewers.getViewers().add((UserEntity) viewer);
@ -124,6 +134,7 @@ public class S3ImageService implements ImageService {
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #owner)")
public Image removeViewer(Image image, User owner, User viewer) {
final ImageEntity withViewers = this.imageRepository.getByIdWithViewers(image.getId());
withViewers.getViewers().remove((UserEntity) viewer);
@ -131,6 +142,7 @@ public class S3ImageService implements ImageService {
}
@Override
@PreAuthorize("@imageSecurity.isOwner(#image, #owner)")
public Image clearViewers(Image image, User owner) {
final ImageEntity withViewers = this.imageRepository.getByIdWithViewers(image.getId());
withViewers.getViewers().clear();