@@ -1968,6 +1968,48 @@ func TestModifyTLSCertificates(t *testing.T) {
1968
1968
}
1969
1969
}
1970
1970
1971
+ func TestTLSRoundTripper_NoCAConfigured (t * testing.T ) {
1972
+ bs := getCertificateBlobs (t )
1973
+
1974
+ tmpDir , err := os .MkdirTemp ("" , "tlspanic" )
1975
+ require .NoErrorf (t , err , "Failed to create tmp dir" )
1976
+ defer os .RemoveAll (tmpDir )
1977
+ cert , key := filepath .Join (tmpDir , "cert" ), filepath .Join (tmpDir , "key" )
1978
+
1979
+ handler := func (w http.ResponseWriter , r * http.Request ) {
1980
+ fmt .Fprint (w , ExpectedMessage )
1981
+ }
1982
+ testServer , err := newTestServer (handler )
1983
+ require .NoError (t , err )
1984
+ defer testServer .Close ()
1985
+
1986
+ cfg := HTTPClientConfig {
1987
+ TLSConfig : TLSConfig {
1988
+ CertFile : cert ,
1989
+ KeyFile : key ,
1990
+ InsecureSkipVerify : true ,
1991
+ },
1992
+ }
1993
+
1994
+ writeCertificate (bs , ClientCertificatePath , cert )
1995
+ writeCertificate (bs , ClientKeyNoPassPath , key )
1996
+ c , err := NewClientFromConfig (cfg , "test" )
1997
+ require .NoErrorf (t , err , "Error creating HTTP Client: %v" , err )
1998
+
1999
+ req , err := http .NewRequest (http .MethodGet , testServer .URL , nil )
2000
+ require .NoErrorf (t , err , "Error creating HTTP request: %v" , err )
2001
+
2002
+ r , err := c .Do (req )
2003
+ require .NoErrorf (t , err , "Can't connect to the test server" )
2004
+ r .Body .Close ()
2005
+
2006
+ err = os .WriteFile (cert , []byte ("-----BEGIN GARBAGE-----\n abc\n -----END GARBAGE-----\n " ), 0o664 )
2007
+ require .NoError (t , err )
2008
+
2009
+ _ , err = c .Do (req )
2010
+ require .ErrorContainsf (t , err , "unable to use specified CA cert: none configured" , "Expected error to mention missing CA cert" )
2011
+ }
2012
+
1971
2013
// loadHTTPConfigJSON parses the JSON input s into a HTTPClientConfig.
1972
2014
func loadHTTPConfigJSON (buf []byte ) (* HTTPClientConfig , error ) {
1973
2015
cfg := & HTTPClientConfig {}
0 commit comments