adding xhttp package tests for checking that endpoints return a correct status code according if google chrome and/or unoconv are disabled in the configuration

This commit is contained in:
Julien Neuhart
2019-08-19 17:21:30 +02:00
parent 08c97f280f
commit daf7cb9d6b
5 changed files with 241 additions and 90 deletions

View File

@@ -0,0 +1,126 @@
package xhttp
import (
"fmt"
"net/http"
"net/http/httptest"
"os"
"testing"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/assert"
"github.com/thecodingmachine/gotenberg/internal/pkg/conf"
"github.com/thecodingmachine/gotenberg/test"
)
func TestDisableChromeEndpoints(t *testing.T) {
os.Setenv(conf.DisableGoogleChromeEnvVar, "1")
config, err := conf.FromEnv()
assert.Nil(t, err)
srv := New(config)
// Ping endpoint should return 200.
req := httptest.NewRequest(http.MethodGet, pingEndpoint, nil)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// Merge endpoint should return 200.
body, contentType := test.MergeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, mergeEndpoint, body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// HTML endpoint should return 404.
body, contentType = test.HTMLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, htmlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// URL endpoint should return 404.
body, contentType = test.URLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, urlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// Markdown endpoint should return 404.
body, contentType = test.MarkdownMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, markdownEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// Office endpoint should return 200.
body, contentType = test.OfficeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, officeEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// finally...
os.Setenv(conf.DisableGoogleChromeEnvVar, "0")
}
func TestDisableUnoconvEndpoints(t *testing.T) {
os.Setenv(conf.DisableUnoconvEnvVar, "1")
config, err := conf.FromEnv()
assert.Nil(t, err)
srv := New(config)
// Ping endpoint should return 200.
req := httptest.NewRequest(http.MethodGet, pingEndpoint, nil)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// Merge endpoint should return 200.
body, contentType := test.MergeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, mergeEndpoint, body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// HTML endpoint should return 200.
body, contentType = test.HTMLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, htmlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// URL endpoint should return 200.
body, contentType = test.URLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, urlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// Markdown endpoint should return 404.
body, contentType = test.MarkdownMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, markdownEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// Office endpoint should return 404.
body, contentType = test.OfficeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, officeEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// finally...
os.Setenv(conf.DisableUnoconvEnvVar, "0")
}
func TestDisableChromeAndUnoconvEndpoints(t *testing.T) {
os.Setenv(conf.DisableGoogleChromeEnvVar, "1")
os.Setenv(conf.DisableUnoconvEnvVar, "1")
config, err := conf.FromEnv()
assert.Nil(t, err)
srv := New(config)
// Ping endpoint should return 200.
req := httptest.NewRequest(http.MethodGet, pingEndpoint, nil)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// Merge endpoint should return 200.
body, contentType := test.MergeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, mergeEndpoint, body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusOK, srv, req)
// HTML endpoint should return 404.
body, contentType = test.HTMLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, htmlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// URL endpoint should return 404.
body, contentType = test.URLMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, urlEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// Markdown endpoint should return 404.
body, contentType = test.MarkdownMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, markdownEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// Office endpoint should return 404.
body, contentType = test.OfficeMultipartForm(t, nil)
req = httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s%s", convertGroupEndpoint, officeEndpoint), body)
req.Header.Set(echo.HeaderContentType, contentType)
test.AssertStatusCode(t, http.StatusNotFound, srv, req)
// finally...
os.Setenv(conf.DisableGoogleChromeEnvVar, "0")
os.Setenv(conf.DisableUnoconvEnvVar, "0")
}

View File

