Merge pull request #1749 from thaJeztah/compose_3.8_compose_credential_spec_fix

Update compose 3.8 to disallow additional properties
This commit is contained in:
Vincent Demeester 2019-03-18 16:02:47 +01:00 committed by GitHub
commit f2123b3fe4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 52 deletions

View File

@ -510,45 +510,45 @@ bnBpPlHfjORjkTRf1wyAwiYqMXd9/G6313QfoXs6/sbZ66r6e179PwAA//8ZL3SpvkUAAA==
"/data/config_schema_v3.8.json": {
local: "data/config_schema_v3.8.json",
size: 17835,
size: 17912,
modtime: 1518458244,
compressed: `
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
fwAAAP//uQ4+qatFAAA=
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
yYJltPhFAAA=
`,
},

View File

@ -122,10 +122,14 @@
}
},
"container_name": {"type": "string"},
"credential_spec": {"type": "object", "properties": {
"file": {"type": "string"},
"registry": {"type": "string"}
}},
"credential_spec": {
"type": "object",
"properties": {
"file": {"type": "string"},
"registry": {"type": "string"}
},
"additionalProperties": false
},
"depends_on": {"$ref": "#/definitions/list_of_strings"},
"devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"dns": {"$ref": "#/definitions/string_or_list"},

View File

@ -80,17 +80,6 @@ func TestValidateAllowsXFields(t *testing.T) {
}
func TestValidateCredentialSpecs(t *testing.T) {
config := dict{
"version": "99.99",
"services": dict{
"foo": dict{
"image": "busybox",
"credential_spec": dict{
"config": "foobar",
},
},
},
}
tests := []struct {
version string
expectedErr string
@ -103,11 +92,23 @@ func TestValidateCredentialSpecs(t *testing.T) {
{version: "3.5", expectedErr: "config"},
{version: "3.6", expectedErr: "config"},
{version: "3.7", expectedErr: "config"},
{version: "3.8", expectedErr: "something"},
}
for _, tc := range tests {
tc := tc
t.Run(tc.version, func(t *testing.T) {
config := dict{
"version": "99.99",
"services": dict{
"foo": dict{
"image": "busybox",
"credential_spec": dict{
tc.expectedErr: "foobar",
},
},
},
}
err := Validate(config, tc.version)
if tc.expectedErr != "" {
assert.ErrorContains(t, err, fmt.Sprintf("Additional property %s is not allowed", tc.expectedErr))