This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 8adc29b425ed372a89dd1b652184483584dda3aa
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Tue Mar 30 17:08:12 2021 +0200

    test: Create Apache Snapshots proxy repository with Nexus REST API
---
 e2e/common/build/maven_ca_secret_test.go | 81 +++++++++++++++++++++++++++++++-
 1 file changed, 80 insertions(+), 1 deletion(-)

diff --git a/e2e/common/build/maven_ca_secret_test.go 
b/e2e/common/build/maven_ca_secret_test.go
index 46f0567..13acf7f 100644
--- a/e2e/common/build/maven_ca_secret_test.go
+++ b/e2e/common/build/maven_ca_secret_test.go
@@ -22,6 +22,8 @@ limitations under the License.
 package build
 
 import (
+       "bufio"
+       "bytes"
        "crypto/rand"
        "crypto/rsa"
        "crypto/x509"
@@ -30,11 +32,16 @@ import (
        "fmt"
        "math/big"
        rand2 "math/rand"
+       "os"
        "testing"
        "time"
 
        . "github.com/onsi/gomega"
        . "github.com/onsi/gomega/gstruct"
+       "k8s.io/client-go/kubernetes/scheme"
+       "k8s.io/client-go/tools/remotecommand"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        appsv1 "k8s.io/api/apps/v1"
        corev1 "k8s.io/api/core/v1"
@@ -320,9 +327,81 @@ ProxyPreserveHost On
                        }),
                ))
 
+               // Get the Nexus Pod
+               pods := &corev1.PodList{
+                       TypeMeta: metav1.TypeMeta{
+                               Kind:       "Pod",
+                               APIVersion: corev1.SchemeGroupVersion.String(),
+                       },
+               }
+               Expect(TestClient().List(TestContext, pods,
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{"camel-k": "maven-test-nexus"},
+               )).To(Succeed())
+               Expect(pods.Items).To(HaveLen(1))
+
+               // Retrieve the Nexus admin password
+               req := TestClient().CoreV1().RESTClient().Post().
+                       Resource("pods").
+                       Name(pods.Items[0].Name).
+                       Namespace(ns).
+                       SubResource("exec").
+                       Param("container", "nexus")
+
+               req.VersionedParams(&corev1.PodExecOptions{
+                       Container: "nexus",
+                       Command:   []string{"cat", 
"/nexus-data/admin.password"},
+                       Stdout:    true,
+                       Stderr:    true,
+                       TTY:       false,
+               }, scheme.ParameterCodec)
+
+               exec, err := 
remotecommand.NewSPDYExecutor(TestClient().GetConfig(), "POST", req.URL())
+               Expect(err).To(BeNil())
+
+               var password bytes.Buffer
+               Expect(exec.Stream(remotecommand.StreamOptions{
+                       Stdout: bufio.NewWriter(&password),
+                       Stderr: os.Stderr,
+                       Tty:    false,
+               })).To(Succeed())
+
+               // Create the Apache Snapshot proxy repository using the Nexus 
REST API
+               req = TestClient().CoreV1().RESTClient().Post().
+                       Resource("pods").
+                       Name(pods.Items[0].Name).
+                       Namespace(ns).
+                       SubResource("exec").
+                       Param("container", "nexus")
+
+               apacheSnapshots := 
"https://repository.apache.org/content/repositories/snapshots/";
+               repository := 
fmt.Sprintf(`{"name":"apache-snapshots","proxy":{"remoteUrl":"%s","contentMaxAge":1440,"metadataMaxAge":1440},"online":true,"maven":{"versionPolicy":"SNAPSHOT","layoutPolicy":"PERMISSIVE"},"negativeCache":{"enabled":false,"timeToLive":1440},"httpClient":{"autoBlock":false,"blocked":false},"storage":{"strictContentTypeValidation":true,"blobStoreName":"default"}}`,
 apacheSnapshots)
+
+               req.VersionedParams(&corev1.PodExecOptions{
+                       Container: "nexus",
+                       Command: []string{"curl", "-v",
+                               "-u", "admin:" + password.String(),
+                               "-H", "Content-Type: application/json",
+                               "--data", repository,
+                               
"http://localhost:8081/service/rest/v1/repositories/maven/proxy/"},
+                       Stdout: true,
+                       Stderr: true,
+                       TTY:    false,
+               }, scheme.ParameterCodec)
+
+               exec, err = 
remotecommand.NewSPDYExecutor(TestClient().GetConfig(), "POST", req.URL())
+               Expect(err).To(BeNil())
+
+               Expect(exec.Stream(remotecommand.StreamOptions{
+                       Stdout: os.Stdout,
+                       Stderr: os.Stderr,
+                       Tty:    false,
+               })).To(Succeed())
+
                // Install Camel K with the Maven Central Nexus proxy and the 
corresponding Maven CA secret
                Expect(Kamel("install", "-n", ns,
-                       "--maven-repository", 
fmt.Sprintf(`https://%s/repository/maven-public/@id=central@snapshots`, 
hostname),
+                       "--maven-repository", 
fmt.Sprintf(`https://%s/repository/maven-public/@id=central`, hostname),
+                       "--maven-repository", 
fmt.Sprintf(`https://%s/repository/apache-snapshots/@id=apache-snapshots@snapshots`,
 hostname),
                        "--maven-ca-secret", secret.Name+"/"+corev1.TLSCertKey,
                ).Execute()).To(Succeed())
 

Reply via email to