feat(sync): full code sync from release
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
||||
"github.com/Wei-Shaw/sub2api/internal/pkg/openai"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type openaiOAuthClientAuthURLStub struct{}
|
||||
|
||||
func (s *openaiOAuthClientAuthURLStub) ExchangeCode(ctx context.Context, code, codeVerifier, redirectURI, proxyURL, clientID string) (*openai.TokenResponse, error) {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
func (s *openaiOAuthClientAuthURLStub) RefreshToken(ctx context.Context, refreshToken, proxyURL string) (*openai.TokenResponse, error) {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
func (s *openaiOAuthClientAuthURLStub) RefreshTokenWithClientID(ctx context.Context, refreshToken, proxyURL string, clientID string) (*openai.TokenResponse, error) {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
func TestOpenAIOAuthService_GenerateAuthURL_OpenAIKeepsCodexFlow(t *testing.T) {
|
||||
svc := NewOpenAIOAuthService(nil, &openaiOAuthClientAuthURLStub{})
|
||||
defer svc.Stop()
|
||||
|
||||
result, err := svc.GenerateAuthURL(context.Background(), nil, "", PlatformOpenAI)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, result.AuthURL)
|
||||
require.NotEmpty(t, result.SessionID)
|
||||
|
||||
parsed, err := url.Parse(result.AuthURL)
|
||||
require.NoError(t, err)
|
||||
q := parsed.Query()
|
||||
require.Equal(t, openai.ClientID, q.Get("client_id"))
|
||||
require.Equal(t, "true", q.Get("codex_cli_simplified_flow"))
|
||||
|
||||
session, ok := svc.sessionStore.Get(result.SessionID)
|
||||
require.True(t, ok)
|
||||
require.Equal(t, openai.ClientID, session.ClientID)
|
||||
}
|
||||
|
||||
// TestOpenAIOAuthService_GenerateAuthURL_SoraUsesCodexClient 验证 Sora 平台复用 Codex CLI 的
|
||||
// client_id(支持 localhost redirect_uri),但不启用 codex_cli_simplified_flow。
|
||||
func TestOpenAIOAuthService_GenerateAuthURL_SoraUsesCodexClient(t *testing.T) {
|
||||
svc := NewOpenAIOAuthService(nil, &openaiOAuthClientAuthURLStub{})
|
||||
defer svc.Stop()
|
||||
|
||||
result, err := svc.GenerateAuthURL(context.Background(), nil, "", PlatformSora)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, result.AuthURL)
|
||||
require.NotEmpty(t, result.SessionID)
|
||||
|
||||
parsed, err := url.Parse(result.AuthURL)
|
||||
require.NoError(t, err)
|
||||
q := parsed.Query()
|
||||
require.Equal(t, openai.ClientID, q.Get("client_id"))
|
||||
require.Empty(t, q.Get("codex_cli_simplified_flow"))
|
||||
|
||||
session, ok := svc.sessionStore.Get(result.SessionID)
|
||||
require.True(t, ok)
|
||||
require.Equal(t, openai.ClientID, session.ClientID)
|
||||
}
|
||||
Reference in New Issue
Block a user