github.com/nais/outtune@v0.0.0-20230327072907-ef48d1263aba/pkg/cert/local_ca_test.go (about)

     1  package cert_test
     2  
     3  import (
     4  	"context"
     5  	"crypto/rand"
     6  	"crypto/rsa"
     7  	"crypto/tls"
     8  	"os"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/nais/outtune/pkg/cert"
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestMakeCert(t *testing.T) {
    17  	caCertFileName := "ca.pem"
    18  	caKeyFileName := "ca.key"
    19  
    20  	dir, err := os.MkdirTemp("", "outtune-unittest-dir")
    21  	assert.NoError(t, err)
    22  	if len(dir) > 0 && strings.Contains(dir, "/tmp/") {
    23  		defer os.RemoveAll(dir)
    24  	}
    25  
    26  	err = os.Chdir(dir)
    27  	assert.NoError(t, err)
    28  
    29  	t.Logf("Working in temp dir: %s", dir)
    30  
    31  	err = cert.LocalCAInit(caCertFileName, caKeyFileName)
    32  	assert.NoError(t, err)
    33  
    34  	certAndKeyPair, err := tls.LoadX509KeyPair(caCertFileName, caKeyFileName)
    35  	assert.NoError(t, err)
    36  
    37  	ca := cert.NewLocalCA(&certAndKeyPair)
    38  
    39  	serial := "test-serial"
    40  
    41  	key, err := rsa.GenerateKey(rand.Reader, 4096)
    42  	assert.NoError(t, err)
    43  
    44  	publicKeyPem, err := cert.PublicKeytoPem(&key.PublicKey)
    45  	assert.NoError(t, err)
    46  
    47  	cert, err := ca.MakeCert(context.TODO(), serial, []byte(publicKeyPem))
    48  	assert.NoError(t, err)
    49  
    50  	assert.True(t, len(cert) > 0)
    51  }