Add tests for secret.name in compose files.

Signed-off-by: Ilya Sotkov <ilya@sotkov.com>
This commit is contained in:
Ilya Sotkov 2017-11-10 15:35:29 +02:00
parent 4f7f3d2f61
commit 1f10b31017
2 changed files with 82 additions and 2 deletions

View File

@ -214,6 +214,26 @@ configs:
require.Len(t, actual.Configs, 1) require.Len(t, actual.Configs, 1)
} }
func TestLoadV35(t *testing.T) {
actual, err := loadYAML(`
version: "3.5"
services:
foo:
image: busybox
secrets: [foo, bar, baz]
secrets:
foo:
name: fooqux
external: true
bar:
name: barqux
file: ./full-example.yml
`)
require.NoError(t, err)
assert.Len(t, actual.Services, 1)
assert.Len(t, actual.Secrets, 2)
}
func TestParseAndLoad(t *testing.T) { func TestParseAndLoad(t *testing.T) {
actual, err := loadYAML(sampleYAML) actual, err := loadYAML(sampleYAML)
require.NoError(t, err) require.NoError(t, err)
@ -626,10 +646,10 @@ networks:
}, },
}, },
Configs: map[string]types.ConfigObjConfig{ Configs: map[string]types.ConfigObjConfig{
"appconfig": {External: types.External{External: true, Name: "appconfig"}}, "appconfig": {External: types.External{External: true}, Name: "appconfig"},
}, },
Secrets: map[string]types.SecretConfig{ Secrets: map[string]types.SecretConfig{
"super": {External: types.External{External: true, Name: "super"}}, "super": {External: types.External{External: true}, Name: "super"},
}, },
Volumes: map[string]types.VolumeConfig{ Volumes: map[string]types.VolumeConfig{
"data": {External: types.External{External: true}, Name: "data"}, "data": {External: types.External{External: true}, Name: "data"},
@ -1488,3 +1508,44 @@ configs:
require.Len(t, actual.Services, 1) require.Len(t, actual.Services, 1)
assert.Equal(t, "invalid", actual.Services[0].Isolation) assert.Equal(t, "invalid", actual.Services[0].Isolation)
} }
func TestInvalidSecretExternalNameAndNameCombination(t *testing.T) {
_, err := loadYAML(`
version: "3.5"
secrets:
external_secret:
name: user_specified_name
external:
name: external_name
`)
require.Error(t, err)
assert.Contains(t, err.Error(), "secret.external.name and secret.name conflict; only use secret.name")
assert.Contains(t, err.Error(), "external_secret")
}
func TestLoadSecretsWarnOnDeprecatedExternalNameVersion35(t *testing.T) {
buf, cleanup := patchLogrus()
defer cleanup()
source := map[string]interface{}{
"foo": map[string]interface{}{
"external": map[string]interface{}{
"name": "oops",
},
},
}
details := types.ConfigDetails{
Version: "3.5",
}
secrets, err := LoadSecrets(source, details)
require.NoError(t, err)
expected := map[string]types.SecretConfig{
"foo": {
Name: "oops",
External: types.External{External: true},
},
}
assert.Equal(t, expected, secrets)
assert.Contains(t, buf.String(), "secret.external.name is deprecated")
}

View File

@ -46,6 +46,25 @@ func TestValidateAllowsXTopLevelFields(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
} }
func TestValidateSecretConfigNames(t *testing.T) {
config := dict{
"version": "3.5",
"configs": dict{
"bar": dict{
"name": "foobar",
},
},
"secrets": dict{
"baz": dict{
"name": "foobaz",
},
},
}
err := Validate(config, "3.5")
assert.NoError(t, err)
}
func TestValidateInvalidVersion(t *testing.T) { func TestValidateInvalidVersion(t *testing.T) {
config := dict{ config := dict{
"version": "2.1", "version": "2.1",