From 59b7978470eee407528357b15e08f4e2fd8e5240 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Tue, 24 Jan 2023 11:22:31 +0100 Subject: [PATCH] Add tests --- config/value/network_test.go | 127 +++++++++++++++++++++++++++ config/value/os_test.go | 27 ++++++ config/value/primitives_test.go | 147 ++++++++++++++++++++++++++++++++ config/value/time_test.go | 30 +++++++ config/value/value_test.go | 20 ----- 5 files changed, 331 insertions(+), 20 deletions(-) create mode 100644 config/value/network_test.go create mode 100644 config/value/os_test.go create mode 100644 config/value/primitives_test.go create mode 100644 config/value/time_test.go diff --git a/config/value/network_test.go b/config/value/network_test.go new file mode 100644 index 00000000..add7190a --- /dev/null +++ b/config/value/network_test.go @@ -0,0 +1,127 @@ +package value + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestAddressValue(t *testing.T) { + var x string + + val := NewAddress(&x, ":8080") + + require.Equal(t, ":8080", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = "foobaz:9090" + + require.Equal(t, "foobaz:9090", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("fooboz:7070") + + require.Equal(t, "fooboz:7070", x) +} + +func TestCIDRListValue(t *testing.T) { + var x []string + + val := NewCIDRList(&x, []string{}, " ") + + require.Equal(t, "(empty)", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, true, val.IsEmpty()) + + x = []string{"127.0.0.1/32", "127.0.0.2/32"} + + require.Equal(t, "127.0.0.1/32 127.0.0.2/32", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("129.0.0.1/32 129.0.0.2/32") + + require.Equal(t, []string{"129.0.0.1/32", "129.0.0.2/32"}, x) +} + +func TestCORSOriginaValue(t *testing.T) { + var x []string + + val := NewCORSOrigins(&x, []string{}, " ") + + require.Equal(t, "(empty)", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, true, val.IsEmpty()) + + x = []string{"*"} + + require.Equal(t, "*", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("http://localhost") + + require.Equal(t, []string{"http://localhost"}, x) +} + +func TestPortValue(t *testing.T) { + var x int + + val := NewPort(&x, 11) + + require.Equal(t, "11", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = 42 + + require.Equal(t, "42", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("77") + + require.Equal(t, int(77), x) +} + +func TestURLValue(t *testing.T) { + var x string + + val := NewURL(&x, "http://localhost/foobar") + + require.Equal(t, "http://localhost/foobar", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = "http://localhost:8080/foobar" + + require.Equal(t, "http://localhost:8080/foobar", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("http://localhost:8080/fooboz/foobaz") + + require.Equal(t, "http://localhost:8080/fooboz/foobaz", x) +} + +func TestEmailValue(t *testing.T) { + var x string + + val := NewEmail(&x, "foobar@example.com") + + require.Equal(t, "foobar@example.com", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = "foobar+baz@example.com" + + require.Equal(t, "foobar+baz@example.com", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("foobar@sub.example.com") + + require.Equal(t, "foobar@sub.example.com", x) +} diff --git a/config/value/os_test.go b/config/value/os_test.go new file mode 100644 index 00000000..dd01317a --- /dev/null +++ b/config/value/os_test.go @@ -0,0 +1,27 @@ +package value + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestAbsolutePathValue(t *testing.T) { + var x string + + val := NewAbsolutePath(&x, "foobar") + + require.Equal(t, "foobar", val.String()) + require.Error(t, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = "/foobaz" + + require.Equal(t, "/foobaz", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("/fooboz") + + require.Equal(t, "/fooboz", x) +} diff --git a/config/value/primitives_test.go b/config/value/primitives_test.go new file mode 100644 index 00000000..4b815b90 --- /dev/null +++ b/config/value/primitives_test.go @@ -0,0 +1,147 @@ +package value + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestStringValue(t *testing.T) { + var x string + + val := NewString(&x, "foobar") + + require.Equal(t, "foobar", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = "foobaz" + + require.Equal(t, "foobaz", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("fooboz") + + require.Equal(t, "fooboz", x) +} + +func TestStringListValue(t *testing.T) { + var x []string + + val := NewStringList(&x, []string{"foobar"}, " ") + + require.Equal(t, "foobar", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = []string{"foobar", "foobaz"} + + require.Equal(t, "foobar foobaz", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("fooboz foobar") + + require.Equal(t, []string{"fooboz", "foobar"}, x) +} + +func TestStringMapStringValue(t *testing.T) { + var x map[string]string + + val := NewStringMapString(&x, map[string]string{"a": "foobar"}) + + require.Equal(t, "a:foobar", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = map[string]string{"a": "foobar", "b": "foobaz"} + + require.Equal(t, "a:foobar b:foobaz", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("x:fooboz y:foobar") + + require.Equal(t, map[string]string{"x": "fooboz", "y": "foobar"}, x) +} + +func TestBoolValue(t *testing.T) { + var x bool + + val := NewBool(&x, false) + + require.Equal(t, "false", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, true, val.IsEmpty()) + + x = true + + require.Equal(t, "true", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("false") + + require.Equal(t, false, x) +} + +func TestIntValue(t *testing.T) { + var x int + + val := NewInt(&x, 11) + + require.Equal(t, "11", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = 42 + + require.Equal(t, "42", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("77") + + require.Equal(t, int(77), x) +} + +func TestInt64Value(t *testing.T) { + var x int64 + + val := NewInt64(&x, 11) + + require.Equal(t, "11", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = 42 + + require.Equal(t, "42", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("77") + + require.Equal(t, int64(77), x) +} + +func TestUint64Value(t *testing.T) { + var x uint64 + + val := NewUint64(&x, 11) + + require.Equal(t, "11", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = 42 + + require.Equal(t, "42", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("77") + + require.Equal(t, uint64(77), x) +} diff --git a/config/value/time_test.go b/config/value/time_test.go new file mode 100644 index 00000000..3259d7d2 --- /dev/null +++ b/config/value/time_test.go @@ -0,0 +1,30 @@ +package value + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestTimeValue(t *testing.T) { + var x time.Time + + tm := time.Unix(1257894000, 0).UTC() + + val := NewTime(&x, tm) + + require.Equal(t, "2009-11-10T23:00:00Z", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + x = time.Unix(1257894001, 0).UTC() + + require.Equal(t, "2009-11-10T23:00:01Z", val.String()) + require.Equal(t, nil, val.Validate()) + require.Equal(t, false, val.IsEmpty()) + + val.Set("2009-11-11T23:00:00Z") + + require.Equal(t, time.Time(time.Date(2009, time.November, 11, 23, 0, 0, 0, time.UTC)), x) +} diff --git a/config/value/value_test.go b/config/value/value_test.go index aeb707be..3f36b17f 100644 --- a/config/value/value_test.go +++ b/config/value/value_test.go @@ -6,26 +6,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestIntValue(t *testing.T) { - var i int - - ivar := NewInt(&i, 11) - - require.Equal(t, "11", ivar.String()) - require.Equal(t, nil, ivar.Validate()) - require.Equal(t, false, ivar.IsEmpty()) - - i = 42 - - require.Equal(t, "42", ivar.String()) - require.Equal(t, nil, ivar.Validate()) - require.Equal(t, false, ivar.IsEmpty()) - - ivar.Set("77") - - require.Equal(t, int(77), i) -} - type testdata struct { value1 int value2 int