mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
help people figure out why their syslog url is wrong more better (#1242)
closes #1240
This commit is contained in:
@@ -86,17 +86,16 @@ func (a *App) Validate() error {
|
|||||||
|
|
||||||
if a.SyslogURL != nil && *a.SyslogURL != "" {
|
if a.SyslogURL != nil && *a.SyslogURL != "" {
|
||||||
url, err := url.Parse(strings.TrimSpace(*a.SyslogURL))
|
url, err := url.Parse(strings.TrimSpace(*a.SyslogURL))
|
||||||
fail := err != nil
|
if err == nil {
|
||||||
if !fail {
|
|
||||||
// See: https://docs.docker.com/config/containers/logging/syslog/#options
|
// See: https://docs.docker.com/config/containers/logging/syslog/#options
|
||||||
switch url.Scheme {
|
switch url.Scheme {
|
||||||
case "udp", "tcp", "unix", "unixgram", "tcp+tls":
|
case "udp", "tcp", "unix", "unixgram", "tcp+tls":
|
||||||
default:
|
default:
|
||||||
fail = true
|
err = fmt.Errorf("invalid scheme, only [tcp, udp, unix, unixgram, tcp+tls] are supported")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if fail {
|
if err != nil { // not else if for a reason...
|
||||||
return ErrInvalidSyslog(fmt.Sprintf(`invalid syslog url: "%v"`, *a.SyslogURL))
|
return ErrInvalidSyslog(fmt.Sprintf(`invalid syslog url: "%v" %v`, *a.SyslogURL, err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ func TestAppCreate(t *testing.T) {
|
|||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "app", "annotations" : { "":"val" }}`, http.StatusBadRequest, models.ErrInvalidAnnotationKey},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "app", "annotations" : { "":"val" }}`, http.StatusBadRequest, models.ErrInvalidAnnotationKey},
|
||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{"name": "app", "annotations" : { "key":"" }}`, http.StatusBadRequest, models.ErrInvalidAnnotationValue},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{"name": "app", "annotations" : { "key":"" }}`, http.StatusBadRequest, models.ErrInvalidAnnotationValue},
|
||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "app", "syslog_url":"yo"}`, http.StatusBadRequest, errors.New(`invalid syslog url: "yo"`)},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "app", "syslog_url":"yo"}`, http.StatusBadRequest, errors.New(`invalid syslog url: "yo"`)},
|
||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{"name": "app", "syslog_url":"yo://sup.com:1"}`, http.StatusBadRequest, errors.New(`invalid syslog url: "yo://sup.com:1"`)},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{"name": "app", "syslog_url":"yo://sup.com:1"}`, http.StatusBadRequest, errors.New(`invalid syslog url: "yo://sup.com:1" invalid scheme, only [tcp, udp, unix, unixgram, tcp+tls] are supported`)},
|
||||||
// success
|
// success
|
||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "teste" }`, http.StatusOK, nil},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "teste" }`, http.StatusOK, nil},
|
||||||
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "teste" , "annotations": {"k1":"v1", "k2":[]}}`, http.StatusOK, nil},
|
{datastore.NewMock(), logs.NewMock(), "/v2/apps", `{ "name": "teste" , "annotations": {"k1":"v1", "k2":[]}}`, http.StatusOK, nil},
|
||||||
|
|||||||
Reference in New Issue
Block a user