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