github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/api_test.go (about)

     1  package client
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"k8s.io/apimachinery/pkg/runtime/schema"
    11  	"k8s.io/apimachinery/pkg/types"
    12  	"k8s.io/client-go/kubernetes/fake"
    13  	"k8s.io/client-go/rest"
    14  	"k8s.io/client-go/util/flowcontrol"
    15  
    16  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    17  )
    18  
    19  type Rest struct {
    20  }
    21  
    22  func (r *Rest) GetRateLimiter() flowcontrol.RateLimiter {
    23  	return flowcontrol.NewFakeAlwaysRateLimiter()
    24  }
    25  func (r *Rest) Verb(verb string) *rest.Request {
    26  	return &rest.Request{}
    27  }
    28  func (r *Rest) Post() *rest.Request {
    29  	return &rest.Request{}
    30  
    31  }
    32  func (r *Rest) Put() *rest.Request {
    33  	return &rest.Request{}
    34  
    35  }
    36  func (r *Rest) Patch(pt types.PatchType) *rest.Request {
    37  	return &rest.Request{}
    38  
    39  }
    40  func (r *Rest) Get() *rest.Request {
    41  	return &rest.Request{}
    42  
    43  }
    44  func (r *Rest) Delete() *rest.Request {
    45  	return &rest.Request{}
    46  
    47  }
    48  func (r *Rest) APIVersion() schema.GroupVersion {
    49  	return schema.GroupVersion{Group: "api", Version: "v1"}
    50  }
    51  
    52  func TestDefaultDirectAPIClient(t *testing.T) {
    53  	t.Skip("Implement working test")
    54  
    55  	k8sClient := fake.NewSimpleClientset()
    56  	// can't override REST client to change requested URI
    57  	// k8sClient.CoreV1().RESTCli nt()
    58  	config := NewAPIConfig("testkube", "testkube-api-server", 8088)
    59  	client := NewProxyAPIClient(k8sClient, config)
    60  
    61  	t.Run("Execute test with given ID", func(t *testing.T) {
    62  		// given
    63  		srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    64  			w.Header().Add("Content-Type", "application/json")
    65  			fmt.Fprintf(w, `{"id":"1", "executionResult":{"status": "success", "output":"execution completed"}}`)
    66  		}))
    67  		defer srv.Close()
    68  
    69  		// when
    70  		options := ExecuteTestOptions{
    71  			ExecutionVariables: map[string]testkube.Variable{},
    72  			SecretEnvs:         map[string]string{},
    73  		}
    74  		execution, err := client.ExecuteTest("test", "some name", options)
    75  
    76  		// then
    77  		assert.Equal(t, "1", execution.Id)
    78  		assert.Equal(t, testkube.PASSED_ExecutionStatus, *execution.ExecutionResult.Status)
    79  		assert.Equal(t, "execution completed", execution.ExecutionResult.Output)
    80  		assert.NoError(t, err)
    81  	})
    82  
    83  }