Files
kandev/apps/backend/internal/integration/error_handling_integration_test.go
T
2026-02-18 18:24:24 +00:00

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)
})
}