22// The .NET Foundation licenses this file to you under the MIT license.
33// See the LICENSE file in the project root for more information.
44
5+ using System ;
6+ using System . Buffers ;
57using System . Collections ;
68using System . Collections . Generic ;
79using Xunit ;
@@ -24,6 +26,43 @@ public void IsKerBerosSetupTestAsync(string connectionStr)
2426 Assert . True ( reader . Read ( ) , "Expected to receive one row data" ) ;
2527 Assert . Equal ( "KERBEROS" , reader . GetString ( 0 ) ) ;
2628 }
29+
30+ [ PlatformSpecific ( TestPlatforms . AnyUnix ) ]
31+ [ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . IsKerberosTest ) ) ]
32+ [ ClassData ( typeof ( ConnectionStringsProvider ) ) ]
33+ public void CustomSspiContextGeneratorTest ( string connectionStr )
34+ {
35+ KerberosTicketManagemnt . Init ( DataTestUtility . KerberosDomainUser , DataTestUtility . KerberosDomainPassword ) ;
36+
37+ using SqlConnection conn = new ( connectionStr )
38+ {
39+ SspiContextProvider = new TestSspiContextProvider ( ) ,
40+ } ;
41+
42+ try
43+ {
44+ conn . Open ( ) ;
45+ using SqlCommand command = new ( "SELECT auth_scheme from sys.dm_exec_connections where session_id = @@spid" , conn ) ;
46+ using SqlDataReader reader = command . ExecuteReader ( ) ;
47+
48+ Assert . Fail ( "Expected to use custom SSPI context provider" ) ;
49+ }
50+ catch ( SspiTestException )
51+ {
52+ }
53+ }
54+
55+ private sealed class TestSspiContextProvider : SspiContextProvider
56+ {
57+ protected override bool GenerateContext ( ReadOnlySpan < byte > incomingBlob , IBufferWriter < byte > outgoingBlobWriter , SspiAuthenticationParameters authParams )
58+ {
59+ throw new SspiTestException ( ) ;
60+ }
61+ }
62+
63+ private sealed class SspiTestException : Exception
64+ {
65+ }
2766 }
2867
2968 public class ConnectionStringsProvider : IEnumerable < object [ ] >
0 commit comments