Package org.jboss.resteasy.links.test

Source Code of org.jboss.resteasy.links.test.TestFacadeLinks

package org.jboss.resteasy.links.test;

import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.jboss.resteasy.client.ProxyFactory;
import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.jboss.resteasy.core.Dispatcher;
import org.jboss.resteasy.links.RESTServiceDiscovery;
import org.jboss.resteasy.links.RESTServiceDiscovery.AtomLink;
import org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory;
import org.jboss.resteasy.test.EmbeddedContainer;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

import static org.jboss.resteasy.test.TestPortProvider.generateBaseUrl;

@RunWith(Parameterized.class)
public class TestFacadeLinks
{

  private static Dispatcher dispatcher;

  @BeforeClass
  public static void beforeClass() throws Exception
  {
    dispatcher = EmbeddedContainer.start().getDispatcher();
  }

  @AfterClass
  public static void afterClass() throws Exception
  {
    EmbeddedContainer.stop();
  }

  @Parameters
  public static List<Class<?>[]> getParameters(){
    return Arrays.asList(new Class<?>[]{BookStore.class}, new Class<?>[]{BookStoreMinimal.class});
  }

  private Class<?> resourceType;
  private String url;
  private BookStoreService client;
  private HttpClient httpClient;
 
  public TestFacadeLinks(Class<?> resourceType){
    this.resourceType = resourceType;
  }
 
  @Before
  public void before(){
    POJOResourceFactory noDefaults = new POJOResourceFactory(resourceType);
    dispatcher.getRegistry().addResourceFactory(noDefaults);
    httpClient = new DefaultHttpClient();
    ApacheHttpClient4Executor executor = new ApacheHttpClient4Executor(httpClient);
    url = generateBaseUrl();
    client = ProxyFactory.create(BookStoreService.class, url,
          executor);
  }

  @After
  public void after(){
    // TJWS does not support chunk encodings well so I need to kill kept
    // alive connections
    httpClient.getConnectionManager().closeIdleConnections(0, TimeUnit.MILLISECONDS);
    dispatcher.getRegistry().removeRegistrations(resourceType);
  }
 
  @Test
  public void testLinks() throws Exception
  {
    ScrollableCollection comments = client.getScrollableCommentsXML("foo");
    checkCommentsLinks(url, comments);
    comments = client.getScrollableCommentsJSON("foo");
    checkCommentsLinks(url, comments);
  }

  private void checkCommentsLinks(String url, ScrollableCollection comments) {
    Assert.assertNotNull(comments);
    RESTServiceDiscovery links = comments.getRest();
    Assert.assertNotNull(links);
    Assert.assertEquals(3, links.size());
    // list
    AtomLink atomLink = links.getLinkForRel("list");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comments", atomLink.getHref());
    // add
    atomLink = links.getLinkForRel("add");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comments", atomLink.getHref());
    // comment collection
    atomLink = links.getLinkForRel("collection");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comment-collection", atomLink.getHref());
  }

  private void checkCommentLinks(String url, Comment comment) {
    Assert.assertNotNull(comment);
    Assert.assertEquals(0, comment.getId());
    RESTServiceDiscovery links = comment.getRest();
    Assert.assertNotNull(links);
    Assert.assertEquals(6, links.size());
    // self
    AtomLink atomLink = links.getLinkForRel("self");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comment/0", atomLink.getHref());
    // update
    atomLink = links.getLinkForRel("update");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comment/0", atomLink.getHref());
    // remove
    atomLink = links.getLinkForRel("remove");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comment/0", atomLink.getHref());
    // list
    atomLink = links.getLinkForRel("list");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comments", atomLink.getHref());
    // add
    atomLink = links.getLinkForRel("add");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comments", atomLink.getHref());
    // collection
    atomLink = links.getLinkForRel("collection");
    Assert.assertNotNull(atomLink);
    Assert.assertEquals(url+"/book/foo/comment-collection", atomLink.getHref());
  }
}
TOP

Related Classes of org.jboss.resteasy.links.test.TestFacadeLinks

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.