mirror of
https://github.com/kubescape/kubescape.git
synced 2026-04-15 06:58:11 +00:00
69 lines
3.6 KiB
Go
69 lines
3.6 KiB
Go
package cautils
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/armosec/armoapi-go/armotypes"
|
|
"github.com/kubescape/opa-utils/reporthandling"
|
|
"github.com/stretchr/testify/assert"
|
|
"golang.org/x/mod/semver"
|
|
)
|
|
|
|
func TestGetKubernetesObjects(t *testing.T) {
|
|
}
|
|
|
|
var rule_v1_0_131 = &reporthandling.PolicyRule{PortalBase: armotypes.PortalBase{
|
|
Attributes: map[string]interface{}{"useUntilKubescapeVersion": "v1.0.132"}}}
|
|
var rule_v1_0_132 = &reporthandling.PolicyRule{PortalBase: armotypes.PortalBase{
|
|
Attributes: map[string]interface{}{"useFromKubescapeVersion": "v1.0.132", "useUntilKubescapeVersion": "v1.0.133"}}}
|
|
var rule_v1_0_133 = &reporthandling.PolicyRule{PortalBase: armotypes.PortalBase{
|
|
Attributes: map[string]interface{}{"useFromKubescapeVersion": "v1.0.133", "useUntilKubescapeVersion": "v1.0.134"}}}
|
|
var rule_v1_0_134 = &reporthandling.PolicyRule{PortalBase: armotypes.PortalBase{
|
|
Attributes: map[string]interface{}{"useFromKubescapeVersion": "v1.0.134"}}}
|
|
|
|
func TestIsRuleKubescapeVersionCompatible(t *testing.T) {
|
|
// local build- no build number
|
|
// should use only rules that don't have "until"
|
|
buildNumberMock := ""
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_131.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_132.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_133.Attributes, buildNumberMock))
|
|
assert.True(t, isRuleKubescapeVersionCompatible(rule_v1_0_134.Attributes, buildNumberMock))
|
|
|
|
// should only use rules that version is in range of use
|
|
buildNumberMock = "v1.0.130"
|
|
assert.True(t, isRuleKubescapeVersionCompatible(rule_v1_0_131.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_132.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_133.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_134.Attributes, buildNumberMock))
|
|
|
|
// should only use rules that version is in range of use
|
|
buildNumberMock = "v1.0.132"
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_131.Attributes, buildNumberMock))
|
|
assert.True(t, isRuleKubescapeVersionCompatible(rule_v1_0_132.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_133.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_134.Attributes, buildNumberMock))
|
|
|
|
// should only use rules that version is in range of use
|
|
buildNumberMock = "v1.0.133"
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_131.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_132.Attributes, buildNumberMock))
|
|
assert.True(t, isRuleKubescapeVersionCompatible(rule_v1_0_133.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_134.Attributes, buildNumberMock))
|
|
|
|
// should only use rules that version is in range of use
|
|
buildNumberMock = "v1.0.135"
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_131.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_132.Attributes, buildNumberMock))
|
|
assert.False(t, isRuleKubescapeVersionCompatible(rule_v1_0_133.Attributes, buildNumberMock))
|
|
assert.True(t, isRuleKubescapeVersionCompatible(rule_v1_0_134.Attributes, buildNumberMock))
|
|
}
|
|
|
|
func TestCheckLatestVersion(t *testing.T) {
|
|
assert.Equal(t, -1, semver.Compare("v2.0.150", "v2.0.151"))
|
|
assert.Equal(t, 0, semver.Compare("v2.0.150", "v2.0.150"))
|
|
assert.Equal(t, 1, semver.Compare("v2.0.150", "v2.0.149"))
|
|
assert.Equal(t, -1, semver.Compare("v2.0.150", "v3.0.150"))
|
|
|
|
}
|