github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/spi/uploads.go (about)

     1  package spi
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"crypto/tls"
     7  	"fmt"
     8  	"net/http"
     9  	"time"
    10  
    11  	v1 "k8s.io/api/core/v1"
    12  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    13  )
    14  
    15  // UploadWithK8sSecret returns the requested Secret object
    16  func (s *SPIController) UploadWithK8sSecret(secretName, namespace, spiTokenName, providerURL, username, tokenData string) (*v1.Secret, error) {
    17  	k8sSecret := &v1.Secret{
    18  		ObjectMeta: metav1.ObjectMeta{
    19  			Namespace: namespace,
    20  			Name:      secretName,
    21  			Labels: map[string]string{
    22  				"spi.appstudio.redhat.com/upload-secret": "token",
    23  			},
    24  		},
    25  		Type: "Opaque",
    26  		StringData: map[string]string{
    27  			"tokenData": tokenData,
    28  		},
    29  	}
    30  	if spiTokenName != "" {
    31  		k8sSecret.StringData["spiTokenName"] = spiTokenName
    32  	}
    33  	if providerURL != "" {
    34  		k8sSecret.StringData["providerUrl"] = providerURL
    35  	}
    36  	if username != "" {
    37  		k8sSecret.StringData["userName"] = username
    38  	}
    39  
    40  	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*1)
    41  	defer cancel()
    42  	err := s.KubeRest().Create(ctx, k8sSecret)
    43  	if err != nil {
    44  		return nil, err
    45  	}
    46  	return k8sSecret, nil
    47  }
    48  
    49  // Perform http POST call to upload a token at the given upload URL
    50  func (s *SPIController) UploadWithRestEndpoint(uploadURL string, oauthCredentials string, bearerToken string) (int, error) {
    51  	http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
    52  	req, err := http.NewRequest("POST", uploadURL, bytes.NewBuffer([]byte(oauthCredentials)))
    53  	if err != nil {
    54  		return 0, err
    55  	}
    56  	req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", string(bearerToken)))
    57  	req.Header.Set("Content-Type", "application/json")
    58  
    59  	client := &http.Client{}
    60  	resp, err := client.Do(req)
    61  	if err != nil {
    62  		return resp.StatusCode, err
    63  	}
    64  	defer resp.Body.Close()
    65  	return resp.StatusCode, nil
    66  }