proxy-pool/internal/adapters/providerapi/credential_chain_test.go
youfak 4de3ffb85f
Some checks are pending
ci / test (ubuntu-latest) (push) Waiting to run
ci / test (windows-latest) (push) Waiting to run
ci / race (push) Waiting to run
feat: add ephemeral proxy activity pool
2026-07-29 12:51:18 +08:00

54 lines
1.5 KiB
Go

package providerapi_test
import (
"context"
"testing"
"time"
"proxy-pool/internal/adapters/providerapi"
"proxy-pool/internal/config"
"proxy-pool/internal/gateway/transport"
"proxy-pool/internal/platform/credentials"
)
func TestParsedCredentialsResolveInGatewayTransport(t *testing.T) {
t.Parallel()
store, err := credentials.NewMemoryStore(10)
if err != nil {
t.Fatalf("NewMemoryStore() error = %v", err)
}
parser, err := providerapi.NewTemplateParser("provider-a", config.Upstream{
Provider: config.Provider{Protocols: []string{"http"}},
API: config.ProviderAPI{Template: `http://alice:secret@192.0.2.10:8080`},
ProxyAuth: config.ProxyAuth{Type: "response"},
Pool: config.Pool{MaxSize: 10},
Fetch: config.Fetch{
MaxInFlight: 1,
MaxResponseBytes: 1024,
TemplateTimeout: config.Duration(time.Second),
},
}, store)
if err != nil {
t.Fatalf("NewTemplateParser() error = %v", err)
}
proxies, err := parser.Parse(context.Background(), nil)
if err != nil {
t.Fatalf("Parse() error = %v", err)
}
if len(proxies) != 1 {
t.Fatalf("proxy count = %d, want 1", len(proxies))
}
resolver, err := transport.NewStoreCredentialResolver(store)
if err != nil {
t.Fatalf("NewStoreCredentialResolver() error = %v", err)
}
resolved, err := resolver.Resolve(context.Background(), proxies[0])
if err != nil {
t.Fatalf("Resolve() error = %v", err)
}
if resolved.Username != "alice" || resolved.Password != "secret" {
t.Fatalf("Resolve() returned unexpected credentials")
}
}