56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package state
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadOrCreatePersistsIdentity(t *testing.T) {
|
|
dir := t.TempDir()
|
|
identity, err := LoadOrCreate(dir, "cluster-1", "node-a")
|
|
if err != nil {
|
|
t.Fatalf("load or create: %v", err)
|
|
}
|
|
if identity.NodeFingerprint == "" || identity.PublicKey == "" {
|
|
t.Fatalf("identity missing generated fields: %+v", identity)
|
|
}
|
|
loaded, err := Load(filepath.Join(dir, FileName))
|
|
if err != nil {
|
|
t.Fatalf("load identity: %v", err)
|
|
}
|
|
if loaded.NodeFingerprint != identity.NodeFingerprint {
|
|
t.Fatal("identity fingerprint was not persisted")
|
|
}
|
|
}
|
|
|
|
func TestMarkApprovedUpdatesIdentity(t *testing.T) {
|
|
dir := t.TempDir()
|
|
if _, err := LoadOrCreate(dir, "cluster-1", "node-a"); err != nil {
|
|
t.Fatalf("load or create: %v", err)
|
|
}
|
|
if _, err := MarkEnrollmentSubmitted(dir, "cluster-1", "join-request-1"); err != nil {
|
|
t.Fatalf("mark enrollment submitted: %v", err)
|
|
}
|
|
approved, err := MarkApproved(dir, "node-1", "cluster-1", "active")
|
|
if err != nil {
|
|
t.Fatalf("mark approved: %v", err)
|
|
}
|
|
if approved.NodeID != "node-1" || approved.IdentityStatus != "active" || approved.PendingJoinRequestID != "" {
|
|
t.Fatalf("unexpected approved identity: %+v", approved)
|
|
}
|
|
}
|
|
|
|
func TestMarkApprovedWithAuthorityPinsClusterAuthority(t *testing.T) {
|
|
dir := t.TempDir()
|
|
if _, err := LoadOrCreate(dir, "cluster-1", "node-a"); err != nil {
|
|
t.Fatalf("load or create: %v", err)
|
|
}
|
|
approved, err := MarkApprovedWithAuthority(dir, "node-1", "cluster-1", "active", "public-key-b64", "rap-ca-ed25519-test")
|
|
if err != nil {
|
|
t.Fatalf("mark approved with authority: %v", err)
|
|
}
|
|
if approved.ClusterAuthorityPublicKey != "public-key-b64" || approved.ClusterAuthorityFingerprint != "rap-ca-ed25519-test" {
|
|
t.Fatalf("authority pin was not persisted: %+v", approved)
|
|
}
|
|
}
|