feat: publish v1.0.0-rc.36-custom.1
Publish Docker image (Multi-arch) / Build & push (amd64) (push) Failing after 9m20s
Release (Linux, macOS, Windows) / Linux Release (push) Failing after 55m7s
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Canceled after 0s
Release (Linux, macOS, Windows) / macOS Release (push) Canceled after 0s
Release (Linux, macOS, Windows) / Windows Release (push) Canceled after 0s
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Canceled after 0s
Publish Docker image (Multi-arch) / Build & push (amd64) (push) Failing after 9m20s
Release (Linux, macOS, Windows) / Linux Release (push) Failing after 55m7s
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Canceled after 0s
Release (Linux, macOS, Windows) / macOS Release (push) Canceled after 0s
Release (Linux, macOS, Windows) / Windows Release (push) Canceled after 0s
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Canceled after 0s
This commit is contained in:
commit
bb7968b612
2381 files changed
+551494
No files matched your search
@@ -0,0 +1,98 @@
|
||||
package relay
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/QuantumNous/new-api/constant"
|
||||
pluginruntime "github.com/QuantumNous/new-api/pkg/jsplugin"
|
||||
jspluginadaptor "github.com/QuantumNous/new-api/relay/channel/task/jsplugin"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestGetTaskAdaptorMapsMigratedPlatformsToFactoryPlugins(t *testing.T) {
|
||||
platforms := []constant.TaskPlatform{
|
||||
constant.TaskPlatformSuno,
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeAli)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeDoubaoVideo)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeVolcEngine)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeGemini)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeMiniMax)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeJimeng)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeKling)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeVidu)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeSora)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeOpenAI)),
|
||||
constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeVertexAi)),
|
||||
}
|
||||
for _, platform := range platforms {
|
||||
_, isJS := GetTaskAdaptor(platform).(*jspluginadaptor.TaskAdaptor)
|
||||
assert.True(t, isJS, "platform %s should use its factory plugin", platform)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTaskAdaptorUsesPlatformAsThirdPartyPluginKey(t *testing.T) {
|
||||
t.Cleanup(func() {
|
||||
pluginruntime.DefaultRegistry.Unregister("registry-fallback")
|
||||
})
|
||||
source := `
|
||||
export const meta = {apiVersion: 1, key: "registry-fallback", name: "Registry Fallback", version: "1.0.0", author: {name: "Test"}, channelTypes: [1999], models: ["fallback-v1"], fetchMode: "per_task"};
|
||||
export function buildSubmitRequest(ctx) { return {url: ctx.baseUrl + "/submit"}; }
|
||||
export function parseSubmitResponse(ctx, resp) { return {taskId: "id", taskData: resp.body}; }
|
||||
export function buildQueryRequest(ctx) { return {url: ctx.baseUrl + "/tasks/" + ctx.taskId}; }
|
||||
export function parseTaskResult(ctx, body) { return {taskId: body.id, status: "SUCCESS"}; }
|
||||
`
|
||||
_, err := pluginruntime.DefaultRegistry.Register(source, pluginruntime.Options{})
|
||||
require.NoError(t, err)
|
||||
|
||||
adaptor := GetTaskAdaptor(constant.TaskPlatform("registry-fallback"))
|
||||
require.NotNil(t, adaptor)
|
||||
assert.Equal(t, "Registry Fallback", adaptor.GetChannelName())
|
||||
}
|
||||
|
||||
func TestGetTaskAdaptorReturnsNilForUnknownPlatform(t *testing.T) {
|
||||
assert.Nil(t, GetTaskAdaptor(constant.TaskPlatform("missing-task-platform")))
|
||||
}
|
||||
|
||||
func TestGetTaskAdaptorForRequestUsesExactPinnedPlugin(t *testing.T) {
|
||||
source := `
|
||||
export const meta = {apiVersion: 1, key: "pinned-request", name: "Pinned Generation", version: "1.0.0", author: {name: "Test"}, models: ["pinned-v1"], fetchMode: "per_task"};
|
||||
export function buildSubmitRequest(ctx) { return {url: ctx.baseUrl + "/submit"}; }
|
||||
export function parseSubmitResponse(ctx) { return {taskId: "one"}; }
|
||||
export function buildQueryRequest(ctx) { return {url: ctx.baseUrl + "/query"}; }
|
||||
export function parseTaskResult() { return {status: "SUCCESS"}; }
|
||||
`
|
||||
pinned, err := pluginruntime.NewRegistry().Register(source, pluginruntime.Options{})
|
||||
require.NoError(t, err)
|
||||
c, _ := gin.CreateTestContext(httptest.NewRecorder())
|
||||
c.Request = httptest.NewRequest(http.MethodPost, "/vendor/submit", nil)
|
||||
c.Set(pluginruntime.ContextKeyPinnedPlugin, pluginruntime.PinnedPlugin{Plugin: pinned})
|
||||
|
||||
platform, adaptor := getTaskAdaptorForRequest(c, constant.TaskPlatform("missing-task-platform"))
|
||||
require.NotNil(t, adaptor)
|
||||
assert.Equal(t, constant.TaskPlatform("pinned-request"), platform)
|
||||
assert.Equal(t, "Pinned Generation", adaptor.GetChannelName())
|
||||
}
|
||||
|
||||
func TestGetTaskAdaptorForRequestPinsLegacyMappedPlugin(t *testing.T) {
|
||||
c, _ := gin.CreateTestContext(httptest.NewRecorder())
|
||||
c.Request = httptest.NewRequest(http.MethodPost, "/v1/videos/video_1/remix", nil)
|
||||
legacyPlatform := constant.TaskPlatform(strconv.Itoa(constant.ChannelTypeSora))
|
||||
|
||||
platform, adaptor := getTaskAdaptorForRequest(c, legacyPlatform)
|
||||
|
||||
require.NotNil(t, adaptor)
|
||||
assert.Equal(t, legacyPlatform, platform)
|
||||
pinnedValue, exists := c.Get(pluginruntime.ContextKeyPinnedPlugin)
|
||||
require.True(t, exists)
|
||||
pinned, ok := pinnedValue.(pluginruntime.PinnedPlugin)
|
||||
require.True(t, ok)
|
||||
require.NotNil(t, pinned.Generation)
|
||||
require.NotNil(t, pinned.Plugin)
|
||||
assert.Equal(t, "sora", pinned.Plugin.Meta.Key)
|
||||
assert.Same(t, pinned.Generation, pluginruntime.DefaultRegistry.Generation())
|
||||
}
|
||||
Reference in new issue
Block a user