Add dynamic certificate feature to controller

This commit is contained in:
Henry Tran 2018-06-04 17:48:30 -04:00
parent b4942ccd03
commit 7faf089082
12 changed files with 342 additions and 29 deletions

View file

@ -17,6 +17,7 @@ limitations under the License.
package ssl
import (
"bytes"
"crypto/x509"
"fmt"
"testing"
@ -147,3 +148,37 @@ func newFS(t *testing.T) file.Filesystem {
}
return fs
}
func TestCreateSSLCert(t *testing.T) {
cert, _, err := generateRSACerts("echoheaders")
if err != nil {
t.Fatalf("unexpected error creating SSL certificate: %v", err)
}
name := fmt.Sprintf("test-%v", time.Now().UnixNano())
c := certutil.EncodeCertPEM(cert.Cert)
k := certutil.EncodePrivateKeyPEM(cert.Key)
ngxCert, err := CreateSSLCert(name, c, k, []byte{})
if err != nil {
t.Fatalf("unexpected error checking SSL certificate: %v", err)
}
var certKeyBuf bytes.Buffer
certKeyBuf.Write(c)
certKeyBuf.Write([]byte("\n"))
certKeyBuf.Write(k)
if ngxCert.PemCertKey != certKeyBuf.String() {
t.Fatalf("expected concatenated PEM cert and key but returned %v", ngxCert.PemCertKey)
}
if len(ngxCert.CN) == 0 {
t.Fatalf("expected at least one cname but none returned")
}
if ngxCert.CN[0] != "echoheaders" {
t.Fatalf("expected cname echoheaders but %v returned", ngxCert.CN[0])
}
}