Files
codit/backend/internal/middleware/access_log_test.go

42 lines
1.2 KiB
Go

package middleware
import "bytes"
import "context"
import "net/http"
import "net/http/httptest"
import "strings"
import "testing"
import "codit/internal/models"
import "codit/internal/util"
func TestAccessLogWritesRecord(t *testing.T) {
var buf bytes.Buffer
var logger *util.Logger
var handler http.Handler
var req *http.Request
var recorder *httptest.ResponseRecorder
var user models.User
var ctx context.Context
logger = util.NewLogger("test", &buf, util.LOG_ALL)
defer logger.Close()
handler = AccessLog(logger, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusCreated)
}))
user = models.User{ID: "u1", Username: "alice"}
ctx = context.WithValue(context.Background(), userKey, user)
req = httptest.NewRequest(http.MethodPost, "/api/demo", nil).WithContext(ctx)
recorder = httptest.NewRecorder()
handler.ServeHTTP(recorder, req)
logger.Close()
if recorder.Code != http.StatusCreated {
t.Fatalf("unexpected status: %d", recorder.Code)
}
if !strings.Contains(buf.String(), "path=/api/demo") {
t.Fatalf("missing path in log: %s", buf.String())
}
if !strings.Contains(buf.String(), "user=alice") {
t.Fatalf("missing username in log: %s", buf.String())
}
}