| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package service
- import (
- "context"
- "net/http"
- "testing"
- "github.com/stretchr/testify/require"
- )
- // stubChatGPTHeadersRepo 是最小化 AccountRepository stub,仅实现 GetByID,
- // 供 TestResolveAndSetOpenAIChatGPTAccountHeaders 使用。
- type stubChatGPTHeadersRepo struct {
- AccountRepository
- byID map[int64]*Account
- }
- func (r *stubChatGPTHeadersRepo) GetByID(_ context.Context, id int64) (*Account, error) {
- return r.byID[id], nil
- }
- func TestResolveAndSetOpenAIChatGPTAccountHeaders(t *testing.T) {
- ctx := context.Background()
- pid := int64(100)
- parentCreds := map[string]any{"chatgpt_account_id": "org-parent"}
- parent := &Account{
- ID: 100,
- Platform: PlatformOpenAI,
- Type: AccountTypeOAuth,
- Status: StatusActive,
- Credentials: parentCreds,
- }
- repo := &stubChatGPTHeadersRepo{byID: map[int64]*Account{100: parent}}
- t.Run("shadow_resolves_to_parent_org", func(t *testing.T) {
- shadow := &Account{
- ID: 200,
- ParentAccountID: &pid,
- Platform: PlatformOpenAI,
- Type: AccountTypeOAuth,
- }
- headers := make(http.Header)
- err := resolveAndSetOpenAIChatGPTAccountHeaders(ctx, repo, headers, shadow)
- require.NoError(t, err)
- require.Equal(t, "org-parent", headers.Get("chatgpt-account-id"),
- "影子账号应透传母账号的 chatgpt-account-id")
- })
- t.Run("normal_account_passthrough", func(t *testing.T) {
- ownCreds := map[string]any{"chatgpt_account_id": "org-own"}
- normal := &Account{
- ID: 300,
- Platform: PlatformOpenAI,
- Type: AccountTypeOAuth,
- Credentials: ownCreds,
- }
- headers := make(http.Header)
- err := resolveAndSetOpenAIChatGPTAccountHeaders(ctx, repo, headers, normal)
- require.NoError(t, err)
- require.Equal(t, "org-own", headers.Get("chatgpt-account-id"),
- "普通账号应透传自身的 chatgpt-account-id")
- })
- }
|