2424 ******************************************************************************/
2525
2626
27+ using System . Security . Cryptography . X509Certificates ;
2728using System . Text ;
2829using dummy_http_server ;
2930using NUnit . Framework ;
@@ -1624,4 +1625,47 @@ await sender.Table("table name")
16241625 // ReSharper disable once DisposeOnUsingVariable
16251626 srv . Dispose ( ) ;
16261627 }
1627- }
1628+
1629+ [ Test ]
1630+ public async Task SendWithCert ( )
1631+ {
1632+ #if NET9_0_OR_GREATER
1633+ using var cert = X509CertificateLoader . LoadPkcs12FromFile ( "certificate.pfx" , null ) ;
1634+ #else
1635+ using var cert = new X509Certificate2 ( "certificate.pfx" , ( string ? ) null ) ;
1636+ #endif
1637+
1638+ Assert . NotNull ( cert ) ;
1639+
1640+ using var server = new DummyHttpServer ( requireClientCert : true ) ;
1641+ await server . StartAsync ( HttpsPort ) ;
1642+ using var sender = Sender . Configure ( $ "https::addr=localhost:{ HttpsPort } ;tls_verify=unsafe_off;")
1643+ . WithClientCert ( cert )
1644+ . Build ( ) ;
1645+
1646+ await sender . Table ( "metrics" )
1647+ . Symbol ( "tag" , "value" )
1648+ . Column ( "number" , 12.2 )
1649+ . AtAsync ( new DateTime ( 1970 , 01 , 01 , 0 , 0 , 1 ) ) ;
1650+
1651+ await sender . SendAsync ( ) ;
1652+ Assert . That (
1653+ server . PrintBuffer ( ) ,
1654+ Is . EqualTo ( "metrics,tag=value number=12.2 1000000000\n " ) ) ;
1655+ await server . StopAsync ( ) ;
1656+ }
1657+
1658+ [ Test ]
1659+ public async Task FailsWhenExpectingCert ( )
1660+ {
1661+ using var server = new DummyHttpServer ( requireClientCert : true ) ;
1662+ await server . StartAsync ( HttpsPort ) ;
1663+
1664+ Assert . That (
1665+ ( ) => Sender . Configure ( $ "https::addr=localhost:{ HttpsPort } ;tls_verify=unsafe_off;") . Build ( ) ,
1666+ Throws . TypeOf < IngressError > ( ) . With . Message . Contains ( "ServerFlushError" )
1667+ ) ;
1668+
1669+ await server . StopAsync ( ) ;
1670+ }
1671+ }
0 commit comments