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