feat: add more tests to increase coverage

This commit is contained in:
Urko 2023-03-03 22:44:57 +01:00
parent ef2112534c
commit bb9df2fe8d
4 changed files with 52 additions and 8 deletions

View File

@ -6,6 +6,7 @@ import (
"crypto/x509" "crypto/x509"
"crypto/x509/pkix" "crypto/x509/pkix"
"encoding/pem" "encoding/pem"
"errors"
"fmt" "fmt"
"time" "time"
@ -44,6 +45,10 @@ func newClientCert(config *client.ClientCertConfig, rootCA *x509.Certificate, ro
} }
block, _ := pem.Decode(rootKeyPEM) block, _ := pem.Decode(rootKeyPEM)
if block == nil {
return nil, nil, errors.New("pem.Decode")
}
caPrivKey, err := x509.ParsePKCS8PrivateKey(block.Bytes) caPrivKey, err := x509.ParsePKCS8PrivateKey(block.Bytes)
if err != nil { if err != nil {
return nil, nil, fmt.Errorf("x509.ParsePKCS8PrivateKey: %s", err) return nil, nil, fmt.Errorf("x509.ParsePKCS8PrivateKey: %s", err)

View File

@ -1,18 +1,36 @@
package cert package cert
import ( import (
"crypto/x509"
"testing" "testing"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"gitlab.com/urkob/go-cert-gen/pkg/client"
) )
func Test_newClientCert(t *testing.T) { func Test_newClientCert(t *testing.T) {
var config *client.ClientCertConfig ca, err := NewRootCA(&rootTestConfig)
var rootCA *x509.Certificate
var rootKeyPEM []byte
_, _, err := newClientCert(config, rootCA, rootKeyPEM)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, ca)
require.NotNil(t, ca.Key())
require.Greater(t, len(ca.Key()), 0)
require.NotNil(t, ca.PEM())
require.Greater(t, len(ca.PEM()), 0)
x509RootCA, err := parseCertificate(ca.PEM())
require.NoError(t, err)
pem, key, err := newClientCert(&clientTestConfig, x509RootCA, ca.Key())
require.NoError(t, err)
require.NotNil(t, pem)
require.Greater(t, len(pem), 0)
require.NotNil(t, key)
require.Greater(t, len(key), 0)
}
func Test_newClientCertErrr(t *testing.T) {
_, _, err := newClientCert(&clientTestConfig, nil, []byte{})
require.Error(t, err)
} }

View File

@ -8,6 +8,7 @@ import (
"crypto/x509" "crypto/x509"
"crypto/x509/pkix" "crypto/x509/pkix"
"encoding/pem" "encoding/pem"
"errors"
"fmt" "fmt"
"time" "time"
@ -52,6 +53,9 @@ func (r *rootCA) WithClientCert(config *client.ClientCertConfig) (client.ClientC
// Create a self-signed certificate. // Create a self-signed certificate.
func newRootCA(config *ca.CaConfig) ([]byte, []byte, error) { func newRootCA(config *ca.CaConfig) ([]byte, []byte, error) {
if config == nil {
return nil, nil, errors.New("ca.CaConfig config is nil")
}
priv, err := newPrivateKey() priv, err := newPrivateKey()
if err != nil { if err != nil {
return nil, nil, fmt.Errorf("newPrivateKey: %s", err) return nil, nil, fmt.Errorf("newPrivateKey: %s", err)

View File

@ -1,6 +1,7 @@
package cert package cert
import ( import (
"crypto/ecdsa"
"crypto/elliptic" "crypto/elliptic"
"crypto/x509" "crypto/x509"
"math/big" "math/big"
@ -52,7 +53,7 @@ func Test_newPrivateKey(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.NotEmpty(t, privKey.PublicKey.Params().Name) require.NotEmpty(t, privKey.PublicKey.Params().Name)
require.Equal(t, elliptic.P256(), privKey.PublicKey.Params().Name) require.Equal(t, elliptic.P256().Params().Name, privKey.PublicKey.Params().Name)
} }
func Test_encodePrivateKey(t *testing.T) { func Test_encodePrivateKey(t *testing.T) {
@ -66,6 +67,12 @@ func Test_encodePrivateKey(t *testing.T) {
require.Greater(t, len(bytes), 0) require.Greater(t, len(bytes), 0)
} }
func Test_encodePrivateKeyError(t *testing.T) {
key := ecdsa.PrivateKey{}
_, err := encodePrivateKey(&key)
require.Error(t, err)
}
func Test_newRootCA(t *testing.T) { func Test_newRootCA(t *testing.T) {
caPEM, keyPEM, err := newRootCA(&rootTestConfig) caPEM, keyPEM, err := newRootCA(&rootTestConfig)
@ -88,12 +95,22 @@ func Test_parseCertificate(t *testing.T) {
require.Equal(t, rootCert.Issuer.CommonName, rootTestConfig.Subject.CommonName) require.Equal(t, rootCert.Issuer.CommonName, rootTestConfig.Subject.CommonName)
} }
func Test_parseCertificateError(t *testing.T) {
_, err := parseCertificate([]byte{})
require.Error(t, err)
}
func TestNewRootCA(t *testing.T) { func TestNewRootCA(t *testing.T) {
rootCert, err := NewRootCA(&rootTestConfig) rootCert, err := NewRootCA(&rootTestConfig)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, rootCert) require.NotNil(t, rootCert)
} }
func TestNewRootCAERror(t *testing.T) {
_, err := NewRootCA(nil)
require.Error(t, err)
}
func Test_rootCA_WithClientCert(t *testing.T) { func Test_rootCA_WithClientCert(t *testing.T) {
rootCert, err := NewRootCA(&rootTestConfig) rootCert, err := NewRootCA(&rootTestConfig)
require.NoError(t, err) require.NoError(t, err)