Skip to content

Commit 6aa514e

Browse files
MichelZbenrr101
authored andcommitted
Improve certificate tests by checking IsAdmin outside the constructor
1 parent ff1b299 commit 6aa514e

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/CspProviderExt.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests.AlwaysEncrypted
2525
[PlatformSpecific(TestPlatforms.Windows)]
2626
public class CspProviderExt
2727
{
28-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
28+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE), nameof(DataTestUtility.IsAdmin))]
2929
[ClassData(typeof(AEConnectionStringProvider))]
3030
public void TestKeysFromCertificatesCreatedWithMultipleCryptoProviders(string connectionString)
3131
{

src/Microsoft.Data.SqlClient/tests/ManualTests/DataCommon/DataTestUtility.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public static class DataTestUtility
9494
//SQL Server EngineEdition
9595
private static string s_sqlServerEngineEdition;
9696

97-
// JSON Coloumn type
97+
// JSON Column type
9898
public static readonly bool IsJsonSupported = false;
9999

100100
// Azure Synapse EngineEditionId == 6
@@ -107,8 +107,8 @@ public static bool IsAzureSynapse
107107
{
108108
s_sqlServerEngineEdition ??= GetSqlServerProperty(TCPConnectionString, "EngineEdition");
109109
}
110-
_ = int.TryParse(s_sqlServerEngineEdition, out int engineEditon);
111-
return engineEditon == 6;
110+
_ = int.TryParse(s_sqlServerEngineEdition, out int engineEdition);
111+
return engineEdition == 6;
112112
}
113113
}
114114

@@ -457,6 +457,11 @@ public static bool IsNotAzureServer()
457457
return !AreConnStringsSetup() || !Utils.IsAzureSqlServer(new SqlConnectionStringBuilder((TCPConnectionString)).DataSource);
458458
}
459459

460+
public static bool IsNotNamedInstance()
461+
{
462+
return !AreConnStringsSetup() || !new SqlConnectionStringBuilder(TCPConnectionString).DataSource.Contains(@"\");
463+
}
464+
460465
// Synapse: Always Encrypted is not supported with Azure Synapse.
461466
// Ref: https://feedback.azure.com/forums/307516-azure-synapse-analytics/suggestions/17858869-support-always-encrypted-in-sql-data-warehouse
462467
public static bool IsAKVSetupAvailable()

src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectionTestWithSSLCert/CertificateTest.cs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
namespace Microsoft.Data.SqlClient.ManualTesting.Tests
2020
{
21+
[PlatformSpecific(TestPlatforms.Windows)]
2122
public class CertificateTest : IDisposable
2223
{
2324
#region Private Fields
@@ -75,10 +76,11 @@ public CertificateTest()
7576
SlashInstanceName = $"\\{InstanceName}";
7677
}
7778

78-
Assert.True(DataTestUtility.IsAdmin, "CertificateTest class needs to be run in Admin mode.");
79-
80-
CreateValidCertificate(s_fullPathToPowershellScript);
81-
_thumbprint = Environment.GetEnvironmentVariable(ThumbPrintEnvName, EnvironmentVariableTarget.Machine);
79+
if (IsAdmin())
80+
{
81+
CreateValidCertificate(s_fullPathToPowershellScript);
82+
_thumbprint = Environment.GetEnvironmentVariable(ThumbPrintEnvName, EnvironmentVariableTarget.Machine);
83+
}
8284
}
8385

8486
private static bool IsLocalHost()
@@ -91,17 +93,16 @@ private static bool IsLocalHost()
9193
private static bool AreConnStringsSetup() => DataTestUtility.AreConnStringsSetup();
9294
private static bool IsNotAzureServer() => DataTestUtility.IsNotAzureServer();
9395
private static bool UseManagedSNIOnWindows() => DataTestUtility.UseManagedSNIOnWindows;
96+
private static bool IsAdmin() => DataTestUtility.IsAdmin;
9497

95-
[ActiveIssue("31754")]
96-
[ConditionalFact(nameof(AreConnStringsSetup), nameof(IsNotAzureServer), nameof(IsLocalHost))]
97-
[PlatformSpecific(TestPlatforms.Windows)]
98-
public void OpenningConnectionWithGoodCertificateTest()
98+
[ConditionalFact(nameof(AreConnStringsSetup), nameof(IsNotAzureServer), nameof(IsLocalHost), nameof(IsAdmin))]
99+
public void OpeningConnectionWithGoodCertificateTest()
99100
{
100101
SqlConnectionStringBuilder builder = new(DataTestUtility.TCPConnectionString);
101102

102103
// confirm that ForceEncryption is enabled
103-
using SqlConnection notEncryptedConnection = new(builder.ConnectionString);
104104
builder.Encrypt = SqlConnectionEncryptOption.Optional;
105+
using SqlConnection notEncryptedConnection = new(builder.ConnectionString);
105106
notEncryptedConnection.Open();
106107
Assert.Equal(ConnectionState.Open, notEncryptedConnection.State);
107108

@@ -122,9 +123,7 @@ public void OpenningConnectionWithGoodCertificateTest()
122123

123124
// Provided hostname in certificate are:
124125
// localhost, FQDN, Loopback IPv4: 127.0.0.1, IPv6: ::1
125-
[ActiveIssue("31754")]
126-
[ConditionalFact(nameof(AreConnStringsSetup), nameof(IsNotAzureServer), nameof(IsLocalHost))]
127-
[PlatformSpecific(TestPlatforms.Windows)]
126+
[ConditionalFact(nameof(AreConnStringsSetup), nameof(IsNotAzureServer), nameof(IsLocalHost), nameof(IsAdmin))]
128127
public void OpeningConnectionWitHNICTest()
129128
{
130129
// Mandatory
@@ -142,8 +141,8 @@ public void OpeningConnectionWitHNICTest()
142141
connection.Open();
143142
Assert.Equal(ConnectionState.Open, connection.State);
144143

145-
// Ipv6 however causes name mistmatch error
146-
// In net6 Manged SNI does not check for SAN. Therefore Application using Net6 have to use FQDN as HNIC
144+
// Ipv6 however causes name mismatch error
145+
// In net6 Manged SNI does not check for SAN. Therefor Application using Net6 have to use FQDN as HNIC
147146
// According to above no other hostname in certificate than FQDN will work in net6 which is same as SubjectName in case of RemoteCertificateNameMismatch
148147
// Net7.0 the new API added by dotnet runtime will check SANS and then SubjectName
149148

@@ -167,8 +166,7 @@ public void OpeningConnectionWitHNICTest()
167166
}
168167

169168
[ActiveIssue("31754")]
170-
[ConditionalFact(nameof(AreConnStringsSetup), nameof(UseManagedSNIOnWindows), nameof(IsNotAzureServer), nameof(IsLocalHost))]
171-
[PlatformSpecific(TestPlatforms.Windows)]
169+
[ConditionalFact(nameof(AreConnStringsSetup), nameof(UseManagedSNIOnWindows), nameof(IsNotAzureServer), nameof(IsLocalHost), nameof(IsAdmin))]
172170
public void RemoteCertificateNameMismatchErrorTest()
173171
{
174172
SqlConnectionStringBuilder builder = new(DataTestUtility.TCPConnectionString)

0 commit comments

Comments
 (0)