aboutsummaryrefslogtreecommitdiffhomepage
path: root/fst/template_test.go
blob: 0ec2dae27556ddad92ef666b7109be394d2274c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package fst_test

import (
	"encoding/json"
	"testing"

	"git.gensokyo.uk/security/fortify/fst"
)

func TestTemplate(t *testing.T) {
	const want = `{
	"id": "org.chromium.Chromium",
	"path": "/run/current-system/sw/bin/chromium",
	"args": [
		"chromium",
		"--ignore-gpu-blocklist",
		"--disable-smooth-scrolling",
		"--enable-features=UseOzonePlatform",
		"--ozone-platform=wayland"
	],
	"confinement": {
		"app_id": 9,
		"groups": [
			"video"
		],
		"username": "chronos",
		"home_inner": "/var/lib/fortify",
		"home": "/var/lib/persist/home/org.chromium.Chromium",
		"shell": "/run/current-system/sw/bin/zsh",
		"sandbox": {
			"hostname": "localhost",
			"seccomp": 32,
			"devel": true,
			"userns": true,
			"net": true,
			"tty": true,
			"multiarch": true,
			"env": {
				"GOOGLE_API_KEY": "AIzaSyBHDrl33hwRp4rMQY0ziRbj8K9LPA6vUCY",
				"GOOGLE_DEFAULT_CLIENT_ID": "77185425430.apps.googleusercontent.com",
				"GOOGLE_DEFAULT_CLIENT_SECRET": "OTJgUOQcT7lO7GsGZq2G4IlT"
			},
			"map_real_uid": true,
			"device": true,
			"filesystem": [
				{
					"src": "/nix/store"
				},
				{
					"src": "/run/current-system"
				},
				{
					"src": "/run/opengl-driver"
				},
				{
					"src": "/var/db/nix-channels"
				},
				{
					"dst": "/data/data/org.chromium.Chromium",
					"src": "/var/lib/fortify/u0/org.chromium.Chromium",
					"write": true,
					"require": true
				},
				{
					"src": "/dev/dri",
					"dev": true
				}
			],
			"symlink": [
				[
					"/run/user/65534",
					"/run/user/150"
				]
			],
			"etc": "/etc",
			"auto_etc": true,
			"cover": [
				"/var/run/nscd"
			]
		},
		"extra_perms": [
			{
				"ensure": true,
				"path": "/var/lib/fortify/u0",
				"x": true
			},
			{
				"path": "/var/lib/fortify/u0/org.chromium.Chromium",
				"r": true,
				"w": true,
				"x": true
			}
		],
		"system_bus": {
			"see": null,
			"talk": [
				"org.bluez",
				"org.freedesktop.Avahi",
				"org.freedesktop.UPower"
			],
			"own": null,
			"call": null,
			"broadcast": null,
			"filter": true
		},
		"session_bus": {
			"see": null,
			"talk": [
				"org.freedesktop.Notifications",
				"org.freedesktop.FileManager1",
				"org.freedesktop.ScreenSaver",
				"org.freedesktop.secrets",
				"org.kde.kwalletd5",
				"org.kde.kwalletd6",
				"org.gnome.SessionManager"
			],
			"own": [
				"org.chromium.Chromium.*",
				"org.mpris.MediaPlayer2.org.chromium.Chromium.*",
				"org.mpris.MediaPlayer2.chromium.*"
			],
			"call": {
				"org.freedesktop.portal.*": "*"
			},
			"broadcast": {
				"org.freedesktop.portal.*": "@/org/freedesktop/portal/*"
			},
			"filter": true
		},
		"enablements": 13
	}
}`

	if p, err := json.MarshalIndent(fst.Template(), "", "\t"); err != nil {
		t.Fatalf("cannot marshal: %v", err)
	} else if s := string(p); s != want {
		t.Fatalf("Template:\n%s\nwant:\n%s",
			s, want)
	}
}