mirror of
https://github.com/FairwindsOps/polaris.git
synced 2026-02-14 18:09:54 +00:00
* Bump lins * Code refactoring * Fixign issues * Fixing issues * Fixing issues * Fixing issues * [WIP] * [WIP] * [WIP] * Trying to fix tests * Trying to fix tests * Fixing issues * Fixing issues * Fixing issues * Fixing issues * Fixing issues * Fixing issues * Revert go mod * Revert go mod * Revert go mod * Revert go mod * Fixing issues * Fixing issue * Code refactoring * Updating json schema version * Updating json schema version
69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
package test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/fairwindsops/polaris/pkg/config"
|
|
"github.com/fairwindsops/polaris/pkg/mutation"
|
|
"github.com/fairwindsops/polaris/pkg/validator"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var configYaml = `
|
|
checks:
|
|
pullPolicyNotAlways: warning
|
|
hostIPCSet: danger
|
|
hostPIDSet: danger
|
|
hostNetworkSet: danger
|
|
hostPortSet: warning
|
|
deploymentMissingReplicas: warning
|
|
priorityClassNotSet: warning
|
|
runAsRootAllowed: danger
|
|
cpuRequestsMissing: warning
|
|
cpuLimitsMissing: warning
|
|
memoryRequestsMissing: warning
|
|
memoryLimitsMissing: warning
|
|
readinessProbeMissing: warning
|
|
livenessProbeMissing: warning
|
|
insecureCapabilities: warning
|
|
`
|
|
|
|
func TestMutations(t *testing.T) {
|
|
c, err := config.Parse([]byte(configYaml))
|
|
assert.NoError(t, err)
|
|
assert.Len(t, c.Mutations, 0)
|
|
|
|
_, mutatedYamlContentMap, mutationTestCasesMap := initTestCases()
|
|
for mutationStr := range mutationTestCasesMap {
|
|
if len(mutationTestCasesMap[mutationStr]) == 0 {
|
|
panic("No test cases found for " + mutationStr)
|
|
}
|
|
for _, tc := range mutationTestCasesMap[mutationStr] {
|
|
newConfig := c
|
|
key := fmt.Sprintf("%s/%s", tc.check, strings.ReplaceAll(tc.filename, "failure", "mutated"))
|
|
mutatedYamlContent, ok := mutatedYamlContentMap[key]
|
|
assert.True(t, ok)
|
|
assert.Len(t, tc.resources.Resources, 1)
|
|
newConfig.Checks = map[string]config.Severity{}
|
|
newConfig.Checks[mutationStr] = config.SeverityDanger
|
|
newConfig.Mutations = []string{mutationStr}
|
|
results, err := validator.ApplyAllSchemaChecksToResourceProvider(context.Background(), &newConfig, tc.resources)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, results, 1)
|
|
allMutations := mutation.GetMutationsFromResults(results)
|
|
assert.Len(t, allMutations, 1)
|
|
for _, resources := range tc.resources.Resources {
|
|
assert.Len(t, resources, 1)
|
|
key := fmt.Sprintf("%s/%s/%s", resources[0].Kind, resources[0].Resource.GetName(), resources[0].Resource.GetNamespace())
|
|
mutations := allMutations[key]
|
|
yamlContent, err := mutation.ApplyAllMutations(tc.manifest, mutations)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, mutatedYamlContent, yamlContent, "Mutation test case for "+tc.check+"/"+tc.filename+" failed")
|
|
}
|
|
}
|
|
}
|
|
}
|