2016-12-20 16:26:49 -05:00
|
|
|
package schema
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
type dict map[string]interface{}
|
|
|
|
|
2017-01-10 17:10:53 -05:00
|
|
|
func TestValidate(t *testing.T) {
|
2016-12-20 16:26:49 -05:00
|
|
|
config := dict{
|
2017-01-10 17:10:53 -05:00
|
|
|
"version": "3.0",
|
2016-12-20 16:26:49 -05:00
|
|
|
"services": dict{
|
|
|
|
"foo": dict{
|
|
|
|
"image": "busybox",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2017-01-10 17:10:53 -05:00
|
|
|
assert.NoError(t, Validate(config, "3.0"))
|
2016-12-20 16:26:49 -05:00
|
|
|
}
|
|
|
|
|
2017-01-10 17:10:53 -05:00
|
|
|
func TestValidateUndefinedTopLevelOption(t *testing.T) {
|
2016-12-20 16:26:49 -05:00
|
|
|
config := dict{
|
2017-01-10 17:10:53 -05:00
|
|
|
"version": "3.0",
|
2016-12-20 16:26:49 -05:00
|
|
|
"helicopters": dict{
|
|
|
|
"foo": dict{
|
|
|
|
"image": "busybox",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2017-01-10 17:10:53 -05:00
|
|
|
err := Validate(config, "3.0")
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Contains(t, err.Error(), "Additional property helicopters is not allowed")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestValidateInvalidVersion(t *testing.T) {
|
|
|
|
config := dict{
|
|
|
|
"version": "2.1",
|
|
|
|
"services": dict{
|
|
|
|
"foo": dict{
|
|
|
|
"image": "busybox",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
err := Validate(config, "2.1")
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Contains(t, err.Error(), "unsupported Compose file version: 2.1")
|
2016-12-20 16:26:49 -05:00
|
|
|
}
|