1 package opts
2
3 import (
4 "strconv"
5 "testing"
6
7 "gotest.tools/v3/assert"
8 )
9
10 func TestNormalizeCapability(t *testing.T) {
11 tests := []struct{ in, out string }{
12 {in: "ALL", out: "ALL"},
13 {in: "FOO", out: "CAP_FOO"},
14 {in: "CAP_FOO", out: "CAP_FOO"},
15 {in: "CAPFOO", out: "CAP_CAPFOO"},
16
17
18 {in: "aLl", out: "ALL"},
19 {in: "foO", out: "CAP_FOO"},
20 {in: "cAp_foO", out: "CAP_FOO"},
21
22
23
24 {in: " ALL ", out: "ALL"},
25 {in: " FOO ", out: "CAP_FOO"},
26 {in: " CAP_FOO ", out: "CAP_FOO"},
27 {in: " ALL ", out: "ALL"},
28 {in: " FOO ", out: "CAP_FOO"},
29 {in: " CAP_FOO ", out: "CAP_FOO"},
30
31
32
33
34 {in: "SOME CAP", out: "CAP_SOME CAP"},
35 {in: "_FOO", out: "CAP__FOO"},
36 }
37
38 for _, tc := range tests {
39 tc := tc
40 t.Run(tc.in, func(t *testing.T) {
41 assert.Equal(t, NormalizeCapability(tc.in), tc.out)
42 })
43 }
44 }
45
46 func TestEffectiveCapAddCapDrop(t *testing.T) {
47 type caps struct {
48 add, drop []string
49 }
50
51 tests := []struct {
52 in, out caps
53 }{
54 {
55 in: caps{
56 add: []string{"one", "two"},
57 drop: []string{"one", "two"},
58 },
59 out: caps{
60 add: []string{"CAP_ONE", "CAP_TWO"},
61 },
62 },
63 {
64 in: caps{
65 add: []string{"CAP_ONE", "cap_one", "CAP_TWO"},
66 drop: []string{"one", "cap_two"},
67 },
68 out: caps{
69 add: []string{"CAP_ONE", "CAP_TWO"},
70 },
71 },
72 {
73 in: caps{
74 add: []string{"CAP_ONE", "CAP_TWO"},
75 drop: []string{"CAP_ONE", "CAP_THREE"},
76 },
77 out: caps{
78 add: []string{"CAP_ONE", "CAP_TWO"},
79 drop: []string{"CAP_THREE"},
80 },
81 },
82 {
83 in: caps{
84 add: []string{"ALL"},
85 drop: []string{"CAP_ONE", "CAP_TWO"},
86 },
87 out: caps{
88 add: []string{"ALL"},
89 drop: []string{"CAP_ONE", "CAP_TWO"},
90 },
91 },
92 {
93 in: caps{
94 add: []string{"ALL", "CAP_ONE"},
95 },
96 out: caps{
97 add: []string{"ALL"},
98 },
99 },
100 {
101 in: caps{
102 drop: []string{"ALL", "CAP_ONE"},
103 },
104 out: caps{
105 drop: []string{"ALL"},
106 },
107 },
108 }
109
110 for i, tc := range tests {
111 tc := tc
112 t.Run(strconv.Itoa(i), func(t *testing.T) {
113 add, drop := EffectiveCapAddCapDrop(tc.in.add, tc.in.drop)
114 assert.DeepEqual(t, add, tc.out.add)
115 assert.DeepEqual(t, drop, tc.out.drop)
116 })
117 }
118 }
119
View as plain text