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 }