2026-04-16 02:01:50 +00:00
|
|
|
//go:build unit
|
|
|
|
|
|
|
|
|
|
package repository
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestBuildSchedulerMetadataAccount_KeepsOpenAIWSFlags(t *testing.T) {
|
|
|
|
|
account := service.Account{
|
|
|
|
|
ID: 42,
|
|
|
|
|
Platform: service.PlatformOpenAI,
|
|
|
|
|
Type: service.AccountTypeOAuth,
|
|
|
|
|
Extra: map[string]any{
|
|
|
|
|
"openai_oauth_responses_websockets_v2_enabled": true,
|
|
|
|
|
"openai_oauth_responses_websockets_v2_mode": service.OpenAIWSIngressModePassthrough,
|
|
|
|
|
"openai_ws_force_http": true,
|
|
|
|
|
"mixed_scheduling": true,
|
|
|
|
|
"unused_large_field": "drop-me",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
got := buildSchedulerMetadataAccount(account)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, true, got.Extra["openai_oauth_responses_websockets_v2_enabled"])
|
|
|
|
|
require.Equal(t, service.OpenAIWSIngressModePassthrough, got.Extra["openai_oauth_responses_websockets_v2_mode"])
|
|
|
|
|
require.Equal(t, true, got.Extra["openai_ws_force_http"])
|
|
|
|
|
require.Equal(t, true, got.Extra["mixed_scheduling"])
|
|
|
|
|
require.Nil(t, got.Extra["unused_large_field"])
|
|
|
|
|
}
|
2026-04-30 11:38:11 +08:00
|
|
|
|
|
|
|
|
func TestBuildSchedulerMetadataAccount_KeepsSlimGroupMembership(t *testing.T) {
|
|
|
|
|
account := service.Account{
|
|
|
|
|
ID: 42,
|
|
|
|
|
Platform: service.PlatformAnthropic,
|
|
|
|
|
GroupIDs: []int64{7, 9, 7, 0},
|
|
|
|
|
AccountGroups: []service.AccountGroup{
|
|
|
|
|
{
|
|
|
|
|
AccountID: 42,
|
|
|
|
|
GroupID: 7,
|
|
|
|
|
Priority: 2,
|
|
|
|
|
Account: &service.Account{ID: 42, Name: "drop-from-metadata"},
|
|
|
|
|
Group: &service.Group{ID: 7, Name: "drop-from-metadata"},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
AccountID: 42,
|
|
|
|
|
GroupID: 11,
|
|
|
|
|
Priority: 3,
|
|
|
|
|
Group: &service.Group{ID: 11, Name: "drop-from-metadata"},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
AccountID: 42,
|
|
|
|
|
GroupID: 0,
|
|
|
|
|
Priority: 4,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
got := buildSchedulerMetadataAccount(account)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, []int64{7, 9, 11}, got.GroupIDs)
|
|
|
|
|
require.Len(t, got.AccountGroups, 2)
|
|
|
|
|
require.Equal(t, int64(42), got.AccountGroups[0].AccountID)
|
|
|
|
|
require.Equal(t, int64(7), got.AccountGroups[0].GroupID)
|
|
|
|
|
require.Equal(t, 2, got.AccountGroups[0].Priority)
|
|
|
|
|
require.Nil(t, got.AccountGroups[0].Account)
|
|
|
|
|
require.Nil(t, got.AccountGroups[0].Group)
|
|
|
|
|
require.Equal(t, int64(11), got.AccountGroups[1].GroupID)
|
|
|
|
|
require.Nil(t, got.Groups)
|
|
|
|
|
}
|