mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 12:02:27 +08:00
42 lines
1.7 KiB
Go
42 lines
1.7 KiB
Go
package dto
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// 固定账号 manifest 配置必须在管理端 DTO 完整序列化:漏映射会让编辑对话框回显
|
|
// 关闭状态,管理员保存无关字段时会把已开启的配置静默关掉。用户侧 DTO 不携带该字段。
|
|
func TestGroupMapperRoundTripsCodexModelsManifestConfig(t *testing.T) {
|
|
group := &service.Group{
|
|
ID: 31, Name: "codex-manifest-dto", Platform: service.PlatformOpenAI, Status: service.StatusActive,
|
|
CodexModelsManifestConfig: service.GroupCodexModelsManifestConfig{
|
|
Enabled: true,
|
|
AccountIDs: []int64{101, 202},
|
|
FallbackToScheduler: true,
|
|
},
|
|
}
|
|
|
|
adminJSON, err := json.Marshal(GroupFromServiceAdmin(group))
|
|
require.NoError(t, err)
|
|
var adminEnvelope struct {
|
|
CodexModelsManifestConfig *struct {
|
|
Enabled bool `json:"enabled"`
|
|
AccountIDs []int64 `json:"account_ids"`
|
|
FallbackToScheduler bool `json:"fallback_to_scheduler"`
|
|
} `json:"codex_models_manifest_config"`
|
|
}
|
|
require.NoError(t, json.Unmarshal(adminJSON, &adminEnvelope))
|
|
require.NotNil(t, adminEnvelope.CodexModelsManifestConfig, "GroupFromServiceAdmin 漏映射 codex_models_manifest_config")
|
|
require.True(t, adminEnvelope.CodexModelsManifestConfig.Enabled)
|
|
require.Equal(t, []int64{101, 202}, adminEnvelope.CodexModelsManifestConfig.AccountIDs)
|
|
require.True(t, adminEnvelope.CodexModelsManifestConfig.FallbackToScheduler)
|
|
|
|
userJSON, err := json.Marshal(GroupFromService(group))
|
|
require.NoError(t, err)
|
|
require.NotContains(t, string(userJSON), "codex_models_manifest_config", "用户侧分组 DTO 不得暴露管理端 manifest 配置")
|
|
}
|