package certs import ( "testing" "time" ) func TestRenewalCandidatesExcludeFreshAndUnmanagedCertificates(t *testing.T) { now := time.Now() m := &CertManager{certs: map[string]*CertificateInfo{ "due": {Type: TypeACME, ValidTo: now.Add(29 * 24 * time.Hour), ACMERequest: &LetsEncryptRequest{Name: "due", Domain: "example.com"}}, "fresh": {Type: TypeACME, ValidTo: now.Add(60 * 24 * time.Hour), ACMERequest: &LetsEncryptRequest{Name: "fresh"}}, "unmanaged": {Type: TypeACME, ValidTo: now.Add(time.Hour)}, }} candidates := m.renewCandidates(now) if len(candidates) != 1 || candidates[0].Name != "due" || !candidates[0].renew { t.Fatal(candidates) } } func TestACMEAccountKeyIsReused(t *testing.T) { m := &CertManager{dir: t.TempDir()} first, err := m.acmeAccountKey(false) if err != nil { t.Fatal(err) } second, err := m.acmeAccountKey(false) if err != nil { t.Fatal(err) } if !first.Equal(second) { t.Fatal("ACME account key changed between requests") } staging, err := m.acmeAccountKey(true) if err != nil { t.Fatal(err) } if first.Equal(staging) { t.Fatal("production and staging shared account key") } }