Skip to content

Commit

Permalink
Fix RequestConfiguration{Descriptor} and add test
Browse files Browse the repository at this point in the history
  • Loading branch information
flobernd committed Nov 13, 2024
1 parent e817fce commit 9a54e28
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private RequestConfiguration PingAndSniffRequestConfiguration
PingTimeout = PingTimeout,
RequestTimeout = PingTimeout,
Authentication = _requestData.AuthenticationHeader,
EnableHttpPipelining = _requestData.HttpPipeliningEnabled,
HttpPipeliningEnabled = _requestData.HttpPipeliningEnabled,
ForceNode = _requestData.ForceNode
};

Expand Down
31 changes: 18 additions & 13 deletions src/Elastic.Transport/Configuration/RequestConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public RequestConfiguration(IRequestConfiguration config)
Accept = config.Accept;
AllowedStatusCodes = config.AllowedStatusCodes;
Authentication = config.Authentication;
ClientCertificates = config.ClientCertificates;
ClientCertificates = (config.ClientCertificates is null) ? null : new X509CertificateCollection(config.ClientCertificates);
ContentType = config.ContentType;
DisableDirectStreaming = config.DisableDirectStreaming;
DisableAuditTrail = config.DisableAuditTrail;
Expand Down Expand Up @@ -230,18 +230,12 @@ public RequestConfiguration(IRequestConfiguration config)
/// <inheritdoc />
public bool? DisablePings { get; init; }

/// <inheritdoc />
public bool? DisablePing { get; init; } // TODO: ?

/// <inheritdoc />
public bool? DisableSniff { get; init; }

/// <inheritdoc />
public bool? HttpPipeliningEnabled { get; init; }

/// <inheritdoc />
public bool? EnableHttpPipelining { get; init; } = true; // TODO: ?

/// <inheritdoc />
public bool? EnableHttpCompression { get; init; }

Expand Down Expand Up @@ -306,7 +300,7 @@ public RequestConfigurationDescriptor(IRequestConfiguration? config)
_accept = config.Accept;
_allowedStatusCodes= config.AllowedStatusCodes;
_authentication = config.Authentication;
_clientCertificates = config.ClientCertificates;
_clientCertificates = (config.ClientCertificates is null) ? null : new X509CertificateCollection(config.ClientCertificates);;
_contentType = config.ContentType;
_disableDirectStreaming = config.DisableDirectStreaming;
_disableAuditTrail = config.DisableAuditTrail;
Expand Down Expand Up @@ -341,8 +335,10 @@ public RequestConfigurationDescriptor(IRequestConfiguration? config)
private bool? _disablePings;
private bool? _disableSniff;
private bool? _httpPipeliningEnabled;
private bool? _enableHttpCompression;
private Uri? _forceNode;
private int? _maxRetries;
private TimeSpan? _maxRetryTimeout;
private string? _opaqueId;
private bool? _parseAllHeaders;
private TimeSpan? _pingTimeout;
Expand All @@ -356,11 +352,6 @@ public RequestConfigurationDescriptor(IRequestConfiguration? config)
private bool? _enableThreadPoolStats;
private RequestMetaData? _requestMetaData;

#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value
private bool? _enableHttpCompression; // TODO: ?
private TimeSpan? _maxRetryTimeout; // TODO: ?
#pragma warning restore CS0649 // Field is never assigned to, and will always have its default value

/// <inheritdoc cref="IRequestConfiguration.RunAs"/>
public RequestConfigurationDescriptor RunAs(string username)
{
Expand Down Expand Up @@ -466,6 +457,13 @@ public RequestConfigurationDescriptor MaxRetries(int retry)
return this;
}

/// <inheritdoc cref="IRequestConfiguration.MaxRetryTimeout"/>
public RequestConfigurationDescriptor MaxRetries(TimeSpan? timeout)
{
_maxRetryTimeout = timeout;
return this;
}

/// <inheritdoc cref="AuthorizationHeader"/>
public RequestConfigurationDescriptor Authentication(AuthorizationHeader authentication)
{
Expand All @@ -480,6 +478,13 @@ public RequestConfigurationDescriptor EnableHttpPipelining(bool enable = true)
return this;
}

/// <inheritdoc cref="IRequestConfiguration.EnableHttpCompression"/>
public RequestConfigurationDescriptor EnableHttpCompression(bool enable = true)
{
_enableHttpCompression = enable;
return this;
}

/// <inheritdoc cref="IRequestConfiguration.ClientCertificates"/>
public RequestConfigurationDescriptor ClientCertificates(X509CertificateCollection certificates)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information

using System;
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using FluentAssertions;
using Xunit;
#if !NETFRAMEWORK
using Soenneker.Utils.AutoBogus;
#endif

namespace Elastic.Transport.Tests.Configuration;

public class RequestConfigurationTests
{
[Fact]
public void CopiesAllDefaults()
{
var config = new RequestConfiguration();
var newConfig = new RequestConfiguration(config);

config.Should().BeEquivalentTo(newConfig);
}

[Fact]
public void SameDefaults()
{
IRequestConfiguration config = new RequestConfiguration();
IRequestConfiguration newConfig = new RequestConfigurationDescriptor();

config.Should().BeEquivalentTo(newConfig);
}

#if !NETFRAMEWORK
[Fact]
public void CopiesAllProperties()
{
var autoFaker = new AutoFaker<RequestConfiguration>();
autoFaker.RuleFor(x => x.ClientCertificates, f => new X509CertificateCollection());

var config = autoFaker.Generate();
config.Accept.Should().NotBeEmpty();
config.ClientCertificates.Should().NotBeNull();

IRequestConfiguration newConfig = new RequestConfiguration(config);
config.Should().BeEquivalentTo(newConfig);

IRequestConfiguration newDescriptor = new RequestConfigurationDescriptor(config);
config.Should().BeEquivalentTo(newDescriptor);
}
#endif
}

0 comments on commit 9a54e28

Please sign in to comment.