package providerapi_test import ( "context" "testing" "time" "github.com/proxy-pool/proxy-pool/internal/adapters/providerapi" "github.com/proxy-pool/proxy-pool/internal/config" "github.com/proxy-pool/proxy-pool/internal/gateway/transport" "github.com/proxy-pool/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") } }