mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-09-05 00:55:56 +00:00
42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/QuantumNous/new-api/constant"
|
|
"github.com/QuantumNous/new-api/model"
|
|
"github.com/QuantumNous/new-api/pkg/jsplugin"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestValidateTaskPluginChannel(t *testing.T) {
|
|
source := `
|
|
export const meta = {apiVersion: 1, key: "channel-validation", name: "Validation", version: "1.0.0", author: {name: "Test"}, models: ["doc"], fetchMode: "per_task"};
|
|
export function buildSubmitRequest() { return {}; }
|
|
export function parseSubmitResponse() { return {}; }
|
|
export function buildQueryRequest() { return {}; }
|
|
export function parseTaskResult() { return {}; }
|
|
`
|
|
_, err := jsplugin.DefaultRegistry.Register(source, jsplugin.Options{})
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() { jsplugin.DefaultRegistry.Unregister("channel-validation") })
|
|
baseURL := "https://example.com"
|
|
|
|
channel := &model.Channel{Type: constant.ChannelTypeTaskPlugin, BaseURL: &baseURL}
|
|
require.ErrorContains(t, validateChannel(channel, false), "task plugin key is required")
|
|
|
|
missing := `{"task_plugin_key":"missing"}`
|
|
channel.Setting = &missing
|
|
require.ErrorContains(t, validateChannel(channel, false), "is not registered")
|
|
|
|
longKey := `{"task_plugin_key":"` + strings.Repeat("x", 31) + `"}`
|
|
channel.Setting = &longKey
|
|
require.ErrorContains(t, validateChannel(channel, false), "must not exceed 30")
|
|
|
|
valid := `{"task_plugin_key":"channel-validation"}`
|
|
channel.Setting = &valid
|
|
channel.BaseURL = nil
|
|
require.ErrorContains(t, validateChannel(channel, false), "base URL is required")
|
|
}
|