package org.jboss.aerogear.unifiedpush.rest.registry.applications;
import org.jboss.resteasy.specimpl.UriInfoImpl;
import org.jboss.resteasy.spi.Link;
import org.jboss.resteasy.spi.LinkHeader;
import org.junit.Test;
import javax.ws.rs.core.PathSegment;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
/**
*/
public class InstallationManagementEndpointTest {
private final InstallationManagementEndpoint endpoint = new InstallationManagementEndpoint();
@Test
public void shouldGenerateHeaderLinksFirstPage() throws URISyntaxException {
//given
final UriInfoImpl uriInfo = getUriInfo();
//when
final LinkHeader linkHeader = endpoint.getLinkHeader(0, 3, uriInfo);
//then
assertThat(findLinkByRel(linkHeader, "prev")).isNull();
final Link next = findLinkByRel(linkHeader, "next");
assertThat(next).isNotNull();
assertThat(next.getHref()).isEqualTo("/?page=1");
assertThat(findLinkByRel(linkHeader, "first")).isNull();
}
@Test
public void shouldGenerateHeaderLinksNormalPage() throws URISyntaxException {
//given
final UriInfoImpl uriInfo = getUriInfo();
//when
final LinkHeader linkHeader = endpoint.getLinkHeader(2, 3, uriInfo);
final Link prev = findLinkByRel(linkHeader, "prev");
assertThat(prev).isNotNull();
assertThat(prev.getHref()).isEqualTo("/?page=1");
final Link next = findLinkByRel(linkHeader, "next");
assertThat(next).isNotNull();
assertThat(next.getHref()).isEqualTo("/?page=3");
}
@Test
public void shouldGenerateHeaderLinksLastPage() throws URISyntaxException {
//given
final UriInfoImpl uriInfo = getUriInfo();
//when
final LinkHeader linkHeader = endpoint.getLinkHeader(3, 3, uriInfo);
final Link prev = findLinkByRel(linkHeader, "prev");
assertThat(prev).isNotNull();
assertThat(prev.getHref()).isEqualTo("/?page=2");
final Link first = findLinkByRel(linkHeader, "first");
assertThat(first).isNotNull();
assertThat(first.getHref()).isEqualTo("/?page=0");
assertThat(findLinkByRel(linkHeader, "last")).isNull();
}
private Link findLinkByRel(LinkHeader linkHeader, String rel) {
return linkHeader.getLinks().stream()
.filter(link -> link.getRelationship().equals(rel))
.findFirst()
.orElse(null);
}
private UriInfoImpl getUriInfo() throws URISyntaxException {
return new UriInfoImpl(new URI("/"), new URI("http://localhost"), "/", "", Collections.<PathSegment>emptyList());
}
}