67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
// Package integration provides end-to-end integration tests for the Kandev backend.
|
|
package integration
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
ws "github.com/kandev/kandev/pkg/websocket"
|
|
)
|
|
|
|
func TestErrorHandling(t *testing.T) {
|
|
ts := NewTestServer(t)
|
|
defer ts.Close()
|
|
|
|
client := NewWSClient(t, ts.Server.URL)
|
|
defer client.Close()
|
|
|
|
t.Run("UnknownAction", func(t *testing.T) {
|
|
resp, err := client.SendRequest("err-1", "unknown.action", map[string]interface{}{})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.MessageTypeError, resp.Type)
|
|
|
|
var payload ws.ErrorPayload
|
|
err = resp.ParsePayload(&payload)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.ErrorCodeUnknownAction, payload.Code)
|
|
})
|
|
|
|
t.Run("GetNonExistentWorkflow", func(t *testing.T) {
|
|
resp, err := client.SendRequest("err-2", ws.ActionWorkflowGet, map[string]interface{}{
|
|
"id": "non-existent-workflow-id",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.MessageTypeError, resp.Type)
|
|
})
|
|
|
|
t.Run("GetNonExistentTask", func(t *testing.T) {
|
|
resp, err := client.SendRequest("err-3", ws.ActionTaskGet, map[string]interface{}{
|
|
"id": "non-existent-task-id",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.MessageTypeError, resp.Type)
|
|
})
|
|
|
|
t.Run("CreateTaskWithoutWorkflow", func(t *testing.T) {
|
|
resp, err := client.SendRequest("err-4", ws.ActionTaskCreate, map[string]interface{}{
|
|
"title": "Orphan Task",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.MessageTypeError, resp.Type)
|
|
})
|
|
|
|
t.Run("ListWorkflowStepsWithoutWorkflow", func(t *testing.T) {
|
|
resp, err := client.SendRequest("err-5", ws.ActionWorkflowStepList, map[string]interface{}{})
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ws.MessageTypeError, resp.Type)
|
|
})
|
|
}
|