test: improve test isolation and setup management

Add Token and RegularToken fields to TestServerSetup for pre-authenticated
access. Update setupTestServer to create fresh users with valid tokens at
initialization time. Simplify createTestMediaItemID to use setup.Token.
Remove loginTestUser, loginRegularUser, loginAdminUser functions in favor
of setup.Token/setup.RegularToken. Update createTestUserOnce and
getTestUserID/getRegularUserID to be idempotent. Update all test files to
use setup.Token instead of calling login helpers.
This commit is contained in:
2026-02-22 01:57:22 -05:00
parent 9a09161f24
commit f54508e4dd
16 changed files with 819 additions and 793 deletions
+24 -25
View File
@@ -14,7 +14,6 @@ import (
// TestCollectionsBulkOperations tests bulk collection operations
func TestCollectionsBulkOperations(t *testing.T) {
setup := setupTestServer(t)
token := loginTestUser(t, setup.Server, setup.DB)
client := &http.Client{}
// Define request struct matching handler expectation
@@ -28,7 +27,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
}
t.Run("BulkAddBooks_WithoutAuth", func(t *testing.T) {
bookID := createTestMediaItemID(t, setup.Server)
bookID := createTestMediaItemID(t, setup)
req := BulkAddBooksRequest{
Operations: []BulkAddOperation{
@@ -58,7 +57,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(body))
httpReq.Header.Set("Content-Type", "application/json")
httpReq.Header.Set("Authorization", "Bearer "+token)
httpReq.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(httpReq)
require.NoError(t, err)
@@ -68,7 +67,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
})
t.Run("BulkAddBooks_InvalidCollectionID", func(t *testing.T) {
bookID := createTestMediaItemID(t, setup.Server)
bookID := createTestMediaItemID(t, setup)
req := BulkAddBooksRequest{
Operations: []BulkAddOperation{
@@ -82,7 +81,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(body))
httpReq.Header.Set("Content-Type", "application/json")
httpReq.Header.Set("Authorization", "Bearer "+token)
httpReq.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(httpReq)
require.NoError(t, err)
@@ -119,7 +118,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody))
collectionHTTP.Header.Set("Content-Type", "application/json")
collectionHTTP.Header.Set("Authorization", "Bearer "+token)
collectionHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(collectionHTTP)
require.NoError(t, err)
@@ -142,7 +141,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody))
addHTTP.Header.Set("Content-Type", "application/json")
addHTTP.Header.Set("Authorization", "Bearer "+token)
addHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(addHTTP)
require.NoError(t, err)
@@ -168,7 +167,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody))
collectionHTTP.Header.Set("Content-Type", "application/json")
collectionHTTP.Header.Set("Authorization", "Bearer "+token)
collectionHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(collectionHTTP)
require.NoError(t, err)
@@ -179,7 +178,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionID := collectionResult["id"].(string)
// Create a book
bookID := createTestMediaItemID(t, setup.Server)
bookID := createTestMediaItemID(t, setup)
// Add book to collection
addReq := map[string]interface{}{
@@ -194,7 +193,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody))
addHTTP.Header.Set("Content-Type", "application/json")
addHTTP.Header.Set("Authorization", "Bearer "+token)
addHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(addHTTP)
require.NoError(t, err)
@@ -225,7 +224,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody))
collectionHTTP.Header.Set("Content-Type", "application/json")
collectionHTTP.Header.Set("Authorization", "Bearer "+token)
collectionHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(collectionHTTP)
require.NoError(t, err)
@@ -236,9 +235,9 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionID := collectionResult["id"].(string)
// Create multiple books
bookID1 := createTestMediaItemID(t, setup.Server)
bookID2 := createTestMediaItemID(t, setup.Server)
bookID3 := createTestMediaItemID(t, setup.Server)
bookID1 := createTestMediaItemID(t, setup)
bookID2 := createTestMediaItemID(t, setup)
bookID3 := createTestMediaItemID(t, setup)
// Add all books to collection
addReq := map[string]interface{}{
@@ -253,7 +252,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody))
addHTTP.Header.Set("Content-Type", "application/json")
addHTTP.Header.Set("Authorization", "Bearer "+token)
addHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(addHTTP)
require.NoError(t, err)
@@ -278,7 +277,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody))
collectionHTTP.Header.Set("Content-Type", "application/json")
collectionHTTP.Header.Set("Authorization", "Bearer "+token)
collectionHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(collectionHTTP)
require.NoError(t, err)
@@ -296,7 +295,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP2, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody2))
collectionHTTP2.Header.Set("Content-Type", "application/json")
collectionHTTP2.Header.Set("Authorization", "Bearer "+token)
collectionHTTP2.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(collectionHTTP2)
require.NoError(t, err)
@@ -307,8 +306,8 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionID2 := collectionResult2["id"].(string)
// Create books
bookID1 := createTestMediaItemID(t, setup.Server)
bookID2 := createTestMediaItemID(t, setup.Server)
bookID1 := createTestMediaItemID(t, setup)
bookID2 := createTestMediaItemID(t, setup)
// Add books to multiple collections
addReq := map[string]interface{}{
@@ -327,7 +326,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody))
addHTTP.Header.Set("Content-Type", "application/json")
addHTTP.Header.Set("Authorization", "Bearer "+token)
addHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(addHTTP)
require.NoError(t, err)
@@ -352,7 +351,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections", bytes.NewBuffer(collectionBody))
collectionHTTP.Header.Set("Content-Type", "application/json")
collectionHTTP.Header.Set("Authorization", "Bearer "+token)
collectionHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(collectionHTTP)
require.NoError(t, err)
@@ -363,7 +362,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
collectionID := collectionResult["id"].(string)
// Create a book
bookID := createTestMediaItemID(t, setup.Server)
bookID := createTestMediaItemID(t, setup)
// Add book to collection
addReq := map[string]interface{}{
@@ -378,7 +377,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody))
addHTTP.Header.Set("Content-Type", "application/json")
addHTTP.Header.Set("Authorization", "Bearer "+token)
addHTTP.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err = client.Do(addHTTP)
require.NoError(t, err)
@@ -388,7 +387,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
addBody2, _ := json.Marshal(addReq)
addHTTP2, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer(addBody2))
addHTTP2.Header.Set("Content-Type", "application/json")
addHTTP2.Header.Set("Authorization", "Bearer "+token)
addHTTP2.Header.Set("Authorization", "Bearer "+setup.Token)
resp2, err := client.Do(addHTTP2)
require.NoError(t, err)
@@ -402,7 +401,7 @@ func TestCollectionsBulkOperations(t *testing.T) {
// Send invalid JSON
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/collections/bulk-add-books", bytes.NewBuffer([]byte("invalid json")))
httpReq.Header.Set("Content-Type", "application/json")
httpReq.Header.Set("Authorization", "Bearer "+token)
httpReq.Header.Set("Authorization", "Bearer "+setup.Token)
resp, err := client.Do(httpReq)
require.NoError(t, err)