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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user