Skip to content

Commit aa03950

Browse files
Remove Linq + validator updates
1 parent 6a390fe commit aa03950

File tree

4 files changed

+87
-15
lines changed

4 files changed

+87
-15
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/Common/DbConnectionStringCommon.cs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ internal static string ConvertToString(object value)
9898

9999
private const string ApplicationIntentReadWriteString = "ReadWrite";
100100
private const string ApplicationIntentReadOnlyString = "ReadOnly";
101+
const string NotSpecifiedString = "Not Specified";
101102
const string SqlPasswordString = "Sql Password";
102103
const string ActiveDirectoryPasswordString = "Active Directory Password";
103104
const string ActiveDirectoryIntegratedString = "Active Directory Integrated";
@@ -108,12 +109,41 @@ internal static string ConvertToString(object value)
108109
internal const string ActiveDirectoryMSIString = "Active Directory MSI";
109110
internal const string ActiveDirectoryDefaultString = "Active Directory Default";
110111

112+
private static bool IsValidAuthenticationMethodEnum()
113+
{
114+
string[] names = Enum.GetNames(typeof(SqlAuthenticationMethod));
115+
string[] supportedList =
116+
{
117+
NotSpecifiedString,
118+
SqlPasswordString,
119+
ActiveDirectoryPasswordString,
120+
ActiveDirectoryIntegratedString,
121+
ActiveDirectoryInteractiveString,
122+
ActiveDirectoryServicePrincipalString,
123+
ActiveDirectoryDeviceCodeFlowString,
124+
ActiveDirectoryManagedIdentityString,
125+
ActiveDirectoryMSIString,
126+
ActiveDirectoryDefaultString
127+
};
128+
bool listValid;
129+
if (listValid = names.Length == supportedList.Length)
130+
{
131+
for (int i = 0; i < supportedList.Length; i++)
132+
{
133+
if (supportedList[i].CompareTo(names[i]) == 0)
134+
{
135+
listValid = false;
136+
}
137+
}
138+
}
139+
return listValid;
140+
}
141+
111142
internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result)
112143
{
113-
Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 10, "SqlAuthenticationMethod enum has changed, update needed");
144+
Debug.Assert(IsValidAuthenticationMethodEnum(), "SqlAuthenticationMethod enum has changed, update needed");
114145

115146
bool isSuccess = false;
116-
117147
if (StringComparer.InvariantCultureIgnoreCase.Equals(value, SqlPasswordString)
118148
|| StringComparer.InvariantCultureIgnoreCase.Equals(value, Convert.ToString(SqlAuthenticationMethod.SqlPassword, CultureInfo.InvariantCulture)))
119149
{
@@ -508,7 +538,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj
508538

509539
internal static bool IsValidAuthenticationTypeValue(SqlAuthenticationMethod value)
510540
{
511-
Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 9, "SqlAuthenticationMethod enum has changed, update needed");
541+
Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 10, "SqlAuthenticationMethod enum has changed, update needed");
512542
return value == SqlAuthenticationMethod.SqlPassword
513543
|| value == SqlAuthenticationMethod.ActiveDirectoryPassword
514544
|| value == SqlAuthenticationMethod.ActiveDirectoryIntegrated

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DbConnectionStringCommon.cs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,7 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj
516516
}
517517
}
518518

