From e839430270f7b8490631fedffb5f4111fecd9a88 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 19 Aug 2019 16:44:13 +0200 Subject: [PATCH] adding WebhookURLTimeoutArg for retrieving and validating webhookURLTimeout form field --- internal/app/xhttp/pkg/resource/arg.go | 21 ++++++++++ internal/app/xhttp/pkg/resource/arg_test.go | 46 ++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/internal/app/xhttp/pkg/resource/arg.go b/internal/app/xhttp/pkg/resource/arg.go index 05456170..35c7800b 100644 --- a/internal/app/xhttp/pkg/resource/arg.go +++ b/internal/app/xhttp/pkg/resource/arg.go @@ -121,6 +121,27 @@ func WaitDelayArg(r Resource, config conf.Config) (float64, error) { return result, nil } +/* +WebhookURLTimeoutArg is a helper for retrieving +the "webhookURLTimeout" argument as float64. + +It also validates it against the application +configuration. +*/ +func WebhookURLTimeoutArg(r Resource, config conf.Config) (float64, error) { + const op string = "resource.WebhookURLTimeoutArg" + result, err := r.Float64Arg( + WebhookURLTimeoutArgKey, + config.DefaultWebhookURLTimeout(), + xassert.Float64NotInferiorTo(0), + xassert.Float64NotSuperiorTo(config.MaximumWebhookURLTimeout()), + ) + if err != nil { + return result, xerror.New(op, err) + } + return result, nil +} + /* PaperSizeArgs is a helper for retrieving the "paperWidth" and "paperHeight" arguments diff --git a/internal/app/xhttp/pkg/resource/arg_test.go b/internal/app/xhttp/pkg/resource/arg_test.go index 9996604b..0d1e50c5 100644 --- a/internal/app/xhttp/pkg/resource/arg_test.go +++ b/internal/app/xhttp/pkg/resource/arg_test.go @@ -101,7 +101,7 @@ func TestWaitDelayArg(t *testing.T) { test.AssertError(t, err) assert.Equal(t, expected, v) // shoul not be OK as argument - // value is > config.MaximumWaitTimeout(). + // value is > config.MaximumWaitDelay(). expected = defaultValue r.WithArg(WaitDelayArgKey, "31.0") v, err = WaitDelayArg(r, config) @@ -119,6 +119,50 @@ func TestWaitDelayArg(t *testing.T) { assert.Nil(t, err) } +func TestWebhookURLTimeoutArg(t *testing.T) { + const resourceDirectoryName string = "foo" + var expected float64 + logger := test.DebugLogger() + config := conf.DefaultConfig() + r, err := New(logger, resourceDirectoryName) + assert.Nil(t, err) + // argument does not exist. + expected = config.DefaultWebhookURLTimeout() + v, err := WebhookURLTimeoutArg(r, config) + assert.Nil(t, err) + assert.Equal(t, expected, v) + // argument exist. + expected = 5.0 + r.WithArg(WebhookURLTimeoutArgKey, "5.0") + v, err = WebhookURLTimeoutArg(r, config) + assert.Nil(t, err) + assert.Equal(t, expected, v) + // shoul not be OK as argument + // value is < 0. + expected = config.DefaultWebhookURLTimeout() + r.WithArg(WebhookURLTimeoutArgKey, "-1.0") + v, err = WebhookURLTimeoutArg(r, config) + test.AssertError(t, err) + assert.Equal(t, expected, v) + // shoul not be OK as argument + // value is > config.MaximumWebhookURLTimeout(). + expected = config.DefaultWebhookURLTimeout() + r.WithArg(WebhookURLTimeoutArgKey, "31.0") + v, err = WebhookURLTimeoutArg(r, config) + test.AssertError(t, err) + assert.Equal(t, expected, v) + // should not be OK as + // argument value is invalid. + expected = config.DefaultWebhookURLTimeout() + r.WithArg(WebhookURLTimeoutArgKey, "foo") + v, err = WebhookURLTimeoutArg(r, config) + test.AssertError(t, err) + assert.Equal(t, expected, v) + // finally... + err = r.Close() + assert.Nil(t, err) +} + func TestPaperSizeArgs(t *testing.T) { const resourceDirectoryName string = "foo" var expected float64