summaryrefslogtreecommitdiffstats
path: root/go-selinux/selinux_stub_test.go
blob: 19ea636a49acba5940575722fd2f9e7008f6b7dc (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
//go:build !linux
// +build !linux

package selinux

import (
	"testing"
)

const testLabel = "foobar"

func TestSELinuxStubs(t *testing.T) {
	if GetEnabled() {
		t.Error("SELinux enabled on non-linux.")
	}

	tmpDir := t.TempDir()
	if _, err := FileLabel(tmpDir); err != nil {
		t.Error(err)
	}

	if err := SetFileLabel(tmpDir, testLabel); err != nil {
		t.Error(err)
	}

	if _, err := LfileLabel(tmpDir); err != nil {
		t.Error(err)
	}
	if err := LsetFileLabel(tmpDir, testLabel); err != nil {
		t.Error(err)
	}

	if err := SetFSCreateLabel(testLabel); err != nil {
		t.Error(err)
	}

	if _, err := FSCreateLabel(); err != nil {
		t.Error(err)
	}
	if _, err := CurrentLabel(); err != nil {
		t.Error(err)
	}

	if _, err := PidLabel(0); err != nil {
		t.Error(err)
	}

	ClearLabels()

	ReserveLabel(testLabel)
	ReleaseLabel(testLabel)
	if _, err := DupSecOpt(testLabel); err != nil {
		t.Error(err)
	}
	if v := DisableSecOpt(); len(v) != 1 || v[0] != "disable" {
		t.Errorf(`expected "disabled", got %v`, v)
	}
	SetDisabled()
	if enabled := GetEnabled(); enabled {
		t.Error("Should not be enabled")
	}
	if err := SetExecLabel(testLabel); err != nil {
		t.Error(err)
	}
	if err := SetTaskLabel(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := ExecLabel(); err != nil {
		t.Error(err)
	}
	if _, err := CanonicalizeContext(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := ComputeCreateContext("foo", "bar", testLabel); err != nil {
		t.Error(err)
	}
	if err := SetSocketLabel(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := ClassIndex(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := SocketLabel(); err != nil {
		t.Error(err)
	}
	if _, err := PeerLabel(0); err != nil {
		t.Error(err)
	}
	if err := SetKeyLabel(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := KeyLabel(); err != nil {
		t.Error(err)
	}
	if err := SetExecLabel(testLabel); err != nil {
		t.Error(err)
	}
	if _, err := ExecLabel(); err != nil {
		t.Error(err)
	}
	con, err := NewContext(testLabel)
	if err != nil {
		t.Error(err)
	}
	con.Get()
	if err = SetEnforceMode(1); err != nil {
		t.Error(err)
	}
	if v := DefaultEnforceMode(); v != Disabled {
		t.Errorf("expected %d, got %d", Disabled, v)
	}
	if v := EnforceMode(); v != Disabled {
		t.Errorf("expected %d, got %d", Disabled, v)
	}
	if v := ROFileLabel(); v != "" {
		t.Errorf(`expected "", got %q`, v)
	}
	if processLbl, fileLbl := ContainerLabels(); processLbl != "" || fileLbl != "" {
		t.Errorf(`expected fileLbl="", fileLbl="" got processLbl=%q, fileLbl=%q`, processLbl, fileLbl)
	}
	if err = SecurityCheckContext(testLabel); err != nil {
		t.Error(err)
	}
	if _, err = CopyLevel("foo", "bar"); err != nil {
		t.Error(err)
	}
}