All checks were successful
ci/woodpecker/push/pipeline Pipeline was successful
Reviewed-on: #56 Co-authored-by: pptx704 <rafeed@omukk.dev> Co-committed-by: pptx704 <rafeed@omukk.dev>
49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
package validate
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestMetadata(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input map[string]string
|
|
wantErr bool
|
|
}{
|
|
{"nil", nil, false},
|
|
{"empty", map[string]string{}, false},
|
|
{"simple", map[string]string{"env": "prod", "owner": "alice"}, false},
|
|
{"dotted-key", map[string]string{"team.name": "infra"}, false},
|
|
{"empty-value", map[string]string{"flag": ""}, false},
|
|
{"max-keys", makeKeys(MaxMetadataKeys), false},
|
|
|
|
{"reserved-kernel", map[string]string{"kernel_version": "6.1.0"}, true},
|
|
{"reserved-vmm", map[string]string{"vmm_version": "x"}, true},
|
|
{"reserved-agent", map[string]string{"agent_version": "x"}, true},
|
|
{"reserved-envd", map[string]string{"envd_version": "x"}, true},
|
|
{"too-many-keys", makeKeys(MaxMetadataKeys + 1), true},
|
|
{"bad-key-leading-dot", map[string]string{".hidden": "v"}, true},
|
|
{"bad-key-space", map[string]string{"my key": "v"}, true},
|
|
{"key-too-long", map[string]string{strings.Repeat("a", 65): "v"}, true},
|
|
{"value-too-long", map[string]string{"k": strings.Repeat("a", MaxMetadataValueLen+1)}, true},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := Metadata(tt.input)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("Metadata(%v) error = %v, wantErr %v", tt.input, err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func makeKeys(n int) map[string]string {
|
|
m := make(map[string]string, n)
|
|
for i := range n {
|
|
m[fmt.Sprintf("key%d", i)] = "v"
|
|
}
|
|
return m
|
|
}
|