296 lines
8.7 KiB
Go
296 lines
8.7 KiB
Go
package test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
cmapi "certmanager/api/certmanagercontrol"
|
|
"certmanager/internal/config"
|
|
"certmanager/internal/database"
|
|
"certmanager/internal/logic"
|
|
"certmanager/pkg/cm509"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestIssuerCreateN0(t *testing.T) {
|
|
var err error
|
|
var lg *logic.Logic
|
|
{
|
|
conf := config.NewConfig()
|
|
err = conf.ReadFile()
|
|
require.NoError(t, err)
|
|
|
|
db, err := database.NewDatabase(conf.DataDir)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, db)
|
|
|
|
err = db.InitDatabase()
|
|
require.NoError(t, err)
|
|
|
|
logicConfig := &logic.LogicConfig{
|
|
Auths: conf.Auths,
|
|
Database: db,
|
|
}
|
|
lg, err = logic.NewLogic(logicConfig)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, lg)
|
|
}
|
|
|
|
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
|
|
|
|
signerCommonName := "foo.bar"
|
|
var signerID int64
|
|
var signerCert string
|
|
var signerName string
|
|
{
|
|
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
|
|
IssuerCommonName: signerCommonName,
|
|
}
|
|
createIssuerPairRes, err := lg.CreateIssuerPair(ctx, createIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createIssuerPairRes)
|
|
|
|
signerID = createIssuerPairRes.IssuerID
|
|
printObj("signerID", signerID)
|
|
|
|
signerCert = createIssuerPairRes.Certificate
|
|
printObj("signerCert", signerCert)
|
|
|
|
signerName = createIssuerPairRes.IssuerName
|
|
printObj("signerName", signerName)
|
|
|
|
signerCertObj, err := cm509.ParseDoubleEncodedCerificate(signerCert)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, signerCertObj)
|
|
printObj("signerCertObj Subject", signerCertObj.Subject.String())
|
|
printObj("signerCertObj Issuer", signerCertObj.Issuer.String())
|
|
}
|
|
issuerCommonName := "make.love.not.war"
|
|
var issuerID int64
|
|
var issuerCert string
|
|
var issuerName string
|
|
{
|
|
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
|
|
IssuerCommonName: issuerCommonName,
|
|
SignerID: signerID,
|
|
}
|
|
createIssuerPairRes, err := lg.CreateIssuerPair(ctx, createIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createIssuerPairRes)
|
|
|
|
issuerID = createIssuerPairRes.IssuerID
|
|
printObj("issuerID", issuerID)
|
|
|
|
issuerCert = createIssuerPairRes.Certificate
|
|
printObj("issuerCert", issuerCert)
|
|
|
|
issuerName = createIssuerPairRes.IssuerName
|
|
printObj("issuerName", issuerName)
|
|
|
|
issuerCertObj, err := cm509.ParseDoubleEncodedCerificate(issuerCert)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, issuerCertObj)
|
|
printObj("issuerCertObj Subject", issuerCertObj.Subject.String())
|
|
printObj("issuerCertObj Issuer", issuerCertObj.Issuer.String())
|
|
|
|
require.NotEqual(t, issuerCertObj.Subject.String(), issuerCertObj.Issuer.String())
|
|
}
|
|
serviceCommonName := "dont.worry"
|
|
var serviceID int64
|
|
var serviceCert string
|
|
var serviceName string
|
|
{
|
|
createServicePairParams := &cmapi.CreateServicePairParams{
|
|
ServiceCommonName: serviceCommonName,
|
|
IssuerID: issuerID,
|
|
InetAddresses: []string{"1.1.1.1", "1.1.1.2", "1.1.1.3"},
|
|
Hostnames: []string{"dont.worry", "be.happy"},
|
|
}
|
|
createServicePairRes, err := lg.CreateServicePair(ctx, createServicePairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createServicePairRes)
|
|
|
|
serviceID = createServicePairRes.ServiceID
|
|
printObj("serviceID", serviceID)
|
|
|
|
serviceCert = createServicePairRes.Certificate
|
|
printObj("serviceCert", serviceCert)
|
|
|
|
serviceName = createServicePairRes.ServiceName
|
|
printObj("serviceName", serviceName)
|
|
|
|
serviceCertObj, err := cm509.ParseDoubleEncodedCerificate(serviceCert)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, serviceCertObj)
|
|
printObj("serviceCertObj Subject", serviceCertObj.Subject.String())
|
|
printObj("serviceCertObj Service", serviceCertObj.Issuer.String())
|
|
printObj("serviceCertObj DNSNames", serviceCertObj.DNSNames)
|
|
printObj("serviceCertObj IP addresses", serviceCertObj.IPAddresses)
|
|
|
|
require.NotEqual(t, serviceCertObj.Subject.String(), serviceCertObj.Issuer.String())
|
|
}
|
|
}
|
|
|
|
func TestIssuerCreateN2(t *testing.T) {
|
|
var err error
|
|
var lg *logic.Logic
|
|
{
|
|
conf := config.NewConfig()
|
|
err = conf.ReadFile()
|
|
require.NoError(t, err)
|
|
|
|
db, err := database.NewDatabase(conf.DataDir)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, db)
|
|
|
|
err = db.InitDatabase()
|
|
require.NoError(t, err)
|
|
|
|
logicConfig := &logic.LogicConfig{
|
|
Auths: conf.Auths,
|
|
Database: db,
|
|
}
|
|
lg, err = logic.NewLogic(logicConfig)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, lg)
|
|
}
|
|
|
|
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
|
|
|
|
issuerCommonName := "foo.bar"
|
|
var issuerID int64
|
|
var issuerCert string
|
|
{
|
|
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
|
|
IssuerCommonName: issuerCommonName,
|
|
}
|
|
createIssuerPairRes, err := lg.CreateIssuerPair(ctx, createIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createIssuerPairRes)
|
|
issuerID = createIssuerPairRes.IssuerID
|
|
printObj("issuerID", issuerID)
|
|
printObj("issuerID", issuerID)
|
|
}
|
|
{
|
|
getIssuerCertificateParams := &cmapi.GetIssuerCertificateParams{
|
|
IssuerID: issuerID,
|
|
}
|
|
getIssuerCertificateRes, err := lg.GetIssuerCertificate(ctx, getIssuerCertificateParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, getIssuerCertificateRes)
|
|
require.NotZero(t, len(getIssuerCertificateRes.Certificate))
|
|
|
|
printObj("getIssuerCertificateRes", getIssuerCertificateRes)
|
|
require.NoError(t, err)
|
|
|
|
issuerCert = getIssuerCertificateRes.Certificate
|
|
require.NotZero(t, len(issuerCert))
|
|
printObj("issuerCert", string(issuerCert))
|
|
}
|
|
{
|
|
revokeIssuerPairParams := &cmapi.RevokeIssuerPairParams{
|
|
IssuerID: issuerID,
|
|
}
|
|
revokeIssuerPairRes, err := lg.RevokeIssuerPair(ctx, revokeIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, revokeIssuerPairRes)
|
|
|
|
printObj("revokeIssuerPairRes", revokeIssuerPairRes)
|
|
require.NoError(t, err)
|
|
}
|
|
{
|
|
getIssuerCertificateParams := &cmapi.GetIssuerCertificateParams{
|
|
IssuerID: issuerID,
|
|
}
|
|
getIssuerCertificateRes, err := lg.GetIssuerCertificate(ctx, getIssuerCertificateParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, getIssuerCertificateRes)
|
|
require.NotZero(t, len(getIssuerCertificateRes.Certificate))
|
|
require.True(t, getIssuerCertificateRes.Revoked)
|
|
|
|
printObj("getIssuerCertificateRes", getIssuerCertificateRes)
|
|
}
|
|
{
|
|
unrevokeIssuerPairParams := &cmapi.UnrevokeIssuerPairParams{
|
|
IssuerID: issuerID,
|
|
}
|
|
unrevokeIssuerPairRes, err := lg.UnrevokeIssuerPair(ctx, unrevokeIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, unrevokeIssuerPairRes)
|
|
|
|
printObj("unrevokeIssuerPairRes", unrevokeIssuerPairRes)
|
|
require.NoError(t, err)
|
|
}
|
|
{
|
|
getIssuerCertificateParams := &cmapi.GetIssuerCertificateParams{
|
|
IssuerID: issuerID,
|
|
}
|
|
getIssuerCertificateRes, err := lg.GetIssuerCertificate(ctx, getIssuerCertificateParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, getIssuerCertificateRes)
|
|
require.NotZero(t, len(getIssuerCertificateRes.Certificate))
|
|
require.False(t, getIssuerCertificateRes.Revoked)
|
|
|
|
printObj("getIssuerCertificateRes", getIssuerCertificateRes)
|
|
}
|
|
{
|
|
listIssuerPairsParams := &cmapi.ListIssuerPairsParams{}
|
|
listIssuerPairsRes, err := lg.ListIssuerPairs(ctx, listIssuerPairsParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, listIssuerPairsRes)
|
|
require.NotZero(t, len(listIssuerPairsRes.Issuers))
|
|
|
|
printObj("listIssuerPairRes", listIssuerPairsRes)
|
|
}
|
|
{
|
|
for i := 0; i < 3; i++ {
|
|
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
|
|
IssuerCommonName: fmt.Sprintf("sub%0d.%s", i, issuerCommonName),
|
|
}
|
|
createIssuerPairRes, err := lg.CreateIssuerPair(ctx, createIssuerPairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createIssuerPairRes)
|
|
issuerID = createIssuerPairRes.IssuerID
|
|
printObj("issuerID", issuerID)
|
|
}
|
|
}
|
|
{
|
|
listIssuerPairsParams := &cmapi.ListIssuerPairsParams{}
|
|
listIssuerPairsRes, err := lg.ListIssuerPairs(ctx, listIssuerPairsParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, listIssuerPairsRes)
|
|
require.NotZero(t, len(listIssuerPairsRes.Issuers))
|
|
|
|
printObj("listIssuerPairRes", listIssuerPairsRes)
|
|
}
|
|
serviceCommonName := "make.love.not.war"
|
|
var serviceID int64
|
|
{
|
|
createServicePairParams := &cmapi.CreateServicePairParams{
|
|
ServiceCommonName: serviceCommonName,
|
|
IssuerID: issuerID,
|
|
}
|
|
createServicePairRes, err := lg.CreateServicePair(ctx, createServicePairParams)
|
|
printObj("createServicePairRes", createServicePairRes)
|
|
|
|
require.NoError(t, err)
|
|
require.NotNil(t, createServicePairRes)
|
|
serviceID = createServicePairRes.ServiceID
|
|
printObj("serviceID", serviceID)
|
|
}
|
|
{
|
|
getServicePairParams := &cmapi.GetServicePairParams{
|
|
ServiceID: serviceID,
|
|
}
|
|
getServicePairRes, err := lg.GetServicePair(ctx, getServicePairParams)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, getServicePairRes)
|
|
require.NotZero(t, len(getServicePairRes.Certificate))
|
|
require.False(t, getServicePairRes.Revoked)
|
|
|
|
printObj("getServicePairRes", getServicePairRes)
|
|
}
|
|
}
|