You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/05/30 09:04:59 UTC

[10/12] camel git commit: CAMEL-11356: Camel-Kubernetes: refactoring tests by using Kubernetes-server-mock and Openshift-server-mock - Service Accounts tests

CAMEL-11356: Camel-Kubernetes: refactoring tests by using Kubernetes-server-mock and Openshift-server-mock - Service Accounts tests


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e4c6edb3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e4c6edb3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e4c6edb3

Branch: refs/heads/master
Commit: e4c6edb308c62b798ffa7d74df706353acf86be1
Parents: ffdfcad
Author: Andrea Cosentino <an...@gmail.com>
Authored: Tue May 30 09:46:53 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Tue May 30 11:01:11 2017 +0200

----------------------------------------------------------------------
 .../KubernetesServiceAccountsProducer.java      |   9 +-
 ...edKubernetesServiceAccountsProducerTest.java |   2 +
 .../KubernetesServiceAccountsProducerTest.java  | 115 ++++++-------------
 3 files changed, 40 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e4c6edb3/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/service_accounts/KubernetesServiceAccountsProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/service_accounts/KubernetesServiceAccountsProducer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/service_accounts/KubernetesServiceAccountsProducer.java
index acecca8..aedbc4d 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/service_accounts/KubernetesServiceAccountsProducer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/service_accounts/KubernetesServiceAccountsProducer.java
@@ -21,6 +21,9 @@ import java.util.Map;
 import io.fabric8.kubernetes.api.model.DoneableServiceAccount;
 import io.fabric8.kubernetes.api.model.ServiceAccount;
 import io.fabric8.kubernetes.api.model.ServiceAccountList;
+import io.fabric8.kubernetes.client.Watch;
+import io.fabric8.kubernetes.client.Watcher;
+import io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable;
 import io.fabric8.kubernetes.client.dsl.MixedOperation;
 import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
 import io.fabric8.kubernetes.client.dsl.Resource;
@@ -91,7 +94,7 @@ public class KubernetesServiceAccountsProducer extends DefaultProducer {
     }
 
     protected void doList(Exchange exchange, String operation) throws Exception {
-        ServiceAccountList saList = getEndpoint().getKubernetesClient().serviceAccounts()
+        ServiceAccountList saList = getEndpoint().getKubernetesClient().serviceAccounts().inAnyNamespace()
                 .list();
         exchange.getOut().setBody(saList.getItems());
     }
@@ -112,8 +115,8 @@ public class KubernetesServiceAccountsProducer extends DefaultProducer {
             }
             saList = serviceAccounts.list();
         } else {
-            MixedOperation<ServiceAccount, ServiceAccountList, DoneableServiceAccount, Resource<ServiceAccount, DoneableServiceAccount>> serviceAccounts; 
-            serviceAccounts = getEndpoint().getKubernetesClient().serviceAccounts();
+            FilterWatchListMultiDeletable<ServiceAccount, ServiceAccountList, Boolean, Watch, Watcher<ServiceAccount>> serviceAccounts; 
+            serviceAccounts = getEndpoint().getKubernetesClient().serviceAccounts().inAnyNamespace();
             for (Map.Entry<String, String> entry : labels.entrySet()) {
                 serviceAccounts.withLabel(entry.getKey(), entry.getValue());
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/e4c6edb3/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java
index 4ce0413..6a0310f 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java
@@ -32,8 +32,10 @@ import org.apache.camel.component.kubernetes.KubernetesTestSupport;
 import org.apache.camel.component.kubernetes.producer.KubernetesServiceAccountsProducerTest;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.codec.binary.Base64;
+import org.junit.Ignore;
 import org.junit.Test;
 
+@Ignore
 @Deprecated
 public class DeprecatedKubernetesServiceAccountsProducerTest extends KubernetesServiceAccountsProducerTest {
 

http://git-wip-us.apache.org/repos/asf/camel/blob/e4c6edb3/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
index 2705f6f..f80375f 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
@@ -17,113 +17,74 @@
 package org.apache.camel.component.kubernetes.producer;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import io.fabric8.kubernetes.api.model.ObjectMeta;
 import io.fabric8.kubernetes.api.model.ServiceAccount;
+import io.fabric8.kubernetes.api.model.ServiceAccountBuilder;
+import io.fabric8.kubernetes.api.model.ServiceAccountListBuilder;
+import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.kubernetes.KubernetesConstants;
 import org.apache.camel.component.kubernetes.KubernetesTestSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.commons.codec.binary.Base64;
+import org.apache.camel.impl.JndiRegistry;
+import org.junit.Rule;
 import org.junit.Test;
 
 public class KubernetesServiceAccountsProducerTest extends KubernetesTestSupport {
 
+    @Rule
+    public KubernetesServer server = new KubernetesServer();
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry registry = super.createRegistry();
+        registry.bind("kubernetesClient", server.getClient());
+        return registry;
+    }
+
     @Test
     public void listTest() throws Exception {
-        if (ObjectHelper.isEmpty(authToken)) {
-            return;
-        }
-        List<ServiceAccount> result = template.requestBody("direct:list", "",
-                List.class);
-
-        boolean fabric8Exists = false;
-
-        Iterator<ServiceAccount> it = result.iterator();
-        while (it.hasNext()) {
-            ServiceAccount service = it.next();
-            if ("fabric8".equalsIgnoreCase(service.getMetadata().getName())) {
-                fabric8Exists = true;
-            }
-        }
+        server.expect().withPath("/api/v1/serviceaccounts").andReturn(200, new ServiceAccountListBuilder().addNewItem().and().addNewItem().and().addNewItem().and().build()).once();
+        List<ServiceAccount> result = template.requestBody("direct:list", "", List.class);
 
-        assertTrue(fabric8Exists);
+        assertEquals(3, result.size());
     }
 
     @Test
     public void listByLabelsTest() throws Exception {
-        if (ObjectHelper.isEmpty(authToken)) {
-            return;
-        }
+        server.expect().withPath("/api/v1/serviceaccounts?labelSelector=" + toUrlEncoded("key1=value1,key2=value2"))
+            .andReturn(200, new ServiceAccountListBuilder().addNewItem().and().addNewItem().and().addNewItem().and().build()).once();
         Exchange ex = template.request("direct:listByLabels", new Processor() {
 
             @Override
             public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
-                        "default");
                 Map<String, String> labels = new HashMap<String, String>();
-                labels.put("component", "elasticsearch");
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_SERVICE_ACCOUNTS_LABELS, labels);
+                labels.put("key1", "value1");
+                labels.put("key2", "value2");
+                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_ACCOUNTS_LABELS, labels);
             }
         });
 
         List<ServiceAccount> result = ex.getOut().getBody(List.class);
 
