Added proper debug logging to safeconn methods

This commit is contained in:
2025-02-18 10:02:42 +11:00
parent b4b57c14cb
commit c2de8d254a
9 changed files with 83 additions and 45 deletions

View File

@@ -115,8 +115,8 @@ func Authentication(
// Start the transaction
tx, err := conn.Begin(ctx)
if err != nil {
// Failed to start transaction, warn the user they cant login right now
logger.Warn().Err(err).Msg("Request failed to start a transaction")
// Failed to start transaction, send 503 code to client
logger.Warn().Err(err).Msg("Skipping Auth - unable to start a transaction")
w.WriteHeader(http.StatusServiceUnavailable)
next.ServeHTTP(w, r)
return

View File

@@ -5,6 +5,7 @@ import (
"net/http"
"net/http/httptest"
"strconv"
"sync/atomic"
"testing"
"projectreshoot/contexts"
@@ -16,15 +17,15 @@ import (
)
func TestAuthenticationMiddleware(t *testing.T) {
logger := tests.NilLogger()
// Basic setup
conn, err := tests.SetupTestDB()
require.NoError(t, err)
sconn := db.MakeSafe(conn)
sconn := db.MakeSafe(conn, logger)
defer sconn.Close()
cfg, err := tests.TestConfig()
require.NoError(t, err)
logger := tests.DebugLogger(t)
// Handler to check outcome of Authentication middleware
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -38,9 +39,10 @@ func TestAuthenticationMiddleware(t *testing.T) {
w.Write([]byte(strconv.Itoa(user.ID)))
}
})
var maint uint32
atomic.StoreUint32(&maint, 0)
// Add the middleware and create the server
authHandler := Authentication(logger, cfg, sconn, testHandler)
authHandler := Authentication(logger, cfg, sconn, testHandler, &maint)
require.NoError(t, err)
server := httptest.NewServer(authHandler)
defer server.Close()

View File

@@ -3,6 +3,7 @@ package middleware
import (
"net/http"
"net/http/httptest"
"sync/atomic"
"testing"
"projectreshoot/db"
@@ -13,24 +14,26 @@ import (
)
func TestPageLoginRequired(t *testing.T) {
logger := tests.NilLogger()
// Basic setup
conn, err := tests.SetupTestDB()
require.NoError(t, err)
sconn := db.MakeSafe(conn)
sconn := db.MakeSafe(conn, logger)
defer sconn.Close()
cfg, err := tests.TestConfig()
require.NoError(t, err)
logger := tests.DebugLogger(t)
// Handler to check outcome of Authentication middleware
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
})
var maint uint32
atomic.StoreUint32(&maint, 0)
// Add the middleware and create the server
loginRequiredHandler := RequiresLogin(testHandler)
authHandler := Authentication(logger, cfg, sconn, loginRequiredHandler)
authHandler := Authentication(logger, cfg, sconn, loginRequiredHandler, &maint)
server := httptest.NewServer(authHandler)
defer server.Close()

View File

@@ -3,6 +3,7 @@ package middleware
import (
"net/http"
"net/http/httptest"
"sync/atomic"
"testing"
"projectreshoot/db"
@@ -13,25 +14,27 @@ import (
)
func TestReauthRequired(t *testing.T) {
logger := tests.NilLogger()
// Basic setup
conn, err := tests.SetupTestDB()
require.NoError(t, err)
sconn := db.MakeSafe(conn)
sconn := db.MakeSafe(conn, logger)
defer sconn.Close()
cfg, err := tests.TestConfig()
require.NoError(t, err)
logger := tests.DebugLogger(t)
// Handler to check outcome of Authentication middleware
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
})
var maint uint32
atomic.StoreUint32(&maint, 0)
// Add the middleware and create the server
reauthRequiredHandler := RequiresFresh(testHandler)
loginRequiredHandler := RequiresLogin(reauthRequiredHandler)
authHandler := Authentication(logger, cfg, sconn, loginRequiredHandler)
authHandler := Authentication(logger, cfg, sconn, loginRequiredHandler, &maint)
server := httptest.NewServer(authHandler)
defer server.Close()