blob: 009df13b36fcd9afecee41e4c76e994196953f49 [file] [log] [blame]
package validators_test
import (
"testing"
. "github.com/lrills/helm-unittest/unittest/validators"
"github.com/lrills/helm-unittest/unittest/common"
"github.com/stretchr/testify/assert"
)
var docToTestMatchRegexRaw = `
raw: |
This is a NOTES.txt document.
`
func TestMatchRegexRawValidatorWhenOk(t *testing.T) {
manifest := makeManifest(docToTestMatchRegexRaw)
validator := MatchRegexRawValidator{"^This"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
})
assert.True(t, pass)
assert.Equal(t, []string{}, diff)
}
func TestMatchRegexRawValidatorWhenNegativeAndOk(t *testing.T) {
manifest := makeManifest(docToTestMatchRegexRaw)
validator := MatchRegexRawValidator{"^foo"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
Negative: true,
})
assert.True(t, pass)
assert.Equal(t, []string{}, diff)
}
func TestMatchRegexRawValidatorWhenRegexCompileFail(t *testing.T) {
manifest := common.K8sManifest{"raw": ""}
validator := MatchRegexRawValidator{"+"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
})
assert.False(t, pass)
assert.Equal(t, []string{
"Error:",
" error parsing regexp: missing argument to repetition operator: `+`",
}, diff)
}
func TestMatchRegexRawValidatorWhenMatchFail(t *testing.T) {
manifest := makeManifest(docToTestMatchRegexRaw)
validator := MatchRegexRawValidator{"^foo"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
})
assert.False(t, pass)
assert.Equal(t, []string{
"Expected to match: ^foo",
"Actual: This is a NOTES.txt document.",
}, diff)
}
func TestMatchRegexRawValidatorWhenNegativeAndMatchFail(t *testing.T) {
manifest := makeManifest(docToTestMatchRegexRaw)
validator := MatchRegexRawValidator{"^This"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
Negative: true,
})
assert.False(t, pass)
assert.Equal(t, []string{
"Expected NOT to match: ^This",
"Actual: This is a NOTES.txt document.",
}, diff)
}
func TestMatchRegexRawValidatorWhenInvalidIndex(t *testing.T) {
manifest := makeManifest(docToTestMatchRegexRaw)
validator := MatchRegexRawValidator{"^This"}
pass, diff := validator.Validate(&ValidateContext{
Docs: []common.K8sManifest{manifest},
Index: 2,
})
assert.False(t, pass)
assert.Equal(t, []string{
"Error:",
" documentIndex 2 out of range",
}, diff)
}