Files
new-api/model/channel_settings_test.go
T
SeefsandCaIon a6cf42c0f1 feat: support upstream model fetch for advanced custom channels (#5971)
* feat: support upstream model fetch for advanced custom channels

* fix: add advanced custom routes as separate groups

* fix: select advanced custom route entry before adding

---------

Co-authored-by: CaIon <i@caion.me>
2026-07-18 13:39:53 +08:00

69 lines
1.7 KiB
Go

package model
import (
"testing"
"github.com/QuantumNous/new-api/constant"
"github.com/QuantumNous/new-api/dto"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestAdvancedCustomChannelRequiresModelListRouteOnlyWhenUpdateChecksEnabled(t *testing.T) {
inferenceRoute := dto.AdvancedCustomRoute{
IncomingPath: "/v1/chat/completions",
UpstreamPath: "/v1/chat/completions",
Converter: "none",
}
tests := []struct {
name string
checksEnabled bool
routes []dto.AdvancedCustomRoute
wantErr string
}{
{
name: "legacy channel without discovery route remains valid",
routes: []dto.AdvancedCustomRoute{inferenceRoute},
},
{
name: "enabled checks require discovery route",
checksEnabled: true,
routes: []dto.AdvancedCustomRoute{inferenceRoute},
wantErr: dto.AdvancedCustomModelListPath,
},
{
name: "enabled checks accept discovery route",
checksEnabled: true,
routes: []dto.AdvancedCustomRoute{
inferenceRoute,
{
IncomingPath: dto.AdvancedCustomModelListPath,
UpstreamPath: dto.AdvancedCustomModelListPath,
Converter: "none",
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
channel := &Channel{Type: constant.ChannelTypeAdvancedCustom}
channel.SetOtherSettings(dto.ChannelOtherSettings{
UpstreamModelUpdateCheckEnabled: tt.checksEnabled,
AdvancedCustom: &dto.AdvancedCustomConfig{
Routes: tt.routes,
},
})
err := channel.ValidateSettings()
if tt.wantErr == "" {
require.NoError(t, err)
return
}
require.Error(t, err)
assert.Contains(t, err.Error(), tt.wantErr)
})
}
}