Files
cthulhu/internal/atspi/flatpak_process_test.go

55 lines
1.8 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package atspi
import (
"fmt"
"os"
"path/filepath"
"strings"
"testing"
)
func TestFlatpakProcessInstanceBoundaries(t *testing.T) {
root := t.TempDir()
write := func(pid int, data string) {
t.Helper()
dir := filepath.Join(root, fmt.Sprint(pid), "root")
if err := os.MkdirAll(dir, 0700); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, ".flatpak-info"), []byte(data), 0600); err != nil {
t.Fatal(err)
}
}
metadata := "[Application]\nname=org.example.App\n[Instance]\ninstance-id=123\n"
write(100, metadata)
for _, test := range []struct {
name, data string
want bool
}{
{"same instance", metadata, true},
{"other instance of same app", strings.ReplaceAll(metadata, "123", "456"), false},
{"other app", strings.ReplaceAll(metadata, "org.example.App", "org.example.Other"), false},
{"app ID alone", "[Application]\nname=org.example.App\n", false},
{"instance ID alone", "[Instance]\ninstance-id=123\n", false},
{"wrong section", "[Application]\nname=org.example.App\ninstance-id=123\n", false},
{"empty metadata", "", false},
{"malformed metadata", metadata + "broken", false},
{"duplicate identity", metadata + "instance-id=456\n", false},
{"oversized metadata", metadata + strings.Repeat("#", 65536), false},
} {
t.Run(test.name, func(t *testing.T) {
write(200, test.data)
if got := sameFlatpakInstance(root, 100, 200); got != test.want {
t.Fatalf("same instance = %v; want %v", got, test.want)
}
})
}
if sameFlatpakInstance(root, 100, 300) || sameFlatpakInstance(root, 300, 400) || sameFlatpakInstance(root, 0, 0) {
t.Fatal("missing process or unknown identity matched")
}
}