openai_oauth_service_auth_url_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package service
  2. import (
  3. "context"
  4. "errors"
  5. "net/url"
  6. "testing"
  7. "github.com/Wei-Shaw/sub2api/internal/pkg/openai"
  8. "github.com/stretchr/testify/require"
  9. )
  10. type openaiOAuthClientAuthURLStub struct{}
  11. func (s *openaiOAuthClientAuthURLStub) ExchangeCode(ctx context.Context, code, codeVerifier, redirectURI, proxyURL, clientID string) (*openai.TokenResponse, error) {
  12. return nil, errors.New("not implemented")
  13. }
  14. func (s *openaiOAuthClientAuthURLStub) RefreshToken(ctx context.Context, refreshToken, proxyURL string) (*openai.TokenResponse, error) {
  15. return nil, errors.New("not implemented")
  16. }
  17. func (s *openaiOAuthClientAuthURLStub) RefreshTokenWithClientID(ctx context.Context, refreshToken, proxyURL string, clientID string) (*openai.TokenResponse, error) {
  18. return nil, errors.New("not implemented")
  19. }
  20. func TestOpenAIOAuthService_GenerateAuthURL_OpenAIKeepsCodexFlow(t *testing.T) {
  21. svc := NewOpenAIOAuthService(nil, &openaiOAuthClientAuthURLStub{})
  22. defer svc.Stop()
  23. result, err := svc.GenerateAuthURL(context.Background(), nil, "", PlatformOpenAI)
  24. require.NoError(t, err)
  25. require.NotEmpty(t, result.AuthURL)
  26. require.NotEmpty(t, result.SessionID)
  27. parsed, err := url.Parse(result.AuthURL)
  28. require.NoError(t, err)
  29. q := parsed.Query()
  30. require.Equal(t, openai.ClientID, q.Get("client_id"))
  31. require.Equal(t, "true", q.Get("codex_cli_simplified_flow"))
  32. session, ok := svc.sessionStore.Get(result.SessionID)
  33. require.True(t, ok)
  34. require.Equal(t, openai.ClientID, session.ClientID)
  35. }