-        assertTrue(result.size() == 0);
+        assertEquals(3, result.size());
     }
 
     @Test
     public void createAndDeleteServiceAccount() throws Exception {
-        if (ObjectHelper.isEmpty(authToken)) {
-            return;
-        }
-        Exchange ex = template.request("direct:create", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
-                        "default");
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT_NAME, "test");
-                Map<String, String> labels = new HashMap<String, String>();
-                labels.put("this", "rocks");
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_SERVICE_ACCOUNTS_LABELS, labels);
-                ServiceAccount s = new ServiceAccount();
-                s.setKind("ServiceAccount");
-                Map<String, String> mp = new HashMap<String, String>();
-                mp.put("username", Base64.encodeBase64String("pippo".getBytes()));
-                mp.put("password", Base64.encodeBase64String("password".getBytes()));
-                ObjectMeta meta = new ObjectMeta();
-                meta.setName("test");
-                s.setMetadata(meta);
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT, s);
-            }
-        });
-
-        ServiceAccount sec = ex.getOut().getBody(ServiceAccount.class);
-
-        assertEquals(sec.getMetadata().getName(), "test");
+        ServiceAccount pod1 = new ServiceAccountBuilder().withNewMetadata().withName("sa1").withNamespace("test").and().build();
 
-        ex = template.request("direct:delete", new Processor() {
+        server.expect().withPath("/api/v1/namespaces/test/serviceaccounts/sa1").andReturn(200, pod1).once();
+        Exchange ex = template.request("direct:delete", new Processor() {
 
             @Override
             public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
-                        "default");
-                exchange.getIn().setHeader(
-                        KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT_NAME, "test");
+                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT_NAME, "sa1");
             }
         });
 
@@ -137,21 +98,9 @@ public class KubernetesServiceAccountsProducerTest extends KubernetesTestSupport
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:list")
-                        .toF("kubernetes-service-accounts://%s?oauthToken=%s&operation=listServiceAccounts",
-                                host, authToken);
-                from("direct:listByLabels")
-                        .toF("kubernetes-service-accounts://%s?oauthToken=%s&operation=listServiceAccountsByLabels",
-                                host, authToken);
-                from("direct:getServices")
-                        .toF("kubernetes-service-accounts://%s?oauthToken=%s&operation=getServiceAccount",
-                                host, authToken);
-                from("direct:create")
-                        .toF("kubernetes-service-accounts://%s?oauthToken=%s&operation=createServiceAccount",
-                                host, authToken);
-                from("direct:delete")
-                        .toF("kubernetes-service-accounts://%s?oauthToken=%s&operation=deleteServiceAccount",
-                                host, authToken);
+                from("direct:list").to("kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=listServiceAccounts");
+                from("direct:listByLabels").to("kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=listServiceAccountsByLabels");
+                from("direct:delete").to("kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=deleteServiceAccount");
             }
         };
     }