Skip to content

Commit 2a624a2

Browse files
committed
check ConfigurationOptions fields
1 parent f197e0e commit 2a624a2

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

tests/StackExchange.Redis.Tests/ConfigTests.cs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
using StackExchange.Redis.Configuration;
1+
using Microsoft.Extensions.Logging.Abstractions;
2+
using StackExchange.Redis.Configuration;
23
using System;
34
using System.Globalization;
45
using System.IO;
56
using System.IO.Pipelines;
67
using System.Linq;
78
using System.Net;
89
using System.Net.Sockets;
10+
using System.Reflection;
911
using System.Security.Authentication;
1012
using System.Text;
13+
using System.Text.RegularExpressions;
1114
using System.Threading;
1215
using System.Threading.Tasks;
13-
using Microsoft.Extensions.Logging.Abstractions;
1416
using Xunit;
1517
using Xunit.Abstractions;
1618

@@ -25,6 +27,33 @@ public ConfigTests(ITestOutputHelper output, SharedConnectionFixture fixture) :
2527
public Version DefaultVersion = new (3, 0, 0);
2628
public Version DefaultAzureVersion = new (4, 0, 0);
2729

30+
[Fact]
31+
public void ExpectedFields()
32+
{
33+
// if this test fails: check that you've updated ConfigurationOptions.Clone(), then: fix the test!
34+
// this is simple but pragmatic "have you considered?" check
35+
36+
var fields = Array.ConvertAll(typeof(ConfigurationOptions).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance),
37+
x => Regex.Replace(x.Name, """<(\w+)>k__BackingField""", "$1"));
38+
Array.Sort(fields);
39+
Assert.Equal(new[] {
40+
"abortOnConnectFail", "allowAdmin", "asyncTimeout", "backlogPolicy", "BeforeSocketConnect",
41+
"CertificateSelection", "CertificateValidation", "ChannelPrefix",
42+
"checkCertificateRevocation", "ClientName", "commandMap",
43+
"configChannel", "configCheckSeconds", "connectRetry",
44+
"connectTimeout", "DefaultDatabase", "defaultOptions",
45+
"defaultVersion", "EndPoints", "heartbeatConsistencyChecks",
46+
"heartbeatInterval", "includeDetailInExceptions", "includePerformanceCountersInExceptions",
47+
"keepAlive", "LibraryName", "loggerFactory",
48+
"password", "Protocol", "proxy",
49+
"reconnectRetryPolicy", "resolveDns", "responseTimeout",
50+
"ServiceName", "setClientLibrary", "SocketManager",
51+
"ssl", "sslHost", "SslProtocols",
52+
"syncTimeout", "tieBreaker", "Tunnel",
53+
"user"
54+
}, fields);
55+
}
56+
2857
[Fact]
2958
public void SslProtocols_SingleValue()
3059
{

0 commit comments

Comments
 (0)