github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/testworkflowtemplate.go (about) 1 package client 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 "strings" 8 9 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 10 ) 11 12 // NewTestWorkflowTemplateClient creates new TestWorkflowTemplate client 13 func NewTestWorkflowTemplateClient( 14 testWorkflowTemplateTransport Transport[testkube.TestWorkflowTemplate], 15 ) TestWorkflowTemplateClient { 16 return TestWorkflowTemplateClient{ 17 testWorkflowTemplateTransport: testWorkflowTemplateTransport, 18 } 19 } 20 21 // TestWorkflowTemplateClient is a client for tests 22 type TestWorkflowTemplateClient struct { 23 testWorkflowTemplateTransport Transport[testkube.TestWorkflowTemplate] 24 } 25 26 // GetTestWorkflowTemplate returns single test by id 27 func (c TestWorkflowTemplateClient) GetTestWorkflowTemplate(id string) (testkube.TestWorkflowTemplate, error) { 28 id = strings.ReplaceAll(id, "/", "--") 29 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates/%s", id) 30 return c.testWorkflowTemplateTransport.Execute(http.MethodGet, uri, nil, nil) 31 } 32 33 // ListTestWorkflowTemplates list all tests 34 func (c TestWorkflowTemplateClient) ListTestWorkflowTemplates(selector string) (testkube.TestWorkflowTemplates, error) { 35 params := map[string]string{"selector": selector} 36 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates") 37 return c.testWorkflowTemplateTransport.ExecuteMultiple(http.MethodGet, uri, nil, params) 38 } 39 40 // DeleteTestWorkflowTemplates deletes multiple test workflow templates by labels 41 func (c TestWorkflowTemplateClient) DeleteTestWorkflowTemplates(selector string) error { 42 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates") 43 return c.testWorkflowTemplateTransport.Delete(uri, selector, true) 44 } 45 46 // CreateTestWorkflowTemplate creates new TestWorkflowTemplate Custom Resource 47 func (c TestWorkflowTemplateClient) CreateTestWorkflowTemplate(template testkube.TestWorkflowTemplate) (result testkube.TestWorkflowTemplate, err error) { 48 template.Name = strings.ReplaceAll(template.Name, "/", "--") 49 50 body, err := json.Marshal(template) 51 if err != nil { 52 return result, err 53 } 54 55 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates") 56 return c.testWorkflowTemplateTransport.Execute(http.MethodPost, uri, body, nil) 57 } 58 59 // UpdateTestWorkflowTemplate updates TestWorkflowTemplate Custom Resource 60 func (c TestWorkflowTemplateClient) UpdateTestWorkflowTemplate(template testkube.TestWorkflowTemplate) (result testkube.TestWorkflowTemplate, err error) { 61 if template.Name == "" { 62 return result, fmt.Errorf("test workflow template name '%s' is not valid", template.Name) 63 } 64 template.Name = strings.ReplaceAll(template.Name, "/", "--") 65 66 body, err := json.Marshal(template) 67 if err != nil { 68 return result, err 69 } 70 71 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates/%s", template.Name) 72 return c.testWorkflowTemplateTransport.Execute(http.MethodPut, uri, body, nil) 73 } 74 75 // DeleteTestWorkflowTemplate deletes single test by name 76 func (c TestWorkflowTemplateClient) DeleteTestWorkflowTemplate(name string) error { 77 if name == "" { 78 return fmt.Errorf("test workflow template name '%s' is not valid", name) 79 } 80 name = strings.ReplaceAll(name, "/", "--") 81 82 uri := c.testWorkflowTemplateTransport.GetURI("/test-workflow-templates/%s", name) 83 return c.testWorkflowTemplateTransport.Delete(uri, "", true) 84 }