package test

import (
	"acme-mana/src"
	"crypto/x509"
	"encoding/json"
	"encoding/pem"
	"github.com/go-acme/lego/v4/certificate"
	"log"
	"os"
	"path"
	"path/filepath"
	"time"
)

func TestValidExist() {
	domain := src.GetAppConfig().Domains[0]
	name := domain.Name
	dir := src.GetAppConfig().CertDir
	certDir := path.Join(dir, name)
	log.Println(src.ValidExist(certDir, domain))

}

func TestParseCertInfo() {
	domain := src.GetAppConfig().Domains[0]
	name := domain.Name
	dir := src.GetAppConfig().CertDir
	certDir := path.Join(dir, name)
	infoFile := path.Join(certDir, src.CertInfoFileName)
	certInfo := src.ParseCertInfo(infoFile, domain)
	log.Println(certInfo)
	log.Println(certInfo.Info.NotAfter)
	log.Println(certInfo.Info.NotAfter.Sub(time.Now()))
	log.Println(certInfo.Info.NotAfter.Sub(time.Now()) < 7*24*time.Hour)
}

func TestParseCert() {
	// 读取
	dir := src.GetAppConfig().CertDir
	dir = filepath.Join(dir, "acme.zzzykj.cn")
	certFile := path.Join(dir, src.CertFileName)
	certBytes, err := os.ReadFile(certFile)
	if err != nil {
		panic(err)
	}
	block, _ := pem.Decode(certBytes)
	if block == nil {
		log.Fatalf("Failed to decode PEM block")
		return
	}

	certParse, err := x509.ParseCertificate(block.Bytes)
	if err != nil {
		log.Fatalf("Failed to parse certificate: %v", err)
	}
	//info, err := json.Marshal(certParse)
	//if err != nil {
	//	log.Fatalf("Failed to marshal certificate: %v", err)
	//}
	certInfo := src.CertInfo{
		Cert: certificate.Resource{},
		Info: *certParse,
	}
	info, err := json.Marshal(certInfo)
	if err != nil {
		log.Fatalf("Failed to marshal certificate: %v", err)
	}
	log.Println(string(info))

	//log.Println(string(info))
	//log.Println(certParse)
}