Skip to content

Commit 5d5ac7d

Browse files
author
Javad
authored
Fix | Adding non-string support to SqlConnectionStringBuilder property indexer (#2018)
1 parent 141aa41 commit 5d5ac7d

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

Lines changed: 8 additions & 0 deletions
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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ public static SqlConnectionEncryptOption Parse(string value)
4343
}
4444
}
4545

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

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

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public void SetInvalidPacketSize_Throws(int invalid)
253253
}
254254

255255
[Theory]
256-
[InlineData("AttachDBFilename","somefile.db")]
256+
[InlineData("AttachDBFilename", "somefile.db")]
257257
public void SetKeyword(string keyword, string value)
258258
{
259259
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
@@ -380,7 +380,7 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
380380
builder.Encrypt = false;
381381
Assert.Equal("Encrypt=False", builder.ConnectionString);
382382
Assert.False(builder.Encrypt);
383-
383+
384384
builder.Encrypt = true;
385385
Assert.Equal("Encrypt=True", builder.ConnectionString);
386386
Assert.True(builder.Encrypt);
@@ -402,6 +402,18 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
402402
Assert.True(builder.Encrypt);
403403
}
404404

405+
[Fact]
406+
public void EncryptParserValidValuesPropertyIndexerForEncryptionOption()
407+
{
408+
SqlConnectionStringBuilder builder = new();
409+
builder["Encrypt"] = SqlConnectionEncryptOption.Strict;
410+
CheckEncryptType(builder, SqlConnectionEncryptOption.Strict);
411+
builder["Encrypt"] = SqlConnectionEncryptOption.Optional;
412+
CheckEncryptType(builder, SqlConnectionEncryptOption.Optional);
413+
builder["Encrypt"] = SqlConnectionEncryptOption.Mandatory;
414+
CheckEncryptType(builder, SqlConnectionEncryptOption.Mandatory);
415+
}
416+
405417
[Theory]
406418
[InlineData("true", "True")]
407419
[InlineData("mandatory", "True")]
@@ -413,6 +425,16 @@ public void ConnectionBuilderEncryptBackwardsCompatibility()
413425
public void EncryptParserValidValuesParsesSuccessfully(string value, string expectedValue)
414426
=> Assert.Equal(expectedValue, SqlConnectionEncryptOption.Parse(value).ToString());
415427

428+
[Theory]
429+
[InlineData(true)]
430+
[InlineData(false)]
431+
public void EncryptParserValidValuesPropertyIndexerForBoolean(bool value)
432+
{
433+
SqlConnectionStringBuilder builder = new();
434+
builder["Encrypt"] = value;
435+
CheckEncryptType(builder, value ? SqlConnectionEncryptOption.Mandatory : SqlConnectionEncryptOption.Optional);
436+
}
437+
416438
[Theory]
417439
[InlineData("something")]
418440
[InlineData("")]
@@ -467,5 +489,11 @@ internal void ExecuteConnectionStringTests(string connectionString)
467489
Assert.NotNull(connection);
468490
}
469491
}
492+
493+
internal static void CheckEncryptType(SqlConnectionStringBuilder builder, SqlConnectionEncryptOption expectedValue)
494+
{
495+
Assert.IsType<SqlConnectionEncryptOption>(builder.Encrypt);
496+
Assert.Equal(expectedValue, builder.Encrypt);
497+
}
470498
}
471499
}

0 commit comments

Comments
 (0)