aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mirum-server/cert_test.go')
-rw-r--r--cmd/mirum-server/cert_test.go142+0 −142
1 files changed, 0 insertions, 142 deletions
diff --git a/cmd/mirum-server/cert_test.go b/cmd/mirum-server/cert_test.go
deleted file mode 100644
--- a/cmd/mirum-server/cert_test.go
+++ /dev/null
@@ -1,142 +0,0 @@
-// SPDX-FileCopyrightText: 2026 Nikolay Govorov
-// SPDX-License-Identifier: AGPL-3.0-or-later
-
-package main
-
-import (
- "crypto/ed25519"
- "crypto/rand"
- "crypto/x509"
- "encoding/pem"
- "math/big"
- "os"
- "path/filepath"
- "testing"
- "time"
-)
-
-func writeTestPair(t *testing.T, certPath, keyPath string) {
- t.Helper()
-
- pub, priv, err := ed25519.GenerateKey(rand.Reader)
- if err != nil {
- t.Fatal(err)
- }
-
- serial, err := rand.Int(rand.Reader, new(big.Int).Lsh(big.NewInt(1), 128))
- if err != nil {
- t.Fatal(err)
- }
-
- der, err := x509.CreateCertificate(rand.Reader, &x509.Certificate{
- SerialNumber: serial,
- NotBefore: time.Now(),
- NotAfter: time.Now().Add(time.Hour),
- }, &x509.Certificate{SerialNumber: serial}, pub, priv)
- if err != nil {
- t.Fatal(err)
- }
-
- if err := os.WriteFile(certPath,
- pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: der}),
- 0o644); err != nil {
- t.Fatal(err)
- }
-
- keyDER, err := x509.MarshalPKCS8PrivateKey(priv)
- if err != nil {
- t.Fatal(err)
- }
- if err := os.WriteFile(keyPath,
- pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: keyDER}),
- 0o600); err != nil {
- t.Fatal(err)
- }
-}
-
-func TestCertReloader_Cached(t *testing.T) {
- dir := t.TempDir()
- certPath := filepath.Join(dir, "cert.pem")
- keyPath := filepath.Join(dir, "key.pem")
- writeTestPair(t, certPath, keyPath)
-
- r := newCertReloader(certPath, keyPath)
-
- first, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatal(err)
- }
- second, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatal(err)
- }
- if first != second {
- t.Fatal("expected same pointer on cache hit")
- }
-}
-
-func TestCertReloader_ReloadsOnMtimeChange(t *testing.T) {
- dir := t.TempDir()
- certPath := filepath.Join(dir, "cert.pem")
- keyPath := filepath.Join(dir, "key.pem")
- writeTestPair(t, certPath, keyPath)
-
- r := newCertReloader(certPath, keyPath)
- first, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatal(err)
- }
-
- writeTestPair(t, certPath, keyPath)
- future := time.Now().Add(time.Second)
- if err := os.Chtimes(certPath, future, future); err != nil {
- t.Fatal(err)
- }
- if err := os.Chtimes(keyPath, future, future); err != nil {
- t.Fatal(err)
- }
-
- second, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatal(err)
- }
- if first == second {
- t.Fatal("expected new pointer after mtime change")
- }
-}
-
-func TestCertReloader_FallbackOnReloadError(t *testing.T) {
- dir := t.TempDir()
- certPath := filepath.Join(dir, "cert.pem")
- keyPath := filepath.Join(dir, "key.pem")
- writeTestPair(t, certPath, keyPath)
-
- r := newCertReloader(certPath, keyPath)
- good, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatal(err)
- }
-
- if err := os.WriteFile(certPath, []byte("garbage"), 0o644); err != nil {
- t.Fatal(err)
- }
- future := time.Now().Add(time.Second)
- if err := os.Chtimes(certPath, future, future); err != nil {
- t.Fatal(err)
- }
-
- fallback, err := r.GetCertificate(nil)
- if err != nil {
- t.Fatalf("expected last-good fallback, got error: %v", err)
- }
- if fallback != good {
- t.Fatal("expected cached cert on corrupted file")
- }
-}
-
-func TestCertReloader_ErrorOnFirstLoad(t *testing.T) {
- r := newCertReloader("/nonexistent/cert.pem", "/nonexistent/key.pem")
- if _, err := r.GetCertificate(nil); err == nil {
- t.Fatal("expected error on missing files")
- }
-}