public async Task <Authorization> CallAsync() { Credential registryCredential = await retrieveTargetRegistryCredentialsStep.GetFuture().ConfigureAwait(false); string registry = buildConfiguration.GetTargetImageConfiguration().GetImageRegistry(); try { using (progressEventDispatcherFactory.Create("authenticating push to " + registry, 1)) using (new TimerEventDispatcher( buildConfiguration.GetEventHandlers(), string.Format(CultureInfo.CurrentCulture, DESCRIPTION, registry))) { RegistryAuthenticator registryAuthenticator = await buildConfiguration .NewTargetImageRegistryClientFactory() .NewRegistryClient() .GetRegistryAuthenticatorAsync().ConfigureAwait(false); if (registryAuthenticator != null) { return(await registryAuthenticator.AuthenticatePushAsync(registryCredential).ConfigureAwait(false)); } } } catch (InsecureRegistryException) { // Cannot skip certificate validation or use HTTP; fall through. } return(registryCredential?.IsOAuth2RefreshToken() != false ? null : Authorization.FromBasicCredentials( registryCredential.GetUsername(), registryCredential.GetPassword())); }
public async Task TestUserAgentAsync() { using (TestWebServer server = new TestWebServer(false)) { try { RegistryAuthenticator authenticator = RegistryAuthenticator.FromAuthenticationMethod( new AuthenticationHeaderValue("Bearer", "realm=\"" + server.GetAddressAndPort() + "\""), registryEndpointRequestProperties, new[] { new ProductInfoHeaderValue(new ProductHeaderValue("Competent-Agent")) }); await authenticator.AuthenticatePushAsync(null).ConfigureAwait(false); } catch (RegistryAuthenticationFailedException) { // Doesn't matter if auth fails. We only examine what we sent. } Assert.That(server.GetInputRead(), Does.Contain("User-Agent: Competent-Agent")); } }