Files
bookhoard/cmd/server/tests/auth_test.go
T
john-okeefe 0a457e02a2 test: add comprehensive tests for notes and highlights
- Add complete test suite for media notes API with validation
- Add complete test suite for media highlights API with color validation
- Add backward compatibility tests for ebook endpoints
- Test authentication scenarios (unauthorized access)
- Test request validation and error handling
- Fix existing test import issues and syntax errors
- Add test cases for highlight-note associations
2026-01-28 15:43:30 -05:00

85 lines
2.4 KiB
Go

package main
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestAuthMiddlewareAlt(t *testing.T) {
// Test missing JWT header
t.Run("Missing JWT", func(t *testing.T) {
req := httptest.NewRequest("GET", "/api/libraries/visible", nil)
rr := httptest.NewRecorder()
// Simulate auth middleware
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
authHeader := r.Header.Get("Authorization")
if authHeader == "" || !strings.HasPrefix(authHeader, "Bearer ") {
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte(`{"message":"missing or malformed jwt"}`))
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message":"valid token"}`))
})
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusUnauthorized, rr.Code)
assert.Equal(t, `{"message":"missing or malformed jwt"}`, rr.Body.String())
})
// Test invalid JWT token format
t.Run("Invalid JWT format", func(t *testing.T) {
req := httptest.NewRequest("GET", "/api/libraries/visible", nil)
req.Header.Set("Authorization", "invalid-token")
rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
authHeader := r.Header.Get("Authorization")
if authHeader == "" || !strings.HasPrefix(authHeader, "Bearer ") {
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte(`{"message":"missing or malformed jwt"}`))
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message":"valid token"}`))
})
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusUnauthorized, rr.Code)
assert.Equal(t, `{"message":"valid token"}`, rr.Body.String())
})
// Test valid JWT token format
t.Run("Valid JWT format", func(t *testing.T) {
req := httptest.NewRequest("GET", "/api/libraries/visible", nil)
req.Header.Set("Authorization", "Bearer valid-token")
rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
authHeader := r.Header.Get("Authorization")
if authHeader == "" || !strings.HasPrefix(authHeader, "Bearer ") {
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte(`{"message":"missing or malformed jwt"}`))
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message":"valid token"}`))
})
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusOK, rr.Code)
assert.Equal(t, `{"message":"valid token"}`, rr.Body.String())
})
}