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
|
// 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
|
// First create a library
|
||||||
libReq := map[string]interface{}{
|
libReq := map[string]interface{}{
|
||||||
"name": "Test Library",
|
"name": uniqueName,
|
||||||
"description": "A test library for media items",
|
"description": "A test library for media items",
|
||||||
"type": "ebooks",
|
"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, _ := http.NewRequest("POST", ts.URL+"/api/libraries", bytes.NewBuffer(libBody))
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
req.Header.Set("Authorization", "Bearer "+token)
|
req.Header.Set("Authorization", "Bearer "+validToken)
|
||||||
|
|
||||||
client := &http.Client{}
|
resp, err := httpClient.Do(req)
|
||||||
resp, err := client.Do(req)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer resp.Body.Close()
|
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, _ := http.NewRequest("POST", ts.URL+"/api/libraries/"+libData+"/folders", bytes.NewBuffer(folderBody))
|
||||||
folderReqHTTP.Header.Set("Content-Type", "application/json")
|
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)
|
require.NoError(t, err)
|
||||||
defer folderResp.Body.Close()
|
defer folderResp.Body.Close()
|
||||||
require.Equal(t, http.StatusCreated, folderResp.StatusCode, "Library folder creation is required before adding media items")
|
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, _ := http.NewRequest("POST", ts.URL+"/api/media-items", bytes.NewBuffer(mediaItemBody))
|
||||||
req2.Header.Set("Content-Type", "application/json")
|
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)
|
require.NoError(t, err)
|
||||||
defer resp2.Body.Close()
|
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)
|
json.NewDecoder(resp2.Body).Decode(&mediaItemResult)
|
||||||
|
|
||||||
mediaItemID := mediaItemResult["id"].(string)
|
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
|
return mediaItemID
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user