Package org.jboss.resteasy.plugins.server.netty.cdi

Source Code of org.jboss.resteasy.plugins.server.netty.cdi.CdiNettyTest

package org.jboss.resteasy.plugins.server.netty.cdi;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.resteasy.cdi.CdiInjectorFactory;
import org.jboss.resteasy.cdi.ResteasyCdiExtension;
import org.jboss.resteasy.spi.ResteasyDeployment;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import javax.enterprise.inject.spi.CDI;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import java.util.Random;

/**
* Created by John.Ament on 2/23/14.
*/
@RunWith(Arquillian.class)
public class CdiNettyTest {

    private CdiNettyJaxrsServer server;
    private int port;
    @Deployment
    public static JavaArchive createArchive() {
        String beans = "<beans xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n" +
                                "       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
                                "       xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd\"\n" +
                                "       version=\"1.1\" bean-discovery-mode=\"all\">\n" +
                                "</beans>\n";
                return ShrinkWrap.create(JavaArchive.class, CdiNettyTest.class.getSimpleName() + ".jar")
                                .addPackage(CdiRequestDispatcher.class.getPackage())
                                .addClasses(EchoResource.class, DefaultExceptionMapper.class)
                                .addAsManifestResource(new StringAsset("org.jboss.resteasy.cdi.ResteasyCdiExtension"),
                                        "services/javax.enterprise.inject.spi.Extension")
                                .addAsManifestResource(new StringAsset(beans),"beans.xml");
    }

    @Before
    public void init() {
        this.port = (int)((new Random().nextDouble() * 4000) + 1000);
        ResteasyCdiExtension cdiExtension = CDI.current().select(ResteasyCdiExtension.class).get();
        CdiNettyJaxrsServer netty = new CdiNettyJaxrsServer();
        ResteasyDeployment rd = new ResteasyDeployment();
        rd.setActualResourceClasses(cdiExtension.getResources());
        rd.setInjectorFactoryClass(CdiInjectorFactory.class.getName());
        rd.getActualProviderClasses().addAll(cdiExtension.getProviders());
        netty.setDeployment(rd);
        netty.setPort(port);
        netty.setRootResourcePath("/api");
        netty.start();
        this.server = netty;
    }

    @After
    public void shutdown()
    {
        this.server.stop();
    }

    @Test
    public void testLoadSuccess() {
        String value = ClientBuilder.newClient().target("http://localhost:"+port)
                .path("/api/echo").queryParam("name","Bob").request().buildGet().invoke(String.class);
        Assert.assertEquals("Hello, Bob!", value);
    }

    @Test
    public void testLoadFailure() {
        Response response = ClientBuilder.newClient().target("http://localhost:"+port)
                .path("/api/echo").queryParam("name","null").request().buildGet().invoke();
        Assert.assertEquals(406, response.getStatus());
    }
}
TOP

Related Classes of org.jboss.resteasy.plugins.server.netty.cdi.CdiNettyTest

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.