Skip to content

Commit f85aa55

Browse files
Merged PR 4029: [5.1.2] Fix | Adding non-string support to SqlConnectionStringBuilder property indexer
Ports [#2018](#2018)
1 parent c5dc895 commit f85aa55

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

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

+8
Original file line numberDiff line numberDiff line change
@@ -816,10 +816,18 @@ internal static SqlConnectionEncryptOption ConvertToSqlConnectionEncryptOption(s
816816
{
817817
return DbConnectionStringDefaults.Encrypt;
818818
}
819+
else if(value is SqlConnectionEncryptOption eValue)
820+
{
821+
return eValue;
822+
}
819823
else if (value is string sValue)
820824
{
821825
return SqlConnectionEncryptOption.Parse(sValue);
822826
}
827+
else if(value is bool bValue)
828+
{
829+
return SqlConnectionEncryptOption.Parse(bValue);
830+
}
823831

824832
throw ADP.InvalidConnectionOptionValue(keyword);
825833
}

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionEncryptOption.cs

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ public static SqlConnectionEncryptOption Parse(string value)
4545
}
4646
}
4747

48+
internal static SqlConnectionEncryptOption Parse(bool value)
49+
{
50+
return value ? Mandatory : Optional;
51+
}
52+
4853
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlConnectionEncryptOption.xml' path='docs/members[@name="SqlConnectionEncryptOption"]/TryParse/*' />
4954
public static bool TryParse(string value, out SqlConnectionEncryptOption result)
5055
{

src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionStringBuilderTest.cs

+30-2
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public void SetInvalidPacketSize_Throws(int invalid)
260260
}
261261

262262
[Theory]
263-
[InlineData("AttachDBFilename","somefile.db")]
263+
[InlineData("AttachDBFilename", "somefile.db")]
264264
public void SetKeyword(string keyword, string value)
265265
{
266266
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
@@ -387,7 +387,7 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
387387
builder.Encrypt = false;
388388
Assert.Equal("Encrypt=False", builder.ConnectionString);
389389
Assert.False(builder.Encrypt);
390-
390+
391391
builder.Encrypt = true;
392392
Assert.Equal("Encrypt=True", builder.ConnectionString);
393393
Assert.True(builder.Encrypt);
@@ -409,6 +409,18 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
409409
Assert.True(builder.Encrypt);
410410
}
411411

412+
[Fact]
413+
public void EncryptParserValidValuesPropertyIndexerForEncryptionOption()
414+
{
415+
SqlConnectionStringBuilder builder = new();
416+
builder["Encrypt"] = SqlConnectionEncryptOption.Strict;
417+
CheckEncryptType(builder, SqlConnectionEncryptOption.Strict);
418+
builder["Encrypt"] = SqlConnectionEncryptOption.Optional;
419+
CheckEncryptType(builder, SqlConnectionEncryptOption.Optional);
420+
builder["Encrypt"] = SqlConnectionEncryptOption.Mandatory;
421+
CheckEncryptType(builder, SqlConnectionEncryptOption.Mandatory);
422+
}
423+
412424
[Theory]
413425
[InlineData("true", "True")]
414426
[InlineData("mandatory", "True")]
@@ -420,6 +432,16 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
420432
public void EncryptParserValidValuesParsesSuccessfully(string value, string expectedValue)
421433
=> Assert.Equal(expectedValue, SqlConnectionEncryptOption.Parse(value).ToString());
422434

435+
[Theory]
436+
[InlineData(true)]
437+
[InlineData(false)]
438+
public void EncryptParserValidValuesPropertyIndexerForBoolean(bool value)
439+
{
440+
SqlConnectionStringBuilder builder = new();
441+
builder["Encrypt"] = value;
442+
CheckEncryptType(builder, value ? SqlConnectionEncryptOption.Mandatory : SqlConnectionEncryptOption.Optional);
443+
}
444+
423445
[Theory]
424446
[InlineData("something")]
425447
[InlineData("")]
@@ -627,5 +649,11 @@ internal void ExecuteConnectionStringTests(string connectionString)
627649
Assert.NotNull(connection);
628650
}
629651
}
652+
653+
internal static void CheckEncryptType(SqlConnectionStringBuilder builder, SqlConnectionEncryptOption expectedValue)
654+
{
655+
Assert.IsType<SqlConnectionEncryptOption>(builder.Encrypt);
656+
Assert.Equal(expectedValue, builder.Encrypt);
657+
}
630658
}
631659
}

0 commit comments

Comments
 (0)