/** * Copyright 2005-2016 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version * 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package io.fabric8.cdi.weld.external; import io.fabric8.cdi.MockConfigurer; import io.fabric8.cdi.deltaspike.DeltaspikeTestBase; import io.fabric8.cdi.weld.NestingFactoryBean; import io.fabric8.cdi.weld.SimpleBean; import io.fabric8.cdi.weld.StringToURL; import io.fabric8.cdi.weld.URLToConnection; import io.fabric8.cdi.weld.UrlBean; import io.fabric8.kubernetes.api.model.Endpoints; import io.fabric8.kubernetes.api.model.EndpointsBuilder; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.server.mock.OpenShiftMockServer; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.resolver.api.maven.Maven; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import javax.enterprise.inject.New; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.CDI; import javax.inject.Inject; import java.io.File; import java.net.URL; import java.util.Set; @RunWith(Arquillian.class) public class ExtensionExternalTest { private static final OpenShiftMockServer MOCK = new OpenShiftMockServer(); @Deployment public static WebArchive createDeployment() { return ShrinkWrap.create(WebArchive.class) .addClasses(StringToURL.class, URLToConnection.class, NestingFactoryBean.class, SimpleBean.class, UrlBean.class) .addClasses(DeltaspikeTestBase.getDeltaSpikeHolders()) .addAsWebInfResource("META-INF/beans.xml") .addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml") .resolve( "org.apache.deltaspike.core:deltaspike-core-impl" ) .withTransitivity().as(File.class)); } @BeforeClass public static void setUpClass() throws Exception { System.setProperty("CONFIG1_TEST", "value1"); System.setProperty("CONFIG2_TEST", "value2"); System.setProperty("SERVICE1_SOURCE_PROTOCOL", "http"); System.setProperty("SERVICE1_TARGET_PROTOCOL", "https"); MockConfigurer.configure(); } @Inject private KubernetesClient client; @Inject @New private SimpleBean simpleBean; @Inject @New private UrlBean urlBean; @Inject @New private StringToURL stringToURL; @Inject @New private NestingFactoryBean nestingFactoryBean; @Test public void testClientInjection() { Assert.assertNotNull(client); } @Test public void testServiceInjection() { Assert.assertNotNull(simpleBean); Assert.assertNotNull(simpleBean.getOptionalUrl()); Assert.assertNotNull(simpleBean.getUrl()); } @Test public void testProtocolOveride() { Assert.assertTrue(simpleBean.getTestUrl().startsWith("tst")); } @Test public void testWithPath() { Assert.assertTrue(simpleBean.getTestUrlWithPath().endsWith("/somePath")); } @Test public void testConfigInjection() { Assert.assertNotNull(simpleBean); Assert.assertEquals("value1", simpleBean.getConfig1().getProperty()); Assert.assertEquals("value2", simpleBean.getConfig2().getProperty()); } @Test public void testFactory() { Assert.assertNotNull(urlBean); Assert.assertNotNull(urlBean.getService3()); Assert.assertNotNull(urlBean.getService1()); Assert.assertTrue(urlBean.getService1().toString().startsWith("http")); Assert.assertTrue(urlBean.getService3().toString().startsWith("http")); } @Test public void testAlias() { Set<Bean<?>> beans = CDI.current().getBeanManager().getBeans("cool-id"); Assert.assertNotNull(beans); Assert.assertEquals(1, beans.size()); Assert.assertEquals(URL.class, beans.iterator().next().getBeanClass()); } @Test public void testMultiport() { Assert.assertNotNull(simpleBean); Assert.assertTrue(simpleBean.getMultiportDefault().endsWith("8081")); Assert.assertTrue(simpleBean.getMultiport2().endsWith("8082")); } @Test public void testNestingFactories() { Assert.assertNotNull(nestingFactoryBean); Assert.assertNotNull(nestingFactoryBean.getService1()); Assert.assertNotNull(nestingFactoryBean.getService2()); } @Test public void testProtocol() { Assert.assertNotNull(simpleBean); Assert.assertTrue(simpleBean.getUrl().startsWith("tcp://")); Assert.assertTrue(simpleBean.getTestUrl().startsWith("tst://")); } }