39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
package notmain
|
|
|
|
import (
|
|
"crypto/x509"
|
|
"encoding/pem"
|
|
"testing"
|
|
|
|
"github.com/letsencrypt/boulder/test"
|
|
)
|
|
|
|
func TestLoadChain(t *testing.T) {
|
|
// Most of loadChain's logic is implemented in issuance.LoadChain, so this
|
|
// test only covers the construction of the PEM bytes.
|
|
_, chainPEM, err := loadChain([]string{
|
|
"../../test/hierarchy/int-e1.cert.pem",
|
|
"../../test/hierarchy/root-x2-cross.cert.pem",
|
|
"../../test/hierarchy/root-x1.cert.pem",
|
|
})
|
|
test.AssertNotError(t, err, "Should load valid chain")
|
|
|
|
// Parse the first certificate in the PEM blob.
|
|
certPEM, rest := pem.Decode(chainPEM)
|
|
test.AssertNotNil(t, certPEM, "Failed to decode chain PEM")
|
|
_, err = x509.ParseCertificate(certPEM.Bytes)
|
|
test.AssertNotError(t, err, "Failed to parse chain PEM")
|
|
|
|
// Parse the second certificate in the PEM blob.
|
|
certPEM, rest = pem.Decode(rest)
|
|
test.AssertNotNil(t, certPEM, "Failed to decode chain PEM")
|
|
_, err = x509.ParseCertificate(certPEM.Bytes)
|
|
test.AssertNotError(t, err, "Failed to parse chain PEM")
|
|
|
|
// The chain should contain nothing else.
|
|
certPEM, rest = pem.Decode(rest)
|
|
if certPEM != nil || len(rest) != 0 {
|
|
t.Error("Expected chain PEM to contain one cert and nothing else")
|
|
}
|
|
}
|