@@ -102,39 +102,59 @@ func TestCertinfo_GetRootCertsFromString(t *testing.T) {
102102}
103103
104104func TestCertinfo_GetCertsFromBundle (t * testing.T ) {
105- t .Run ("FileReadErrors" , func (t * testing.T ) {
106- t .Parallel ()
107-
108- _ , errEmptyString := GetCertsFromBundle (
109- emptyString ,
110- inputReader ,
111- )
112- require .Error (t , errEmptyString )
113- assert .Equal (t ,
114- "empty string provided as certBundlePath" ,
115- errEmptyString .Error (),
116- )
105+ readErrorTests := []struct {
106+ desc string
107+ certPath string
108+ reader Reader
109+ expectedMsg string
110+ }{
111+ {
112+ desc : "emptyString" ,
113+ certPath : emptyString ,
114+ reader : inputReader ,
115+ expectedMsg : "empty string provided as certBundlePath" ,
116+ },
117+ {
118+ desc : "unreadableFile" ,
119+ certPath : unreadableFile ,
120+ reader : mockErrReader ,
121+ expectedMsg : "error reading certificate file: unable to read file testdata/unreadable-file.txt" ,
122+ },
123+ {
124+ desc : "wrong file" ,
125+ certPath : RSACaCertKeyFile ,
126+ reader : inputReader ,
127+ expectedMsg : "no valid certificates found in file " + RSACaCertKeyFile ,
128+ },
129+ {
130+ desc : "nil Reader" ,
131+ certPath : RSACaCertFile ,
132+ reader : nil ,
133+ expectedMsg : "nil Reader provided" ,
134+ },
135+ {
136+ desc : "broken cert file" ,
137+ certPath : RSASamplePKCS8BrokenCertificate ,
138+ reader : inputReader ,
139+ expectedMsg : "error parsing certificate: x509: inner and outer signature algorithm identifiers don't match" ,
140+ },
141+ }
117142
118- _ , errNoRead := GetCertsFromBundle (
119- unreadableFile ,
120- mockErrReader ,
121- )
122- require .Error (t , errNoRead )
123- assert .Equal (t ,
124- "error reading certificate file: unable to read file testdata/unreadable-file.txt" ,
125- errNoRead .Error (),
126- )
143+ for _ , tt := range readErrorTests {
144+ t .Run ("Read error " + tt .desc , func (t * testing.T ) {
145+ t .Parallel ()
127146
128- _ , errWrongFile := GetCertsFromBundle (
129- RSACaCertKeyFile ,
130- inputReader ,
131- )
132- require .Error (t , errWrongFile )
133- assert .Equal (t ,
134- "no valid certificates found in file " + RSACaCertKeyFile ,
135- errWrongFile .Error (),
136- )
137- })
147+ _ , err := GetCertsFromBundle (
148+ tt .certPath ,
149+ tt .reader ,
150+ )
151+ require .Error (t , err )
152+ assert .Equal (t ,
153+ tt .expectedMsg ,
154+ err .Error (),
155+ )
156+ })
157+ }
138158
139159 t .Run ("CertImportValidation" , func (t * testing.T ) {
140160 gotCerts , errCaString := GetCertsFromBundle (
@@ -152,15 +172,6 @@ func TestCertinfo_GetCertsFromBundle(t *testing.T) {
152172 )
153173 }
154174 })
155-
156- t .Run ("nil Reader error" , func (t * testing.T ) {
157- _ , err := GetCertsFromBundle (
158- RSACaCertFile ,
159- nil ,
160- )
161- require .Error (t , err )
162- require .EqualError (t , err , "nil Reader provided" )
163- })
164175}
165176
166177func TestCertinfo_GetKeyFromFile_inputReaderErrors (t * testing.T ) {
@@ -447,11 +458,25 @@ func TestCertinfo_getPassphraseIfNeeded(t *testing.T) {
447458}
448459
449460func TestCertinfo_certMatchPrivateKey_matchFalse (t * testing.T ) {
461+ uncompleteCert := x509.Certificate {
462+ IsCA : false ,
463+ }
464+
450465 matchFalseTests := []struct {
451- desc string
452- cert * x509.Certificate
453- key crypto.PrivateKey
466+ desc string
467+ cert * x509.Certificate
468+ key crypto.PrivateKey
469+ expectErr bool
470+ expectMsg string
454471 }{
472+ {
473+ desc : "uncomplete cert" ,
474+ cert : & uncompleteCert ,
475+ key : RSASampleCertKey ,
476+ expectErr : true ,
477+ expectMsg : "unsupported public key type in certificate" ,
478+ },
479+
455480 {
456481 desc : "key cert mismatch" ,
457482 cert : RSACaCertParent ,
@@ -475,8 +500,15 @@ func TestCertinfo_certMatchPrivateKey_matchFalse(t *testing.T) {
475500 tt .cert ,
476501 tt .key ,
477502 )
478- require .NoError (t , err )
479- assert .False (t , match )
503+ if ! tt .expectErr {
504+ require .NoError (t , err )
505+ assert .False (t , match )
506+ }
507+
508+ if tt .expectErr {
509+ require .Error (t , err )
510+ require .EqualError (t , err , tt .expectMsg )
511+ }
480512 })
481513 }
482514}
0 commit comments