61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
package firewalld
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestParseVersion(t *testing.T) {
|
|
cases := []struct {
|
|
raw string
|
|
maj, min, patch int
|
|
}{
|
|
{"0.6.3", 0, 6, 3},
|
|
{"1.3.4", 1, 3, 4},
|
|
{"2.4.3", 2, 4, 3},
|
|
{"1", 1, 0, 0},
|
|
{"0.9", 0, 9, 0},
|
|
{"1.2.3-4.el9", 1, 2, 3},
|
|
{"", 0, 0, 0},
|
|
{"garbage", 0, 0, 0},
|
|
}
|
|
for _, tc := range cases {
|
|
v := parseVersion(tc.raw)
|
|
assert.Equal(t, tc.maj, v.Major, "major of %q", tc.raw)
|
|
assert.Equal(t, tc.min, v.Minor, "minor of %q", tc.raw)
|
|
assert.Equal(t, tc.patch, v.Patch, "patch of %q", tc.raw)
|
|
}
|
|
}
|
|
|
|
func TestVersionAtLeast(t *testing.T) {
|
|
assert.True(t, parseVersion("1.3.4").atLeast(0, 9))
|
|
assert.True(t, parseVersion("0.9.0").atLeast(0, 9))
|
|
assert.False(t, parseVersion("0.6.3").atLeast(0, 9))
|
|
assert.True(t, parseVersion("1.0.0").atLeast(1, 0))
|
|
assert.False(t, parseVersion("0.9.9").atLeast(1, 0))
|
|
assert.True(t, parseVersion("2.0.0").atLeast(1, 5))
|
|
}
|
|
|
|
// TestCapsByVersion locks the capability gates to the three real server versions:
|
|
// EL7 0.6.3 (no dict, no policies), EL9 1.3.4 and local 2.4.3 (full).
|
|
func TestCapsByVersion(t *testing.T) {
|
|
el7 := capsFor(parseVersion("0.6.3"))
|
|
assert.False(t, el7[DictZoneSettings])
|
|
assert.False(t, el7[Policies])
|
|
assert.False(t, el7[ServiceSettings2])
|
|
assert.False(t, el7[ResetToDefaults])
|
|
|
|
el9 := capsFor(parseVersion("1.3.4"))
|
|
assert.True(t, el9[DictZoneSettings])
|
|
assert.True(t, el9[Policies])
|
|
assert.True(t, el9[ServiceSettings2])
|
|
assert.True(t, el9[ResetToDefaults])
|
|
assert.True(t, el9[AddZone2])
|
|
|
|
// The 0.9 boundary: dict + policies land, the 1.x-only flags do not.
|
|
el09 := capsFor(parseVersion("0.9.0"))
|
|
assert.True(t, el09[DictZoneSettings])
|
|
assert.True(t, el09[Policies])
|
|
assert.False(t, el09[ServiceSettings2])
|
|
}
|