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

     1  package client
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
     8  )
     9  
    10  // NewTestSourceClient creates new TestSource client
    11  func NewTestSourceClient(testSourceTransport Transport[testkube.TestSource]) TestSourceClient {
    12  	return TestSourceClient{
    13  		testSourceTransport: testSourceTransport,
    14  	}
    15  }
    16  
    17  // TestSourceClient is a client for test sources
    18  type TestSourceClient struct {
    19  	testSourceTransport Transport[testkube.TestSource]
    20  }
    21  
    22  // GetTestSource gets test source by name
    23  func (c TestSourceClient) GetTestSource(name string) (testSource testkube.TestSource, err error) {
    24  	uri := c.testSourceTransport.GetURI("/test-sources/%s", name)
    25  	return c.testSourceTransport.Execute(http.MethodGet, uri, nil, nil)
    26  }
    27  
    28  // ListTestSources list all test sources
    29  func (c TestSourceClient) ListTestSources(selector string) (testSources testkube.TestSources, err error) {
    30  	uri := c.testSourceTransport.GetURI("/test-sources")
    31  	params := map[string]string{
    32  		"selector": selector,
    33  	}
    34  
    35  	return c.testSourceTransport.ExecuteMultiple(http.MethodGet, uri, nil, params)
    36  }
    37  
    38  // CreateTestSource creates new TestSource Custom Resource
    39  func (c TestSourceClient) CreateTestSource(options UpsertTestSourceOptions) (testSource testkube.TestSource, err error) {
    40  	uri := c.testSourceTransport.GetURI("/test-sources")
    41  	request := testkube.TestSourceUpsertRequest(options)
    42  
    43  	body, err := json.Marshal(request)
    44  	if err != nil {
    45  		return testSource, err
    46  	}
    47  
    48  	return c.testSourceTransport.Execute(http.MethodPost, uri, body, nil)
    49  }
    50  
    51  // UpdateTestSource updates TestSource Custom Resource
    52  func (c TestSourceClient) UpdateTestSource(options UpdateTestSourceOptions) (testSource testkube.TestSource, err error) {
    53  	name := ""
    54  	if options.Name != nil {
    55  		name = *options.Name
    56  	}
    57  
    58  	uri := c.testSourceTransport.GetURI("/test-sources/%s", name)
    59  	request := testkube.TestSourceUpdateRequest(options)
    60  
    61  	body, err := json.Marshal(request)
    62  	if err != nil {
    63  		return testSource, err
    64  	}
    65  
    66  	return c.testSourceTransport.Execute(http.MethodPatch, uri, body, nil)
    67  }
    68  
    69  // DeleteTestSources deletes all test sources
    70  func (c TestSourceClient) DeleteTestSources(selector string) (err error) {
    71  	uri := c.testSourceTransport.GetURI("/test-sources")
    72  	return c.testSourceTransport.Delete(uri, selector, true)
    73  }
    74  
    75  // DeleteTestSource deletes single test source by name
    76  func (c TestSourceClient) DeleteTestSource(name string) (err error) {
    77  	uri := c.testSourceTransport.GetURI("/test-sources/%s", name)
    78  	return c.testSourceTransport.Delete(uri, "", true)
    79  }