519+
const string NotSpecifiedString = "Not Specified";
519520
const string SqlPasswordString = "Sql Password";
520521
const string ActiveDirectoryPasswordString = "Active Directory Password";
521522
const string ActiveDirectoryIntegratedString = "Active Directory Integrated";
@@ -525,11 +526,41 @@ internal static ApplicationIntent ConvertToApplicationIntent(string keyword, obj
525526
internal const string ActiveDirectoryManagedIdentityString = "Active Directory Managed Identity";
526527
internal const string ActiveDirectoryMSIString = "Active Directory MSI";
527528
internal const string ActiveDirectoryDefaultString = "Active Directory Default";
528-
const string SqlCertificateString = "Sql Certificate";
529+
// const string SqlCertificateString = "Sql Certificate";
530+
531+
private static bool IsValidAuthenticationMethodEnum()
532+
{
533+
string[] names = Enum.GetNames(typeof(SqlAuthenticationMethod));
534+
string[] supportedList =
535+
{
536+
NotSpecifiedString,
537+
SqlPasswordString,
538+
ActiveDirectoryPasswordString,
539+
ActiveDirectoryIntegratedString,
540+
ActiveDirectoryInteractiveString,
541+
ActiveDirectoryServicePrincipalString,
542+
ActiveDirectoryDeviceCodeFlowString,
543+
ActiveDirectoryManagedIdentityString,
544+
ActiveDirectoryMSIString,
545+
ActiveDirectoryDefaultString
546+
};
547+
bool listValid;
548+
if (listValid = names.Length == supportedList.Length)
549+
{
550+
for (int i = 0; i < supportedList.Length; i++)
551+
{
552+
if (supportedList[i].CompareTo(names[i]) == 0)
553+
{
554+
listValid = false;
555+
}
556+
}
557+
}
558+
return listValid;
559+
}
529560

530561
internal static bool TryConvertToAuthenticationType(string value, out SqlAuthenticationMethod result)
531562
{
532-
Debug.Assert(Enum.GetNames(typeof(SqlAuthenticationMethod)).Length == 10, "SqlAuthenticationMethod enum has changed, update needed");
563+
Debug.Assert(IsValidAuthenticationMethodEnum(), "SqlAuthenticationMethod enum has changed, update needed");
533564

534565
bool isSuccess = false;
535566

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
using System;
66
using System.Collections.Concurrent;
7-
using System.Linq;
87
using System.Security;
98
using System.Threading;
109
using System.Threading.Tasks;
@@ -215,15 +214,28 @@ public override async Task<SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenti
215214
parameters.AuthenticationMethod == SqlAuthenticationMethod.ActiveDirectoryDeviceCodeFlow)
216215
{
217216
// Fetch available accounts from 'app' instance
218-
System.Collections.Generic.IEnumerable<IAccount> accounts = await app.GetAccountsAsync();
219-
IAccount account;
220-
if (!string.IsNullOrEmpty(parameters.UserId))
217+
System.Collections.Generic.IEnumerator<IAccount> accounts = (await app.GetAccountsAsync()).GetEnumerator();
218+
219+
IAccount account = default;
220+
if (accounts.MoveNext())
221221
{
222-
account = accounts.FirstOrDefault(a => parameters.UserId.Equals(a.Username, StringComparison.InvariantCultureIgnoreCase));
223-
}
224-
else
225-
{
226-
account = accounts.FirstOrDefault();
222+
if (!string.IsNullOrEmpty(parameters.UserId))
223+
{
224+
do
225+
{
226+
IAccount currentVal = accounts.Current;
227+
if (string.Compare(parameters.UserId, currentVal.Username, StringComparison.InvariantCultureIgnoreCase) == 0)
228+
{
229+
account = currentVal;
230+
break;
231+
}
232+
}
233+
while (accounts.MoveNext());
234+
}
235+
else
236+
{
237+
account = accounts.Current;
238+
}
227239
}
228240

229241
if (null != account)

src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/AADConnectionTest.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,6 @@ public static void ActiveDirectoryDefaultWithPasswordMustFail()
465465
[ConditionalFact(nameof(IsAADConnStringsSetup))]
466466
public static void ActiveDirectoryDefaultMustPass()
467467
{
468-
// connection fails with expected error message.
469468
string[] credKeys = { "Authentication", "User ID", "Password", "UID", "PWD" };
470469
string connStr = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys) +
471470
"Authentication=ActiveDirectoryDefault;";

0 commit comments

Comments
 (0)