Files
osmedeus/internal/functions/webhook_functions_test.go
T
j3ssie 1403d20a4d feat: add LLM step executor with vision and tool support, event workflow system, and inheritance
- Add LLM executor supporting OpenAI vision, tool calling, embeddings, and structured outputs
- Introduce event emitter/receiver workflows with deduplication and filtering (generate_event functions)
- Add workflow extends/override system enabling inheritance chains and step merge modes
- Update function naming to snake_case across all testdata (fileExists→file_exists, etc.)
- Add comprehensive test fixtures for linter, events, CDN, step dependencies, and extends workflows
2026-01-20 18:23:57 +08:00

108 lines
2.6 KiB
Go

package functions
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNotifyWebhook_EmptyMessage(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`notify_webhook("")`,
map[string]interface{}{},
)
require.NoError(t, err)
assert.Equal(t, false, result)
}
func TestNotifyWebhook_UndefinedMessage(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`notify_webhook()`,
map[string]interface{}{},
)
require.NoError(t, err)
assert.Equal(t, false, result)
}
func TestNotifyWebhook_WhitespaceMessage(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`notify_webhook(" ")`,
map[string]interface{}{},
)
// Whitespace-only message is not empty string, so it tries to send
// but will fail because webhook is not configured
require.NoError(t, err)
assert.Equal(t, false, result)
}
func TestSendWebhookEvent_EmptyEventType(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`send_webhook_event("")`,
map[string]interface{}{},
)
require.NoError(t, err)
assert.Equal(t, false, result)
}
func TestSendWebhookEvent_UndefinedEventType(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`send_webhook_event()`,
map[string]interface{}{},
)
require.NoError(t, err)
assert.Equal(t, false, result)
}
func TestSendWebhookEvent_WithData(t *testing.T) {
registry := NewRegistry()
// Even with valid event type and data, it will fail because webhook is not configured
result, err := registry.Execute(
`send_webhook_event("test_event", {key: "value", count: 42})`,
map[string]interface{}{},
)
require.NoError(t, err)
// Returns false because webhook is not configured in global config
assert.Equal(t, false, result)
}
func TestSendWebhookEvent_WithEmptyData(t *testing.T) {
registry := NewRegistry()
result, err := registry.Execute(
`send_webhook_event("test_event", {})`,
map[string]interface{}{},
)
require.NoError(t, err)
// Returns false because webhook is not configured
assert.Equal(t, false, result)
}
func TestSendWebhookEvent_WithoutData(t *testing.T) {
registry := NewRegistry()
// Event type provided but no data object
result, err := registry.Execute(
`send_webhook_event("test_event")`,
map[string]interface{}{},
)
require.NoError(t, err)
// Returns false because webhook is not configured
assert.Equal(t, false, result)
}
// Note: Actual webhook message/event sending tests require configured webhooks
// and are not included here. The functions will return false when webhooks
// are not configured, which is the expected behavior.