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 TestIssuerCreateV0(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()) } } func XXXTestIssuerCreate(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) } }