@@ -7,15 +7,33 @@ import (
) )
const ( const (
maximumWaitTimeoutEnvVar string = "MAXIMUM_WAIT_TIMEOUT" // MaximumWaitTimeoutEnvVar contains the name
maximumWaitDelayEnvVar string = "MAXIMUM_WAIT_DELAY" // of the environment variable "MAXIMUM_WAIT_TIMEOUT".
maximumWebhookURLTimeoutEnvVar string = "MAXIMUM_WEBHOOK_URL_TIMEOUT" MaximumWaitTimeoutEnvVar string = "MAXIMUM_WAIT_TIMEOUT"
defaultWaitTimeoutEnvVar string = "DEFAULT_WAIT_TIMEOUT" // MaximumWaitDelayEnvVar contains the name
defaultWebhookURLTimeoutEnvVar string = "DEFAULT_WEBHOOK_URL_TIMEOUT" // of the environment variable "MAXIMUM_WAIT_DELAY".
defaultListenPortEnvVar string = "DEFAULT_LISTEN_PORT" MaximumWaitDelayEnvVar string = "MAXIMUM_WAIT_DELAY"
disableGoogleChromeEnvVar string = "DISABLE_GOOGLE_CHROME" // MaximumWebhookURLTimeoutEnvVar contains the name
disableUnoconvEnvVar string = "DISABLE_UNOCONV" // of the environment variable "MAXIMUM_WEBHOOK_URL_TIMEOUT".
logLevelEnvVar string = "LOG_LEVEL" MaximumWebhookURLTimeoutEnvVar string = "MAXIMUM_WEBHOOK_URL_TIMEOUT"
// DefaultWaitTimeoutEnvVar contains the name
// of the environment variable "DEFAULT_WAIT_TIMEOUT".
DefaultWaitTimeoutEnvVar string = "DEFAULT_WAIT_TIMEOUT"
// DefaultWebhookURLTimeoutEnvVar contains the name
// of the environment variable "DEFAULT_WEBHOOK_URL_TIMEOUT".
DefaultWebhookURLTimeoutEnvVar string = "DEFAULT_WEBHOOK_URL_TIMEOUT"
// DefaultListenPortEnvVar contains the name
// of the environment variable "DEFAULT_LISTEN_PORT".
DefaultListenPortEnvVar string = "DEFAULT_LISTEN_PORT"
// DisableGoogleChromeEnvVar contains the name
// of the environment variable "DISABLE_GOOGLE_CHROME".
DisableGoogleChromeEnvVar string = "DISABLE_GOOGLE_CHROME"
// DisableUnoconvEnvVar contains the name
// of the environment variable "DISABLE_UNOCONV".
DisableUnoconvEnvVar string = "DISABLE_UNOCONV"
// LogLevelEnvVar contains the name
// of the environment variable "LOG_LEVEL".
LogLevelEnvVar string = "LOG_LEVEL"
) )
// Config contains the application // Config contains the application
@@ -57,7 +75,7 @@ func FromEnv() (Config, error) {
resolver := func() (Config, error) { resolver := func() (Config, error) {
c := DefaultConfig() c := DefaultConfig()
maximumWaitTimeout, err := xassert.Float64FromEnv( maximumWaitTimeout, err := xassert.Float64FromEnv(
maximumWaitTimeoutEnvVar, MaximumWaitTimeoutEnvVar,
c.maximumWaitTimeout, c.maximumWaitTimeout,
xassert.Float64NotInferiorTo(0.0), xassert.Float64NotInferiorTo(0.0),
) )
@@ -66,7 +84,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
maximumWaitDelay, err := xassert.Float64FromEnv( maximumWaitDelay, err := xassert.Float64FromEnv(
maximumWaitDelayEnvVar, MaximumWaitDelayEnvVar,
c.maximumWaitDelay, c.maximumWaitDelay,
xassert.Float64NotInferiorTo(0.0), xassert.Float64NotInferiorTo(0.0),
) )
@@ -75,7 +93,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
maximumWebhookURLTimeout, err := xassert.Float64FromEnv( maximumWebhookURLTimeout, err := xassert.Float64FromEnv(
maximumWebhookURLTimeoutEnvVar, MaximumWebhookURLTimeoutEnvVar,
c.maximumWebhookURLTimeout, c.maximumWebhookURLTimeout,
xassert.Float64NotInferiorTo(0.0), xassert.Float64NotInferiorTo(0.0),
) )
@@ -84,7 +102,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
defaultWaitTimeout, err := xassert.Float64FromEnv( defaultWaitTimeout, err := xassert.Float64FromEnv(
defaultWaitTimeoutEnvVar, DefaultWaitTimeoutEnvVar,
c.defaultWaitTimeout, c.defaultWaitTimeout,
xassert.Float64NotInferiorTo(0.0), xassert.Float64NotInferiorTo(0.0),
xassert.Float64NotSuperiorTo(c.maximumWaitTimeout), xassert.Float64NotSuperiorTo(c.maximumWaitTimeout),
@@ -94,7 +112,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
defaultWebhookURLTimeout, err := xassert.Float64FromEnv( defaultWebhookURLTimeout, err := xassert.Float64FromEnv(
defaultWebhookURLTimeoutEnvVar, DefaultWebhookURLTimeoutEnvVar,
c.defaultWebhookURLTimeout, c.defaultWebhookURLTimeout,
xassert.Float64NotInferiorTo(0.0), xassert.Float64NotInferiorTo(0.0),
xassert.Float64NotSuperiorTo(c.defaultWebhookURLTimeout), xassert.Float64NotSuperiorTo(c.defaultWebhookURLTimeout),
@@ -104,7 +122,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
defaultListenPort, err := xassert.Int64FromEnv( defaultListenPort, err := xassert.Int64FromEnv(
defaultListenPortEnvVar, DefaultListenPortEnvVar,
c.defaultListenPort, c.defaultListenPort,
xassert.Int64NotInferiorTo(0), xassert.Int64NotInferiorTo(0),
xassert.Int64NotSuperiorTo(65535), xassert.Int64NotSuperiorTo(65535),
@@ -114,7 +132,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
disableGoogleChrome, err := xassert.BoolFromEnv( disableGoogleChrome, err := xassert.BoolFromEnv(
disableGoogleChromeEnvVar, DisableGoogleChromeEnvVar,
c.disableGoogleChrome, c.disableGoogleChrome,
) )
c.disableGoogleChrome = disableGoogleChrome c.disableGoogleChrome = disableGoogleChrome
@@ -122,7 +140,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
disableUnoconv, err := xassert.BoolFromEnv( disableUnoconv, err := xassert.BoolFromEnv(
disableUnoconvEnvVar, DisableUnoconvEnvVar,
c.disableUnoconv, c.disableUnoconv,
) )
c.disableUnoconv = disableUnoconv c.disableUnoconv = disableUnoconv
@@ -130,7 +148,7 @@ func FromEnv() (Config, error) {
return c, err return c, err
} }
logLevel, err := xassert.StringFromEnv( logLevel, err := xassert.StringFromEnv(
logLevelEnvVar, LogLevelEnvVar,
string(c.logLevel), string(c.logLevel),
xassert.StringOneOf(xlog.Levels()), xassert.StringOneOf(xlog.Levels()),
) )

View File

@@ -30,27 +30,27 @@ func TestMaximumWaitTimeoutFromEnv(t *testing.T) {
err error err error
) )
// MAXIMUM_WAIT_TIMEOUT correctly set. // MAXIMUM_WAIT_TIMEOUT correctly set.
os.Setenv(maximumWaitTimeoutEnvVar, "10.0") os.Setenv(MaximumWaitTimeoutEnvVar, "10.0")
expected = DefaultConfig() expected = DefaultConfig()
expected.maximumWaitTimeout = 10.0 expected.maximumWaitTimeout = 10.0
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitTimeoutEnvVar) os.Unsetenv(MaximumWaitTimeoutEnvVar)
// MAXIMUM_WAIT_TIMEOUT wrongly set. // MAXIMUM_WAIT_TIMEOUT wrongly set.
os.Setenv(maximumWaitTimeoutEnvVar, "foo") os.Setenv(MaximumWaitTimeoutEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitTimeoutEnvVar) os.Unsetenv(MaximumWaitTimeoutEnvVar)
// MAXIMUM_WAIT_TIMEOUT < 0. // MAXIMUM_WAIT_TIMEOUT < 0.
os.Setenv(maximumWaitTimeoutEnvVar, "-1.0") os.Setenv(MaximumWaitTimeoutEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitTimeoutEnvVar) os.Unsetenv(MaximumWaitTimeoutEnvVar)
} }
func TestMaximumWaitDelayFromEnv(t *testing.T) { func TestMaximumWaitDelayFromEnv(t *testing.T) {
@@ -60,27 +60,27 @@ func TestMaximumWaitDelayFromEnv(t *testing.T) {
err error err error
) )
// MAXIMUM_WAIT_DELAY correctly set. // MAXIMUM_WAIT_DELAY correctly set.
os.Setenv(maximumWaitDelayEnvVar, "10.0") os.Setenv(MaximumWaitDelayEnvVar, "10.0")
expected = DefaultConfig() expected = DefaultConfig()
expected.maximumWaitDelay = 10.0 expected.maximumWaitDelay = 10.0
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitDelayEnvVar) os.Unsetenv(MaximumWaitDelayEnvVar)
// MAXIMUM_WAIT_DELAY wrongly set. // MAXIMUM_WAIT_DELAY wrongly set.
os.Setenv(maximumWaitDelayEnvVar, "foo") os.Setenv(MaximumWaitDelayEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitDelayEnvVar) os.Unsetenv(MaximumWaitDelayEnvVar)
// MAXIMUM_WAIT_DELAY < 0. // MAXIMUM_WAIT_DELAY < 0.
os.Setenv(maximumWaitDelayEnvVar, "-1.0") os.Setenv(MaximumWaitDelayEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWaitDelayEnvVar) os.Unsetenv(MaximumWaitDelayEnvVar)
} }
func TestMaximumWebhookURLTimeoutFromEnv(t *testing.T) { func TestMaximumWebhookURLTimeoutFromEnv(t *testing.T) {
@@ -90,27 +90,27 @@ func TestMaximumWebhookURLTimeoutFromEnv(t *testing.T) {
err error err error
) )
// MAXIMUM_WEBHOOK_URL_TIMEOUT correctly set. // MAXIMUM_WEBHOOK_URL_TIMEOUT correctly set.
os.Setenv(maximumWebhookURLTimeoutEnvVar, "10.0") os.Setenv(MaximumWebhookURLTimeoutEnvVar, "10.0")
expected = DefaultConfig() expected = DefaultConfig()
expected.maximumWebhookURLTimeout = 10.0 expected.maximumWebhookURLTimeout = 10.0
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWebhookURLTimeoutEnvVar) os.Unsetenv(MaximumWebhookURLTimeoutEnvVar)
// MAXIMUM_WEBHOOK_URL_TIMEOUT wrongly set. // MAXIMUM_WEBHOOK_URL_TIMEOUT wrongly set.
os.Setenv(maximumWebhookURLTimeoutEnvVar, "foo") os.Setenv(MaximumWebhookURLTimeoutEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWebhookURLTimeoutEnvVar) os.Unsetenv(MaximumWebhookURLTimeoutEnvVar)
// MAXIMUM_WEBHOOK_URL_TIMEOUT < 0. // MAXIMUM_WEBHOOK_URL_TIMEOUT < 0.
os.Setenv(maximumWebhookURLTimeoutEnvVar, "-1.0") os.Setenv(MaximumWebhookURLTimeoutEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(maximumWebhookURLTimeoutEnvVar) os.Unsetenv(MaximumWebhookURLTimeoutEnvVar)
} }
func TestDefaultWaitTimeoutFromEnv(t *testing.T) { func TestDefaultWaitTimeoutFromEnv(t *testing.T) {
@@ -120,34 +120,34 @@ func TestDefaultWaitTimeoutFromEnv(t *testing.T) {
err error err error
) )
// DEFAULT_WAIT_TIMEOUT correctly set. // DEFAULT_WAIT_TIMEOUT correctly set.
os.Setenv(defaultWaitTimeoutEnvVar, "10.0") os.Setenv(DefaultWaitTimeoutEnvVar, "10.0")
expected = DefaultConfig() expected = DefaultConfig()
expected.defaultWaitTimeout = 10.0 expected.defaultWaitTimeout = 10.0
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWaitTimeoutEnvVar) os.Unsetenv(DefaultWaitTimeoutEnvVar)
// DEFAULT_WAIT_TIMEOUT wrongly set. // DEFAULT_WAIT_TIMEOUT wrongly set.
os.Setenv(defaultWaitTimeoutEnvVar, "foo") os.Setenv(DefaultWaitTimeoutEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWaitTimeoutEnvVar) os.Unsetenv(DefaultWaitTimeoutEnvVar)
// DEFAULT_WAIT_TIMEOUT < 0. // DEFAULT_WAIT_TIMEOUT < 0.
os.Setenv(defaultWaitTimeoutEnvVar, "-1.0") os.Setenv(DefaultWaitTimeoutEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWaitTimeoutEnvVar) os.Unsetenv(DefaultWaitTimeoutEnvVar)
// DEFAULT_WAIT_TIMEOUT > MAXIMUM_WAIT_TIMEOUT. // DEFAULT_WAIT_TIMEOUT > MAXIMUM_WAIT_TIMEOUT.
os.Setenv(defaultWaitTimeoutEnvVar, "40.0") os.Setenv(DefaultWaitTimeoutEnvVar, "40.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWaitTimeoutEnvVar) os.Unsetenv(DefaultWaitTimeoutEnvVar)
} }
func TestDefaultWebhookURLTimeoutFromEnv(t *testing.T) { func TestDefaultWebhookURLTimeoutFromEnv(t *testing.T) {
@@ -157,34 +157,34 @@ func TestDefaultWebhookURLTimeoutFromEnv(t *testing.T) {
err error err error
) )
// DEFAULT_WEBHOOK_URL_TIMEOUT correctly set. // DEFAULT_WEBHOOK_URL_TIMEOUT correctly set.
os.Setenv(defaultWebhookURLTimeoutEnvVar, "10.0") os.Setenv(DefaultWebhookURLTimeoutEnvVar, "10.0")
expected = DefaultConfig() expected = DefaultConfig()
expected.defaultWebhookURLTimeout = 10.0 expected.defaultWebhookURLTimeout = 10.0
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWebhookURLTimeoutEnvVar) os.Unsetenv(DefaultWebhookURLTimeoutEnvVar)
// DEFAULT_WEBHOOK_URL_TIMEOUT wrongly set. // DEFAULT_WEBHOOK_URL_TIMEOUT wrongly set.
os.Setenv(defaultWebhookURLTimeoutEnvVar, "foo") os.Setenv(DefaultWebhookURLTimeoutEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWebhookURLTimeoutEnvVar) os.Unsetenv(DefaultWebhookURLTimeoutEnvVar)
// DEFAULT_WEBHOOK_URL_TIMEOUT < 0. // DEFAULT_WEBHOOK_URL_TIMEOUT < 0.
os.Setenv(defaultWebhookURLTimeoutEnvVar, "-1.0") os.Setenv(DefaultWebhookURLTimeoutEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWebhookURLTimeoutEnvVar) os.Unsetenv(DefaultWebhookURLTimeoutEnvVar)
// DEFAULT_WEBHOOK_URL_TIMEOUT > MAXIMUM_WEBHOOK_URL_TIMEOUT. // DEFAULT_WEBHOOK_URL_TIMEOUT > MAXIMUM_WEBHOOK_URL_TIMEOUT.
os.Setenv(defaultWebhookURLTimeoutEnvVar, "40.0") os.Setenv(DefaultWebhookURLTimeoutEnvVar, "40.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultWebhookURLTimeoutEnvVar) os.Unsetenv(DefaultWebhookURLTimeoutEnvVar)
} }
func TestDefaultListenPortFromEnv(t *testing.T) { func TestDefaultListenPortFromEnv(t *testing.T) {
@@ -194,34 +194,34 @@ func TestDefaultListenPortFromEnv(t *testing.T) {
err error err error
) )
// DEFAULT_LISTEN_PORT correctly set. // DEFAULT_LISTEN_PORT correctly set.
os.Setenv(defaultListenPortEnvVar, "80") os.Setenv(DefaultListenPortEnvVar, "80")
expected = DefaultConfig() expected = DefaultConfig()
expected.defaultListenPort = 80 expected.defaultListenPort = 80
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultListenPortEnvVar) os.Unsetenv(DefaultListenPortEnvVar)
// DEFAULT_LISTEN_PORT wrongly set. // DEFAULT_LISTEN_PORT wrongly set.
os.Setenv(defaultListenPortEnvVar, "foo") os.Setenv(DefaultListenPortEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultListenPortEnvVar) os.Unsetenv(DefaultListenPortEnvVar)
// DEFAULT_LISTEN_PORT < 0. // DEFAULT_LISTEN_PORT < 0.
os.Setenv(defaultListenPortEnvVar, "-1.0") os.Setenv(DefaultListenPortEnvVar, "-1.0")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultListenPortEnvVar) os.Unsetenv(DefaultListenPortEnvVar)
// DEFAULT_LISTEN_PORT > 65535. // DEFAULT_LISTEN_PORT > 65535.
os.Setenv(defaultListenPortEnvVar, "65536") os.Setenv(DefaultListenPortEnvVar, "65536")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(defaultListenPortEnvVar) os.Unsetenv(DefaultListenPortEnvVar)
} }
func TestDisableGoogleChromeFromEnv(t *testing.T) { func TestDisableGoogleChromeFromEnv(t *testing.T) {
@@ -231,27 +231,27 @@ func TestDisableGoogleChromeFromEnv(t *testing.T) {
err error err error
) )
// DISABLE_GOOGLE_CHROME correctly set. // DISABLE_GOOGLE_CHROME correctly set.
os.Setenv(disableGoogleChromeEnvVar, "1") os.Setenv(DisableGoogleChromeEnvVar, "1")
expected = DefaultConfig() expected = DefaultConfig()
expected.disableGoogleChrome = true expected.disableGoogleChrome = true
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableGoogleChromeEnvVar) os.Unsetenv(DisableGoogleChromeEnvVar)
os.Setenv(disableGoogleChromeEnvVar, "0") os.Setenv(DisableGoogleChromeEnvVar, "0")
expected = DefaultConfig() expected = DefaultConfig()
expected.disableGoogleChrome = false expected.disableGoogleChrome = false
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableGoogleChromeEnvVar) os.Unsetenv(DisableGoogleChromeEnvVar)
// DISABLE_GOOGLE_CHROME wrongly set. // DISABLE_GOOGLE_CHROME wrongly set.
os.Setenv(disableGoogleChromeEnvVar, "foo") os.Setenv(DisableGoogleChromeEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableGoogleChromeEnvVar) os.Unsetenv(DisableGoogleChromeEnvVar)
} }
func TestDisableUnoconvFromEnv(t *testing.T) { func TestDisableUnoconvFromEnv(t *testing.T) {
@@ -261,27 +261,27 @@ func TestDisableUnoconvFromEnv(t *testing.T) {
err error err error
) )
// DISABLE_UNOCONV correctly set. // DISABLE_UNOCONV correctly set.
os.Setenv(disableUnoconvEnvVar, "1") os.Setenv(DisableUnoconvEnvVar, "1")
expected = DefaultConfig() expected = DefaultConfig()
expected.disableUnoconv = true expected.disableUnoconv = true
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableUnoconvEnvVar) os.Unsetenv(DisableUnoconvEnvVar)
os.Setenv(disableUnoconvEnvVar, "0") os.Setenv(DisableUnoconvEnvVar, "0")
expected = DefaultConfig() expected = DefaultConfig()
expected.disableUnoconv = false expected.disableUnoconv = false
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableUnoconvEnvVar) os.Unsetenv(DisableUnoconvEnvVar)
// DISABLE_UNOCONV wrongly set. // DISABLE_UNOCONV wrongly set.
os.Setenv(disableUnoconvEnvVar, "foo") os.Setenv(DisableUnoconvEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(disableUnoconvEnvVar) os.Unsetenv(DisableUnoconvEnvVar)
} }
func TestLogLevelFromEnv(t *testing.T) { func TestLogLevelFromEnv(t *testing.T) {
@@ -291,33 +291,33 @@ func TestLogLevelFromEnv(t *testing.T) {
err error err error
) )
// LOG_LEVEL correctly set. // LOG_LEVEL correctly set.
os.Setenv(logLevelEnvVar, "DEBUG") os.Setenv(LogLevelEnvVar, "DEBUG")
expected = DefaultConfig() expected = DefaultConfig()
expected.logLevel = xlog.DebugLevel expected.logLevel = xlog.DebugLevel
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(logLevelEnvVar) os.Unsetenv(LogLevelEnvVar)
os.Setenv(logLevelEnvVar, "INFO") os.Setenv(LogLevelEnvVar, "INFO")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(logLevelEnvVar) os.Unsetenv(LogLevelEnvVar)
os.Setenv(logLevelEnvVar, "ERROR") os.Setenv(LogLevelEnvVar, "ERROR")
expected = DefaultConfig() expected = DefaultConfig()
expected.logLevel = xlog.ErrorLevel expected.logLevel = xlog.ErrorLevel
result, err = FromEnv() result, err = FromEnv()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(logLevelEnvVar) os.Unsetenv(LogLevelEnvVar)
// LOG_LEVEL wrongly set. // LOG_LEVEL wrongly set.
os.Setenv(logLevelEnvVar, "foo") os.Setenv(LogLevelEnvVar, "foo")
expected = DefaultConfig() expected = DefaultConfig()
result, err = FromEnv() result, err = FromEnv()
test.AssertError(t, err) test.AssertError(t, err)
assert.Equal(t, expected, result) assert.Equal(t, expected, result)
os.Unsetenv(logLevelEnvVar) os.Unsetenv(LogLevelEnvVar)
} }
func TestGetters(t *testing.T) { func TestGetters(t *testing.T) {

17
test/http.go Normal file
View File

@@ -0,0 +1,17 @@
package test
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
// AssertStatusCode checks if the given request
// returns the expected status code.
func AssertStatusCode(t *testing.T, expectedStatusCode int, srv http.Handler, req *http.Request) {
rec := httptest.NewRecorder()
srv.ServeHTTP(rec, req)
assert.Equal(t, expectedStatusCode, rec.Code)
}

View File

@@ -2,8 +2,6 @@ package test
import ( import (
"io" "io"
"net/http"
"net/http/httptest"
"os" "os"
"testing" "testing"
@@ -11,14 +9,6 @@ import (
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
) )
// AssertStatusCode checks if the given request
// returns the expected status code.
func AssertStatusCode(t *testing.T, expectedStatusCode int, srv http.Handler, req *http.Request) {
rec := httptest.NewRecorder()
srv.ServeHTTP(rec, req)
assert.Equal(t, expectedStatusCode, rec.Code)
}
// AssertDirectoryEmpty checks if given directory // AssertDirectoryEmpty checks if given directory
// is empty. // is empty.
func AssertDirectoryEmpty(t *testing.T, directory string) { func AssertDirectoryEmpty(t *testing.T, directory string) {