Files
gotenberg/internal/pkg/xassert/xassert_test.go
Julien Neuhart 6964124c1b typo fix
2019-07-28 18:15:47 +02:00

290 lines
7.9 KiB
Go

package xassert
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/thecodingmachine/gotenberg/test"
)
func TestString(t *testing.T) {
const (
defaultValue string = "FOO"
)
var expected string
rule := StringOneOf([]string{"FOO", "BAR"})
// empty value, result should be equal
// to the default value.
v, err := String("foo", "", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to given value
// as it is one of "FOO" and "BAR".
expected = "FOO"
v, err = String("foo", expected, defaultValue, rule)
assert.Equal(t, expected, v)
assert.Nil(t, err)
// should not be OK as given value is not
// one of "FOO" and "BAR".
v, err = String("foo", "BAZ", defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
}
func TestStringFromEnv(t *testing.T) {
const (
envVar string = "FOO"
defaultValue string = "FOO"
)
var expected string
rule := StringOneOf([]string{"FOO", "BAR"})
// no environment variable set,
// value should be equal to default value.
v, err := StringFromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to environment variable
// value as it is one of "FOO" and "BAR".
expected = "BAR"
os.Setenv(envVar, expected)
v, err = StringFromEnv(envVar, defaultValue, rule)
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value is not one of "FOO" and "BAR".
os.Setenv(envVar, "BAZ")
v, err = StringFromEnv(envVar, defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
}
func TestInt64(t *testing.T) {
const (
defaultValue int64 = 10
)
var expected int64
rule := Int64NotInferiorTo(6)
// empty value, result should be equal
// to the default value.
v, err := Int64("foo", "", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to given value
// but as integer.
v, err = Int64("foo", "5", defaultValue)
expected = 5
assert.Equal(t, expected, v)
assert.Nil(t, err)
// should not be OK as given value is not
// a string representation of an integer.
v, err = Int64("foo", "foo", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
// should not be OK as given value does not
// validate the rule x >= 6.
v, err = Int64("foo", "5", defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
}
func TestInt64FromEnv(t *testing.T) {
const (
envVar string = "FOO"
defaultValue int64 = 10
)
var expected int64
rule := Int64NotInferiorTo(6)
// no environment variable set,
// value should be equal to default value.
v, err := Int64FromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to environment variable
// value but as integer.
os.Setenv(envVar, "5")
v, err = Int64FromEnv(envVar, defaultValue)
expected = 5
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value is not a string representation of an integer.
os.Setenv(envVar, "foo")
v, err = Int64FromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value does not validate the rule x >= 6.
os.Setenv(envVar, "5")
v, err = Int64FromEnv(envVar, defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
}
func TestFloat64(t *testing.T) {
const defaultValue float64 = 10.0
var expected float64
rule := Float64NotInferiorTo(6.0)
// empty value, result should be equal
// to the default value.
v, err := Float64("foo", "", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to given value
// but as float.
v, err = Float64("foo", "5.5", defaultValue)
expected = 5.5
assert.Equal(t, expected, v)
assert.Nil(t, err)
// should not be OK as given value is not
// a string representation of a float.
v, err = Float64("foo", "foo", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
// should not be OK as given value does not
// validate the rule x >= 6.
v, err = Float64("foo", "5.0", defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
}
func TestFloat64FromEnv(t *testing.T) {
const (
envVar string = "FOO"
defaultValue float64 = 10.0
)
var expected float64
rule := Float64NotInferiorTo(6.0)
// no environment variable set,
// value should be equal to default value.
v, err := Float64FromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to environment variable
// value but as float.
os.Setenv(envVar, "5.5")
v, err = Float64FromEnv(envVar, defaultValue)
expected = 5.5
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value is not a string representation of a float.
os.Setenv(envVar, "foo")
v, err = Float64FromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value does not validate the rule x >= 6.
os.Setenv(envVar, "5.0")
v, err = Float64FromEnv(envVar, defaultValue, rule)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
}
func TestBool(t *testing.T) {
const defaultValue bool = true
var expected bool
// empty value, result should be equal
// to the default value.
v, err := Bool("foo", "", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to given value
// but as boolean.
v, err = Bool("foo", "1", defaultValue)
expected = true
assert.Equal(t, expected, v)
assert.Nil(t, err)
v, err = Bool("foo", "true", defaultValue)
expected = true
assert.Equal(t, expected, v)
assert.Nil(t, err)
v, err = Bool("foo", "0", defaultValue)
expected = false
assert.Equal(t, expected, v)
assert.Nil(t, err)
v, err = Bool("foo", "false", defaultValue)
expected = false
assert.Equal(t, expected, v)
assert.Nil(t, err)
// should not be OK as given value is not
// a string representation of a boolean.
v, err = Bool("foo", "foo", defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
}
func TestBoolFromEnv(t *testing.T) {
const (
envVar string = "FOO"
defaultValue bool = true
)
var expected bool
// no environment variable set,
// value should be equal to default value.
v, err := BoolFromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
assert.Nil(t, err)
// result should be equal to environment variable
// value but as boolean.
os.Setenv(envVar, "1")
v, err = BoolFromEnv(envVar, defaultValue)
expected = true
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
os.Setenv(envVar, "true")
v, err = BoolFromEnv(envVar, defaultValue)
expected = true
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
os.Setenv(envVar, "0")
v, err = BoolFromEnv(envVar, defaultValue)
expected = false
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
os.Setenv(envVar, "false")
v, err = BoolFromEnv(envVar, defaultValue)
expected = false
assert.Equal(t, expected, v)
assert.Nil(t, err)
os.Unsetenv(envVar)
// should not be OK as environment variable
// value is not a string representation of a boolean.
os.Setenv(envVar, "foo")
v, err = BoolFromEnv(envVar, defaultValue)
expected = defaultValue
assert.Equal(t, expected, v)
test.AssertError(t, err)
os.Unsetenv(envVar)
}