mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2024-11-28 09:08:44 +02:00
Merge pull request #689 from grnhse/finicky-logging-time-test
Fix time issue causing finicky failures in logging tests
This commit is contained in:
commit
7b21f53aad
@ -11,6 +11,7 @@
|
||||
|
||||
## Changes since v6.0.0
|
||||
|
||||
- [#689](https://github.com/oauth2-proxy/oauth2-proxy/pull/689) Fix finicky logging_handler_test from time drift (@NickMeves)
|
||||
- [#699](https://github.com/oauth2-proxy/oauth2-proxy/pull/699) Align persistence ginkgo tests with conventions (@NickMeves)
|
||||
- [#696](https://github.com/oauth2-proxy/oauth2-proxy/pull/696) Preserve query when building redirect
|
||||
- [#561](https://github.com/oauth2-proxy/oauth2-proxy/pull/561) Refactor provider URLs to package level vars (@JoelSpeed)
|
||||
|
@ -2,37 +2,89 @@ package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/oauth2-proxy/oauth2-proxy/pkg/logger"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestLoggingHandler_ServeHTTP(t *testing.T) {
|
||||
ts := time.Now()
|
||||
const RequestLoggingFormatWithoutTime = "{{.Client}} - {{.Username}} [TIMELESS] {{.Host}} {{.RequestMethod}} {{.Upstream}} {{.RequestURI}} {{.Protocol}} {{.UserAgent}} {{.StatusCode}} {{.ResponseSize}} {{.RequestDuration}}"
|
||||
|
||||
func TestLoggingHandler_ServeHTTP(t *testing.T) {
|
||||
tests := []struct {
|
||||
Format,
|
||||
ExpectedLogMessage,
|
||||
Path string
|
||||
ExcludePaths []string
|
||||
Format string
|
||||
ExpectedLogMessage string
|
||||
Path string
|
||||
ExcludePaths []string
|
||||
}{
|
||||
{logger.DefaultRequestLoggingFormat, fmt.Sprintf("127.0.0.1 - - [%s] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n", logger.FormatTimestamp(ts)), "/foo/bar", []string{}},
|
||||
{logger.DefaultRequestLoggingFormat, fmt.Sprintf("127.0.0.1 - - [%s] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n", logger.FormatTimestamp(ts)), "/foo/bar", []string{}},
|
||||
{logger.DefaultRequestLoggingFormat, fmt.Sprintf("127.0.0.1 - - [%s] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n", logger.FormatTimestamp(ts)), "/foo/bar", []string{"/ping"}},
|
||||
{logger.DefaultRequestLoggingFormat, "", "/foo/bar", []string{"/foo/bar"}},
|
||||
{logger.DefaultRequestLoggingFormat, "", "/ping", []string{}},
|
||||
{logger.DefaultRequestLoggingFormat, "", "/ping", []string{"/ping"}},
|
||||
{logger.DefaultRequestLoggingFormat, "", "/ping", []string{"/ping"}},
|
||||
{logger.DefaultRequestLoggingFormat, "", "/ping", []string{"/foo/bar", "/ping"}},
|
||||
{"{{.RequestMethod}}", "GET\n", "/foo/bar", []string{}},
|
||||
{"{{.RequestMethod}}", "GET\n", "/foo/bar", []string{"/ping"}},
|
||||
{"{{.RequestMethod}}", "GET\n", "/ping", []string{}},
|
||||
{"{{.RequestMethod}}", "", "/ping", []string{"/ping"}},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "127.0.0.1 - - [TIMELESS] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "127.0.0.1 - - [TIMELESS] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "127.0.0.1 - - [TIMELESS] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0.000\n",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{"/ping"},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{"/foo/bar"},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "127.0.0.1 - - [TIMELESS] test-server GET - \"/ping\" HTTP/1.1 \"\" 200 4 0.000\n",
|
||||
Path: "/ping",
|
||||
ExcludePaths: []string{},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "",
|
||||
Path: "/ping",
|
||||
ExcludePaths: []string{"/ping"},
|
||||
},
|
||||
{
|
||||
Format: RequestLoggingFormatWithoutTime,
|
||||
ExpectedLogMessage: "",
|
||||
Path: "/ping",
|
||||
ExcludePaths: []string{"/foo/bar", "/ping"},
|
||||
},
|
||||
{
|
||||
Format: "{{.RequestMethod}}",
|
||||
ExpectedLogMessage: "GET\n",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{""},
|
||||
},
|
||||
{
|
||||
Format: "{{.RequestMethod}}",
|
||||
ExpectedLogMessage: "GET\n",
|
||||
Path: "/foo/bar",
|
||||
ExcludePaths: []string{"/ping"},
|
||||
},
|
||||
{
|
||||
Format: "{{.RequestMethod}}",
|
||||
ExpectedLogMessage: "GET\n",
|
||||
Path: "/ping",
|
||||
ExcludePaths: []string{""},
|
||||
},
|
||||
{
|
||||
Format: "{{.RequestMethod}}",
|
||||
ExpectedLogMessage: "",
|
||||
Path: "/ping",
|
||||
ExcludePaths: []string{"/ping"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
@ -43,7 +95,8 @@ func TestLoggingHandler_ServeHTTP(t *testing.T) {
|
||||
t.Error("http.Hijacker is not available")
|
||||
}
|
||||
|
||||
w.Write([]byte("test"))
|
||||
_, err := w.Write([]byte("test"))
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
logger.SetOutput(buf)
|
||||
@ -58,8 +111,6 @@ func TestLoggingHandler_ServeHTTP(t *testing.T) {
|
||||
h.ServeHTTP(httptest.NewRecorder(), r)
|
||||
|
||||
actual := buf.String()
|
||||
if !strings.Contains(actual, test.ExpectedLogMessage) {
|
||||
t.Errorf("Log message was\n%s\ninstead of matching \n%s", actual, test.ExpectedLogMessage)
|
||||
}
|
||||
assert.Equal(t, test.ExpectedLogMessage, actual)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user