a73x

internal/smoke/userca_test.go

Ref:   Size: 833 B   History

package smoke

import (
	"os"
	"path/filepath"
	"testing"

	"golang.org/x/crypto/ssh"
)

func TestLoadOrCreateUserCACreatesThenReuses(t *testing.T) {
	dir := t.TempDir()
	path := filepath.Join(dir, "nested", "user_ca")

	s1, err := loadOrCreateUserCA(path)
	if err != nil {
		t.Fatalf("loadOrCreateUserCA (create): %v", err)
	}
	s2, err := loadOrCreateUserCA(path)
	if err != nil {
		t.Fatalf("loadOrCreateUserCA (reuse): %v", err)
	}

	line1 := string(ssh.MarshalAuthorizedKey(s1.PublicKey()))
	line2 := string(ssh.MarshalAuthorizedKey(s2.PublicKey()))
	if line1 != line2 {
		t.Errorf("public keys differ across calls: %q vs %q", line1, line2)
	}

	info, err := os.Stat(path)
	if err != nil {
		t.Fatalf("stat key file: %v", err)
	}
	if mode := info.Mode().Perm(); mode != 0o600 {
		t.Errorf("file mode = %o, want 0600", mode)
	}
}