mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
Add more links (unconditional)
This commit is contained in:
@@ -6,10 +6,13 @@ import org.mapstruct.Mapper;
|
|||||||
import org.mapstruct.MappingTarget;
|
import org.mapstruct.MappingTarget;
|
||||||
import sonia.scm.user.User;
|
import sonia.scm.user.User;
|
||||||
|
|
||||||
|
import javax.ws.rs.core.UriBuilder;
|
||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static javax.ws.rs.core.Link.fromUri;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public abstract class User2UserDtoMapper {
|
public abstract class User2UserDtoMapper {
|
||||||
|
|
||||||
@@ -23,7 +26,14 @@ public abstract class User2UserDtoMapper {
|
|||||||
@AfterMapping
|
@AfterMapping
|
||||||
void appendLinks(@MappingTarget UserDto target, @Context UriInfo uriInfo) {
|
void appendLinks(@MappingTarget UserDto target, @Context UriInfo uriInfo) {
|
||||||
Map<String, Link> links = new LinkedHashMap<>();
|
Map<String, Link> links = new LinkedHashMap<>();
|
||||||
links.put("self", new Link(uriInfo.getAbsolutePath()));
|
links.put("self", new Link(uriInfo.getBaseUri().resolve(fromUri(UriBuilder.fromResource(UserNewResource.class)
|
||||||
|
.path(UserNewResource.class, "get").build(target.getName())).build().getUri())));
|
||||||
|
links.put("delete", new Link(uriInfo.getBaseUri().resolve(fromUri(UriBuilder.fromResource(UserNewResource.class)
|
||||||
|
.path(UserNewResource.class, "delete").build(target.getName())).build().getUri())));
|
||||||
|
links.put("update", new Link(uriInfo.getBaseUri().resolve(fromUri(UriBuilder.fromResource(UserNewResource.class)
|
||||||
|
.path(UserNewResource.class, "update").build(target.getName())).build().getUri())));
|
||||||
|
links.put("create", new Link(uriInfo.getBaseUri().resolve(fromUri(UriBuilder.fromResource(UserNewResource.class)
|
||||||
|
.path(UserNewResource.class, "create").build()).build().getUri())));
|
||||||
target.setLinks(links);
|
target.setLinks(links);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package sonia.scm.api.rest.resources;
|
package sonia.scm.api.rest.resources;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
import sonia.scm.user.User;
|
import sonia.scm.user.User;
|
||||||
@@ -17,30 +18,45 @@ public class User2UserDtoMapperTest {
|
|||||||
private final User2UserDtoMapper mapper = Mappers.getMapper(User2UserDtoMapper.class);
|
private final User2UserDtoMapper mapper = Mappers.getMapper(User2UserDtoMapper.class);
|
||||||
private final UriInfo uriInfo = mock(UriInfo.class);
|
private final UriInfo uriInfo = mock(UriInfo.class);
|
||||||
|
|
||||||
|
private URI baseUri;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void init() throws URISyntaxException {
|
||||||
|
baseUri = new URI("http://example.com/base/");
|
||||||
|
when(uriInfo.getBaseUri()).thenReturn(baseUri);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldMapLinks() throws URISyntaxException {
|
public void shouldMapLinks() throws URISyntaxException {
|
||||||
URI link = new URI("link");
|
|
||||||
when(uriInfo.getAbsolutePath()).thenReturn(link);
|
|
||||||
|
|
||||||
User user = new User();
|
User user = new User();
|
||||||
|
user.setName("abc");
|
||||||
|
|
||||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||||
assertEquals("expected map with self links", link, userDto.getLinks().get("self").getHref());
|
|
||||||
|
assertEquals("expected map with self baseUri", baseUri.resolve("usersnew/abc"), userDto.getLinks().get("self").getHref());
|
||||||
|
assertEquals("expected map with delete baseUri", baseUri.resolve("usersnew/abc"), userDto.getLinks().get("delete").getHref());
|
||||||
|
assertEquals("expected map with update baseUri", baseUri.resolve("usersnew/abc"), userDto.getLinks().get("update").getHref());
|
||||||
|
assertEquals("expected map with create baseUri", baseUri.resolve("usersnew"), userDto.getLinks().get("create").getHref());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldMapFields() {
|
public void shouldMapFields() {
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.setName("abc");
|
user.setName("abc");
|
||||||
|
|
||||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||||
assertEquals("abc" , userDto.getName());
|
|
||||||
|
assertEquals("abc", userDto.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldRemovePassword() {
|
public void shouldRemovePassword() {
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.setPassword("password");
|
user.setPassword("password");
|
||||||
|
user.setName("abc");
|
||||||
|
|
||||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||||
assertEquals(UserResource.DUMMY_PASSWORT , userDto.getPassword());
|
|
||||||
|
assertEquals(UserResource.DUMMY_PASSWORT, userDto.getPassword());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user