From 97235ff3992b83a0232b1bada742dda537382fea Mon Sep 17 00:00:00 2001 From: Thom Carlin Date: Thu, 11 Apr 2024 04:34:13 -0400 Subject: [PATCH] Add load certificate request test (#989) --- pkg/certificates/ca.go | 4 +- pkg/certificates/ca_test.go | 89 ++++++++++++++++++++++++++++++++++++- pkg/certificates/cli.go | 2 +- 3 files changed, 90 insertions(+), 5 deletions(-) diff --git a/pkg/certificates/ca.go b/pkg/certificates/ca.go index 1469481f3..b0b5a7321 100644 --- a/pkg/certificates/ca.go +++ b/pkg/certificates/ca.go @@ -205,8 +205,8 @@ func LoadCertificate(filename string, osWrapper Oser) (*x509.Certificate, error) } // LoadRequest loads a single certificate request from a file. -func LoadRequest(filename string) (*x509.CertificateRequest, error) { - data, err := LoadFromPEMFile(filename, &OsWrapper{}) +func LoadRequest(filename string, osWrapper Oser) (*x509.CertificateRequest, error) { + data, err := LoadFromPEMFile(filename, osWrapper) if err != nil { return nil, err } diff --git a/pkg/certificates/ca_test.go b/pkg/certificates/ca_test.go index 738879ae0..ba19a5de5 100644 --- a/pkg/certificates/ca_test.go +++ b/pkg/certificates/ca_test.go @@ -1341,7 +1341,7 @@ func TestLoadPublicKey(t *testing.T) { wantErr bool }{ { - name: "Positive Private Key", + name: "Positive Public Key", args: args{ filename: positivePublicKeyFilename, }, @@ -1361,7 +1361,7 @@ func TestLoadPublicKey(t *testing.T) { wantErr: true, }, { - name: "Negative no private key test", + name: "Negative no public key test", args: args{ filename: negativeNoPublicKeyFilename, }, @@ -1396,3 +1396,88 @@ func TestLoadPublicKey(t *testing.T) { }) } } + +func TestLoadRequest(t *testing.T) { + type args struct { + filename string + } + errorSettingUpTypeFormatString := "Error setting up %s: %v" + + positiveRequestFilename := "request_test_filename" + goodRequest, err := setupGoodCertificateRequest() + if err != nil { + t.Errorf(errorSettingUpTypeFormatString, "request", err) + } + + negativeMultipleItemFilename := "negative_multiple_item_test" + multipleRequests := setupGoodCertificateRequestPEMData() + multipleRequests = append(multipleRequests, multipleRequests[0]) + + negativeNoRequestFilename := "negative_no_request_test" + noRequest := []byte{ + 0, 0, 0, 0, + } + + tests := []struct { + name string + args args + wantOserReadfileArg string + wantOserReadfileResult []byte + want *x509.CertificateRequest + wantErr bool + }{ + { + name: "Positive Request", + args: args{ + filename: positiveRequestFilename, + }, + wantOserReadfileArg: positiveRequestFilename, + wantOserReadfileResult: setupGoodCertificateRequestPEMData(), + want: goodRequest, + wantErr: false, + }, + { + name: "Negative multi item test", + args: args{ + filename: negativeMultipleItemFilename, + }, + wantOserReadfileArg: negativeMultipleItemFilename, + wantOserReadfileResult: multipleRequests, + want: nil, + wantErr: true, + }, + { + name: "Negative no request test", + args: args{ + filename: negativeNoRequestFilename, + }, + wantOserReadfileArg: negativeNoRequestFilename, + wantOserReadfileResult: noRequest, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + o := mock_certificates.NewMockOser(ctrl) + o. + EXPECT(). + ReadFile(gomock.Eq(tt.wantOserReadfileArg)). + Return(tt.wantOserReadfileResult, nil). + Times(1) + + got, err := certificates.LoadRequest(tt.args.filename, o) + if (err != nil) != tt.wantErr { + t.Errorf("LoadRequest() error = %v, wantErr %v", err, tt.wantErr) + + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("LoadRequest() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/pkg/certificates/cli.go b/pkg/certificates/cli.go index 2b4e7ca27..cbc73712e 100644 --- a/pkg/certificates/cli.go +++ b/pkg/certificates/cli.go @@ -163,7 +163,7 @@ func SignReq(opts *CertOptions, caCrtPath, caKeyPath, reqPath, certOut string, v return err } var req *x509.CertificateRequest - req, err = LoadRequest(reqPath) + req, err = LoadRequest(reqPath, &OsWrapper{}) if err != nil { return err }