package service import ( "os" "path/filepath" "testing" "vpn-platform/backend/internal/model" ) func TestInstanceSnapshotRestore(t *testing.T) { base := t.TempDir() t.Setenv("VPN_DATA_DIR", base) tunnel := &model.Tunnel{ID: 42, Protocol: "openvpn"} if _, err := WriteConfig(tunnel, "server.conf", "old-config"); err != nil { t.Fatal(err) } backup, err := SnapshotInstance(tunnel) if err != nil { t.Fatal(err) } defer CleanupInstanceSnapshot(backup) if _, err := WriteConfig(tunnel, "server.conf", "new-config"); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(InstanceDir(tunnel), "temporary"), []byte("new"), 0o600); err != nil { t.Fatal(err) } if err := RestoreInstanceSnapshot(tunnel, backup); err != nil { t.Fatal(err) } got, err := os.ReadFile(filepath.Join(InstanceDir(tunnel), "server.conf")) if err != nil || string(got) != "old-config" { t.Fatalf("restored config = %q, err=%v", got, err) } if _, err := os.Stat(filepath.Join(InstanceDir(tunnel), "temporary")); !os.IsNotExist(err) { t.Fatalf("temporary file remained after restore: %v", err) } }