54 lines
1.5 KiB
Go
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")
|
|
}
|
|
}
|