-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil_test.go
92 lines (81 loc) · 2.63 KB
/
util_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package workflow_test
import (
"encoding/json"
"github.com/stretchr/testify/assert"
"github.com/upstash/workflow-go"
"os"
"strings"
"testing"
"time"
)
var (
testWorkflowBaseUrl = os.Getenv("APPLICATION_URL")
simpleWorkflowUrl = strings.Join([]string{testWorkflowBaseUrl, "workflows", "simpleWorkflow"}, "/")
longRunningWorkflow = strings.Join([]string{testWorkflowBaseUrl, "workflows", "longRunning"}, "/")
sleepTenDaysWorkflow = strings.Join([]string{testWorkflowBaseUrl, "workflows", "sleepTenDaysWorkflow"}, "/")
sleepOneDayWorkflow = strings.Join([]string{testWorkflowBaseUrl, "workflows", "sleepOneDayWorkflow"}, "/")
waitForEvent = strings.Join([]string{testWorkflowBaseUrl, "workflows", "waitForEvent"}, "/")
failingWorkflow = strings.Join([]string{testWorkflowBaseUrl, "workflows", "failingWorkflow"}, "/")
)
func waitUntilRunState(t *testing.T, client *workflow.Client, runId string, state string) {
assert.Eventually(t, func() bool {
subT := &testing.T{}
runs, cursor, err := client.Logs(workflow.LogsOptions{
Filter: workflow.LogFilter{
RunId: runId,
},
})
assert.NoError(subT, err)
assert.Empty(subT, cursor)
if len(runs) != 1 {
return false
}
run := runs[0]
assert.Equal(subT, run.WorkflowState, state)
return !subT.Failed()
}, time.Minute, time.Millisecond*100)
}
func assertRequestPayload(t *testing.T, client *workflow.Client, runId string, expected string) {
assert.Eventually(t, func() bool {
subT := &testing.T{}
runs, _, err := client.Logs(workflow.LogsOptions{Filter: workflow.LogFilter{RunId: runId}})
assert.NoError(subT, err)
if assert.Len(subT, runs, 1) {
run := runs[0]
if assert.GreaterOrEqual(subT, len(run.GroupedSteps), 1) {
step := run.GroupedSteps[0]
assert.Equal(subT, step.Steps[0].Out, expected)
}
}
return !subT.Failed()
}, time.Minute, time.Millisecond*100)
}
func waitUntilWaitStep(t *testing.T, client *workflow.Client, runId string) {
assert.Eventually(t, func() bool {
subT := &testing.T{}
runs, _, err := client.Logs(workflow.LogsOptions{
Filter: workflow.LogFilter{
RunId: runId,
},
})
assert.NoError(subT, err)
if len(runs) != 1 {
return false
}
run := runs[0]
if len(run.GroupedSteps) < 3 {
return false
}
if len(run.GroupedSteps[len(run.GroupedSteps)-1].Steps) != 1 {
return false
}
lastStep := run.GroupedSteps[len(run.GroupedSteps)-1].Steps[0]
assert.Equal(subT, lastStep.StepType, "Wait")
return !subT.Failed()
}, time.Minute, time.Millisecond*100)
}
func jsonMarshall(t *testing.T, data any) []byte {
marshallData, err := json.Marshal(data)
assert.NoError(t, err)
return marshallData
}