Files
sessiongurad/internal/windowsx/powershell_json_test.go
jbergner 1b29cbb39d
All checks were successful
release-tag / release-image (push) Successful in 2m4s
release-main / release-images (push) Successful in 3m38s
0.4.1
2026-08-23 00:05:58 +02:00

41 lines
1.3 KiB
Go

package windowsx
import (
"testing"
"github.com/example/sessionguard/internal/model"
)
func TestDecodePowerShellJSONCleanArray(t *testing.T) {
var got []model.RemoteAppStatus
if err := decodePowerShellJSON(`[{"alias":"Calc","published":true}]`, &got); err != nil {
t.Fatal(err)
}
if len(got) != 1 || got[0].Alias != "Calc" || !got[0].Published {
t.Fatalf("unexpected result: %#v", got)
}
}
func TestDecodePowerShellJSONSingleObject(t *testing.T) {
var got []model.RemoteAppStatus
if err := decodePowerShellJSON(`{"alias":"Calc","published":true}`, &got); err != nil {
t.Fatal(err)
}
if len(got) != 1 || got[0].Alias != "Calc" {
t.Fatalf("unexpected result: %#v", got)
}
}
func TestDecodePowerShellJSONIgnoresCLIXMLNoise(t *testing.T) {
raw := "#< CLIXML\r\n" +
`[{"resource_id":"281750fc5851c7fd","alias":"Rechner","display_name":"Rechner","path":"C:\\Windows\\system32\\win32calc.exe","path_exists":true,"published":true,"managed":true,"in_sync":true}]` +
"\r\nSystem.Management.Automation.PSCustomObjectSystem.Object1Module werden fuer erstmalige Verwendung vorbereitet."
var got []model.RemoteAppStatus
if err := decodePowerShellJSON(raw, &got); err != nil {
t.Fatal(err)
}
if len(got) != 1 || got[0].Alias != "Rechner" || got[0].Path != `C:\Windows\system32\win32calc.exe` {
t.Fatalf("unexpected result: %#v", got)
}
}