Skip to content

Commit

Permalink
openapi2jsonschema.py now correctly fails if no FILE is passed (#244)
Browse files Browse the repository at this point in the history
* openapi2jsonschema.py now correctly fails if no FILE is passed
* Update acceptance tests
  • Loading branch information
yannh authored Nov 18, 2023
1 parent b7d7b4d commit 6ae8c45
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 49 deletions.
8 changes: 4 additions & 4 deletions acceptance.bats
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ resetCacheFolder() {
}

@test "Pass when parsing a valid Kubernetes config JSON file" {
run bin/kubeconform -kubernetes-version 1.17.1 -summary fixtures/valid.json
run bin/kubeconform -kubernetes-version 1.20.0 -summary fixtures/valid.json
[ "$status" -eq 0 ]
[ "$output" = "Summary: 1 resource found in 1 file - Valid: 1, Invalid: 0, Errors: 0, Skipped: 0" ]
}
Expand Down Expand Up @@ -134,17 +134,17 @@ resetCacheFolder() {
}

@test "Fail when parsing a config with additional properties and strict set" {
run bin/kubeconform -strict -kubernetes-version 1.16.0 fixtures/extra_property.yaml
run bin/kubeconform -strict -kubernetes-version 1.20.0 fixtures/extra_property.yaml
[ "$status" -eq 1 ]
}

@test "Fail when parsing a config with duplicate properties and strict set" {
run bin/kubeconform -strict -kubernetes-version 1.16.0 fixtures/duplicate_property.yaml
run bin/kubeconform -strict -kubernetes-version 1.20.0 fixtures/duplicate_property.yaml
[ "$status" -eq 1 ]
}

@test "Pass when parsing a config with duplicate properties and strict NOT set" {
run bin/kubeconform -kubernetes-version 1.16.0 fixtures/duplicate_property.yaml
run bin/kubeconform -kubernetes-version 1.20.0 fixtures/duplicate_property.yaml
[ "$status" -eq 0 ]
}

Expand Down
74 changes: 31 additions & 43 deletions fixtures/valid.json
Original file line number Diff line number Diff line change
@@ -1,46 +1,34 @@
{
"apiVersion": "apps/v1beta1",
"kind": "Deployment",
"metadata": {
"name": "nginx-deployment",
"namespace": "default"
},
"spec": {
"replicas": 2,
"template": {
"spec": {
"affinity": { },
"containers": [
{
"args": [ ],
"command": [ ],
"env": [ ],
"envFrom": [ ],
"image": "nginx:1.7.9",
"lifecycle": { },
"livenessProbe": { },
"name": "nginx",
"ports": [
{
"containerPort": 80,
"name": "http"
}
],
"readinessProbe": { },
"resources": { },
"securityContext": { },
"volumeMounts": [ ]
}
],
"hostMappings": [ ],
"imagePullSecrets": [ ],
"initContainers": [ ],
"nodeSelector": { },
"securityContext": { },
"tolerations": [ ],
"volumes": [ ]
}
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "bob"
},
"spec": {
"replicas": 2,
"selector": {
"app": "nginx"
},
"template": {
"metadata": {
"name": "nginx",
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
},
"status": { }
}
}
}
7 changes: 7 additions & 0 deletions scripts/acceptance.bats
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,10 @@ setup() {
run diff prometheus_v1.json ./fixtures/prometheus_v1-denyRootAdditionalProperties.json
[ "$status" -eq 0 ]
}

@test "Should output an error if no file is passed" {
run ./openapi2jsonschema.py
[ "$status" -eq 1 ]
[ "${lines[0]}" == 'Missing FILE parameter.' ]
[ "${lines[1]}" == 'Usage: ./openapi2jsonschema.py [FILE]' ]
}
4 changes: 2 additions & 2 deletions scripts/openapi2jsonschema.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ def construct_value(load, node):


if __name__ == "__main__":
if len(sys.argv) == 0:
print("missing file")
if len(sys.argv) < 2:
print('Missing FILE parameter.\nUsage: %s [FILE]' % sys.argv[0])
exit(1)

for crdFile in sys.argv[1:]:
Expand Down

0 comments on commit 6ae8c45

Please sign in to comment.