Skip to content

Commit a09d17a

Browse files
committed
validate ObjectMeta
closes yannh#287, yannh#275, yannh#286
1 parent 1bd4498 commit a09d17a

18 files changed

+302
-36
lines changed

acceptance.bats

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,46 @@ resetCacheFolder() {
8181
[ "$status" -eq 1 ]
8282
}
8383

84+
@test "Fail when annotation key is invalid" {
85+
run bin/kubeconform fixtures/annotation_key_invalid.yaml
86+
[ "$status" -eq 1 ]
87+
}
88+
89+
@test "Fail when annotation value is missing" {
90+
run bin/kubeconform fixtures/annotation_missing_value.yaml
91+
[ "$status" -eq 1 ]
92+
}
93+
94+
@test "Fail when annotation value is null" {
95+
run bin/kubeconform fixtures/annotation_null_value.yaml
96+
[ "$status" -eq 1 ]
97+
}
98+
99+
@test "Fail when label name is too long" {
100+
run bin/kubeconform fixtures/label_name_length.yaml
101+
[ "$status" -eq 1 ]
102+
}
103+
104+
@test "Fail when label namespace is invalid domain" {
105+
run bin/kubeconform fixtures/label_namespace.yaml
106+
[ "$status" -eq 1 ]
107+
}
108+
109+
@test "Fail when label value is too long" {
110+
run bin/kubeconform fixtures/label_value_length.yaml
111+
[ "$status" -eq 1 ]
112+
}
113+
114+
@test "Fail when metadata name is missing" {
115+
run bin/kubeconform fixtures/metadata_name_missing.yaml
116+
[ "$status" -eq 1 ]
117+
}
118+
119+
@test "Pass if skip-metadata added" {
120+
run bin/kubeconform -skip-metadata fixtures/metadata_name_missing.yaml
121+
[ "$status" -eq 0 ]
122+
}
123+
84124
@test "Return relevant error for non-existent file" {
85125
run bin/kubeconform fixtures/not-here
86126
[ "$status" -eq 1 ]

cmd/kubeconform/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ func kubeconform(cfg config.Config) int {
8585
SkipKinds: cfg.SkipKinds,
8686
RejectKinds: cfg.RejectKinds,
8787
KubernetesVersion: cfg.KubernetesVersion.String(),
88+
SkipMetadata: cfg.SkipMetadata,
8889
Strict: cfg.Strict,
8990
IgnoreMissingSchemas: cfg.IgnoreMissingSchemas,
9091
})

fixtures/annotation_key_invalid.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
annotations:
6+
cert(manager.io/cluster-issuer": issue #275
7+
data:
8+
file.name: "a value"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
annotations:
6+
some.domain/some-key:
7+
data:
8+
file.name: "a value"

fixtures/annotation_null_value.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
annotations:
6+
some.domain/some-key: null
7+
data:
8+
file.name: "a value"

fixtures/label_name_length.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
labels:
6+
abcdefghijklmnopqrstuvwxyz-01234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ: "123456789_123456789_123456789_123456789_123456789_123456789_123"
7+
data:
8+
file.name: "a value"

fixtures/label_namespace.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
labels:
6+
abcdefghijklmnopqrstuvwxyz-01234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ.example.com/ABCDEFGHIJKLMNOPQRSTUVWXYZ: "123456789_123456789_123456789_123456789_123456789_123456789_123"
7+
data:
8+
file.name: "a value"

fixtures/label_value_length.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: some-values
5+
labels:
6+
some.domain/some-key: 123456789_123456789_123456789_123456789_123456789_123456789_1234
7+
data:
8+
file.name: "a value"

fixtures/metadata_missing.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
data:
4+
file.name: "a value"

fixtures/metadata_name_missing.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
5+
data:
6+
file.name: "a value"

0 commit comments

Comments
 (0)