/**
* 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.nonamespace;
import io.fabric8.cdi.Fabric8Extension;
import io.fabric8.cdi.MockConfigurer;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.utils.Strings;
import org.hamcrest.CoreMatchers;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.internal.matchers.ThrowableMessageMatcher;
import org.junit.rules.ExpectedException;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
public class NoNamespaceTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@BeforeClass
public static void setUpClass() {
MockConfigurer.configure();
System.clearProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY);
}
@Test
public void testServiceInjection() {
KubernetesClient client = new DefaultKubernetesClient();
String namespace = client.getNamespace();
//If namespace not null or empty then don't fail if the result is unexpected.
Assume.assumeTrue(Strings.isNullOrBlank(namespace));
expectedException.expect(ThrowableMessageMatcher.hasMessage(CoreMatchers.equalTo("No kubernetes service could be found for name: notfound in namespace: null")));
createInstance(MyBean.class);
}
void createInstance(Class type) {
WeldContainer weld = new Weld()
.disableDiscovery()
.extensions(new Fabric8Extension())
.beanClasses(MyBean.class)
.initialize();
CreationalContext ctx = weld.getBeanManager().createCreationalContext(null);
for (Bean bean : weld.getBeanManager().getBeans(type)) {
weld.getBeanManager().getReference(bean, type, ctx);
}
}
}