| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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 配置")
- }
|