fix: improve test helpers with fresh tokens and cleanup

- createTestMediaItemID now gets fresh auth token to avoid stale tokens
- Use unique library names with timestamps to avoid conflicts
- Add t.Cleanup to delete libraries after tests
- Remove token parameter from function signature (not needed)
This commit is contained in:
2026-02-14 00:12:22 -05:00
parent 02ff078adf
commit 962bab1df0
+36 -9
View File
@@ -550,10 +550,30 @@ func getTestUserID(t *testing.T, db *database.Queries) uuid.UUID {
}
// createTestMediaItemID creates a test media item and returns its ID
func createTestMediaItemID(t *testing.T, ts *httptest.Server, token string) string {
func createTestMediaItemID(t *testing.T, ts *httptest.Server) string {
// Generate unique library name to avoid conflicts between tests
uniqueName := fmt.Sprintf("Test Library %d", time.Now().UnixNano())
// Get a fresh token to ensure we have a valid user
// (previous tests may have deleted/recreated the test user)
loginReq := map[string]interface{}{
"login": "testuser@example.com",
"password": "Test@Pass123!",
}
loginBody, _ := json.Marshal(loginReq)
loginReqHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
loginReqHTTP.Header.Set("Content-Type", "application/json")
httpClient := &http.Client{}
loginResp, err := httpClient.Do(loginReqHTTP)
require.NoError(t, err)
defer loginResp.Body.Close()
var loginResult map[string]interface{}
json.NewDecoder(loginResp.Body).Decode(&loginResult)
validToken := loginResult["access_token"].(string)
// First create a library
libReq := map[string]interface{}{
"name": "Test Library",
"name": uniqueName,
"description": "A test library for media items",
"type": "ebooks",
}
@@ -561,10 +581,9 @@ func createTestMediaItemID(t *testing.T, ts *httptest.Server, token string) stri
req, _ := http.NewRequest("POST", ts.URL+"/api/libraries", bytes.NewBuffer(libBody))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Authorization", "Bearer "+validToken)
client := &http.Client{}
resp, err := client.Do(req)
resp, err := httpClient.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
@@ -584,9 +603,9 @@ func createTestMediaItemID(t *testing.T, ts *httptest.Server, token string) stri
folderReqHTTP, _ := http.NewRequest("POST", ts.URL+"/api/libraries/"+libData+"/folders", bytes.NewBuffer(folderBody))
folderReqHTTP.Header.Set("Content-Type", "application/json")
folderReqHTTP.Header.Set("Authorization", "Bearer "+token)
folderReqHTTP.Header.Set("Authorization", "Bearer "+validToken)
folderResp, err := client.Do(folderReqHTTP)
folderResp, err := httpClient.Do(folderReqHTTP)
require.NoError(t, err)
defer folderResp.Body.Close()
require.Equal(t, http.StatusCreated, folderResp.StatusCode, "Library folder creation is required before adding media items")
@@ -604,9 +623,9 @@ func createTestMediaItemID(t *testing.T, ts *httptest.Server, token string) stri
req2, _ := http.NewRequest("POST", ts.URL+"/api/media-items", bytes.NewBuffer(mediaItemBody))
req2.Header.Set("Content-Type", "application/json")
req2.Header.Set("Authorization", "Bearer "+token)
req2.Header.Set("Authorization", "Bearer "+validToken)
resp2, err := client.Do(req2)
resp2, err := httpClient.Do(req2)
require.NoError(t, err)
defer resp2.Body.Close()
@@ -616,5 +635,13 @@ func createTestMediaItemID(t *testing.T, ts *httptest.Server, token string) stri
json.NewDecoder(resp2.Body).Decode(&mediaItemResult)
mediaItemID := mediaItemResult["id"].(string)
// Cleanup: delete the library after the test
t.Cleanup(func() {
deleteReq, _ := http.NewRequest("DELETE", ts.URL+"/api/libraries/"+libData, nil)
deleteReq.Header.Set("Authorization", "Bearer "+validToken)
httpClient.Do(deleteReq)
})
return mediaItemID
}