浏览代码

完成基本测试编写

yjp 1 年之前
父节点
当前提交
0c465f0323
共有 4 个文件被更改,包括 119 次插入5 次删除
  1. 4 4
      client/workflow.go
  2. 46 1
      test/common.go
  3. 2 0
      test/workflow_template_test.go
  4. 67 0
      test/workflow_test.go

+ 4 - 4
client/workflow.go

@@ -20,11 +20,11 @@ const (
 
 type CreateWorkflowParams struct {
 	Namespace          string
-	TemplateDefinition map[string]any
+	WorkflowDefinition map[string]any
 }
 
-func (c *Client) CreateWorkflow(params CreateWorkflowParams) error {
-	return nil
+func (c *Client) CreateWorkflow(params CreateWorkflowParams) (string, error) {
+	return "", nil
 }
 
 type DeleteWorkflowParams struct {
@@ -57,7 +57,7 @@ func (c *Client) GetWorkflow(params GetWorkflowParams) (map[string]any, error) {
 
 type LintWorkflowParams struct {
 	Namespace          string
-	TemplateDefinition map[string]any
+	WorkflowDefinition map[string]any
 }
 
 func (c *Client) LintWorkflow(params LintWorkflowParams) error {

+ 46 - 1
test/common.go

@@ -1,6 +1,11 @@
 package test
 
-import _ "embed"
+import (
+	_ "embed"
+	"github.com/pkg/errors"
+	"sort"
+	"testing"
+)
 
 const (
 	baseUrl              = "https://localhost:32337"
@@ -11,3 +16,43 @@ const (
 
 //go:embed approve_workflow_template.yaml
 var templateYamlStr []byte
+
+//go:embed approve_workflow.yaml
+var workflowYamlStr []byte
+
+func compareDefinitionMap(t *testing.T, definitionMap map[string]any, checkDefinitionMaps map[string]any) {
+	keys := make([]string, 0)
+	for key, _ := range definitionMap {
+		keys = append(keys, key)
+	}
+
+	sort.Strings(keys)
+
+	for _, key := range keys {
+		innerDefinitionMap, ok := definitionMap[key].(map[string]any)
+		if ok {
+			compareDefinitionMap(t, innerDefinitionMap, checkDefinitionMaps[key].(map[string]any))
+			continue
+		}
+
+		sliceValues, ok := definitionMap[key].([]any)
+		if ok {
+			for i, sliceValue := range sliceValues {
+				innerDefinitionMap, ok := sliceValue.(map[string]any)
+				if ok {
+					compareDefinitionMap(t, innerDefinitionMap, checkDefinitionMaps[key].([]any)[i].(map[string]any))
+					continue
+				}
+
+				if sliceValue != checkDefinitionMaps[key].([]any)[i] {
+					t.Fatalf("%+v\n", errors.Errorf("key: %v value %v", key, definitionMap[key]))
+				}
+			}
+			continue
+		}
+
+		if definitionMap[key] != checkDefinitionMaps[key] {
+			t.Fatalf("%+v\n", errors.Errorf("key: %v value %v", key, definitionMap[key]))
+		}
+	}
+}

+ 2 - 0
test/workflow_template_test.go

@@ -63,6 +63,8 @@ func TestWorkflowTemplate(t *testing.T) {
 		t.Fatalf("%+v\n", err)
 	}
 
+	compareDefinitionMap(t, createdTemplateDefinition, createdTemplateDefinitions[0])
+
 	err = argo.GetInstance().UpdateWorkflowTemplate(client.UpdateWorkflowTemplateParams{
 		Namespace:          namespace,
 		Name:               workflowTemplateName,

+ 67 - 0
test/workflow_test.go

@@ -0,0 +1,67 @@
+package test
+
+import (
+	"git.sxidc.com/go-tools/argo-api"
+	"git.sxidc.com/go-tools/argo-api/client"
+	"github.com/pkg/errors"
+	"gopkg.in/yaml.v3"
+	"testing"
+)
+
+func TestWorkflowBase(t *testing.T) {
+	argo.Init(baseUrl, token, client.WithTimeoutSec(10))
+	defer argo.Destroy()
+
+	workflowDefinition := make(map[string]any)
+	err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
+	if err != nil {
+		panic(err)
+	}
+
+	err = argo.GetInstance().LintWorkflow(client.LintWorkflowParams{
+		Namespace:          namespace,
+		WorkflowDefinition: workflowDefinition,
+	})
+	if err != nil {
+		t.Fatalf("%+v\n", err)
+	}
+
+	workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
+		Namespace:          namespace,
+		WorkflowDefinition: workflowDefinition,
+	})
+	if err != nil {
+		t.Fatalf("%+v\n", err)
+	}
+
+	defer func() {
+		err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
+			Namespace: namespace,
+			Name:      workflowName,
+		})
+		if err != nil {
+			t.Fatalf("%+v\n", err)
+		}
+	}()
+
+	createdWorkflowDefinitions, err := argo.GetInstance().GetWorkflowsInNamespace(client.GetWorkflowsInNamespaceParams{
+		Namespace: namespace,
+	})
+	if err != nil {
+		t.Fatalf("%+v\n", err)
+	}
+
+	if len(createdWorkflowDefinitions) != 1 {
+		t.Fatalf("%+v\n", errors.Errorf("数量不一致: %v", len(createdWorkflowDefinitions)))
+	}
+
+	createdWorkflowDefinition, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
+		Namespace: namespace,
+		Name:      workflowName,
+	})
+	if err != nil {
+		t.Fatalf("%+v\n", err)
+	}
+
+	compareDefinitionMap(t, createdWorkflowDefinition, createdWorkflowDefinitions[0])
+}