Package org.togglz.spring.test.proxy

Source Code of org.togglz.spring.test.proxy.FeatureProxyTest

package org.togglz.spring.test.proxy;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.io.IOException;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import org.togglz.core.context.FeatureContext;
import org.togglz.core.repository.FeatureState;
import org.togglz.test.Deployments;
import org.togglz.test.Packaging;

@RunWith(Arquillian.class)
public class FeatureProxyTest {

    @Deployment
    public static WebArchive createDeployment() {
        return Deployments.getBasicWebArchive()
            .addAsLibrary(Deployments.getTogglzSpringArchive())
            .addAsLibraries(Packaging.mavenDependencies()
                .artifact("org.springframework:spring-web:3.0.7.RELEASE")
                .asFiles())
            .addAsWebInfResource("applicationContext.xml")
            .addAsWebInfResource("applicationContext-proxy.xml")
            .setWebXML("spring-web.xml")
            .addClass(ProxyFeatures.class)
            .addClass(FeatureProxyConfiguration.class)
            .addClass(SomeService.class)
            .addClass(SomeServiceActive.class)
            .addClass(SomeServiceInactive.class);
    }

    @Test
    public void testProxyWithManuallySetProxyType() throws IOException {

        // obtain the service
        SomeService someService = (SomeService) getSpringBean("someServiceManuallySetProxyType");
        assertNotNull(someService);

        // disable the feature flag
        FeatureContext.getFeatureManager().setFeatureState(new FeatureState(ProxyFeatures.SERVICE_TOGGLE, false));

        // first the inactive Service is invoked
        assertEquals("I'm SomeServiceInactive", someService.whoAreYou());

        // enable the feature flag
        FeatureContext.getFeatureManager().setFeatureState(new FeatureState(ProxyFeatures.SERVICE_TOGGLE, true));

        // calls are now delegated to the other service implementation
        assertEquals("I'm SomeServiceActive", someService.whoAreYou());

    }

    @Test
    public void testProxyWithAutoDetectedProxyType() throws IOException {

        // obtain the service
        SomeService someService = (SomeService) getSpringBean("someServiceAutoDetectProxyType");
        assertNotNull(someService);

        // disable the feature flag
        FeatureContext.getFeatureManager().setFeatureState(new FeatureState(ProxyFeatures.SERVICE_TOGGLE, false));

        // first the inactive Service is invoked
        assertEquals("I'm SomeServiceInactive", someService.whoAreYou());

        // enable the feature flag
        FeatureContext.getFeatureManager().setFeatureState(new FeatureState(ProxyFeatures.SERVICE_TOGGLE, true));

        // calls are now delegated to the other service implementation
        assertEquals("I'm SomeServiceActive", someService.whoAreYou());

    }

    private Object getSpringBean(String name) {
        WebApplicationContext applicationContext = ContextLoader.getCurrentWebApplicationContext();
        return applicationContext.getBean(name);
    }

}
TOP

Related Classes of org.togglz.spring.test.proxy.FeatureProxyTest

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.