fix(tests): handle all Close() and Decode() errors across integration tests
Replace all unhandled resp.Body.Close() calls throughout the test suite:
- Deferred calls: replace 'defer VAR.Body.Close()' with a closure that explicitly
discards the error via 'defer func(Body io.ReadCloser) { _ = Body.Close() }(VAR.Body)'
- Immediate calls: replace 'VAR.Body.Close()' with '_ = VAR.Body.Close()'
Replace all unhandled json.NewDecoder(VAR.Body).Decode(&x) calls with error capture
and require.NoError assertion. Files using httptest.ResponseRecorder (collections_preview,
processing_issues) use 'err :=' declaration; suite-style tests (scanner_integration,
dashboard_integration) use s.T() instead of t.
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -31,10 +32,13 @@ func TestFSNotify_BulkFileDetection(t *testing.T) {
|
||||
client := &http.Client{}
|
||||
libResp, err := client.Do(libReq)
|
||||
require.NoError(t, err)
|
||||
defer libResp.Body.Close()
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(libResp.Body)
|
||||
require.Equal(t, http.StatusCreated, libResp.StatusCode)
|
||||
var libResult map[string]interface{}
|
||||
json.NewDecoder(libResp.Body).Decode(&libResult)
|
||||
err = json.NewDecoder(libResp.Body).Decode(&libResult)
|
||||
require.NoError(t, err)
|
||||
libraryID := libResult["id"].(string)
|
||||
// Add folder to library
|
||||
folderURL := fmt.Sprintf("%s/api/libraries/%s/folders", setup.Server.URL, libraryID)
|
||||
@@ -47,7 +51,9 @@ func TestFSNotify_BulkFileDetection(t *testing.T) {
|
||||
folderHTTPReq.Header.Set("Authorization", "Bearer "+token)
|
||||
folderResp, err := client.Do(folderHTTPReq)
|
||||
require.NoError(t, err)
|
||||
defer folderResp.Body.Close()
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(folderResp.Body)
|
||||
require.Equal(t, http.StatusCreated, folderResp.StatusCode, "Folder should be added to library")
|
||||
// Create 20 test files simultaneously
|
||||
for i := 0; i < 20; i++ {
|
||||
@@ -61,10 +67,13 @@ func TestFSNotify_BulkFileDetection(t *testing.T) {
|
||||
scanHTTPReq.Header.Set("Authorization", "Bearer "+token)
|
||||
scanResp, err := client.Do(scanHTTPReq)
|
||||
require.NoError(t, err)
|
||||
defer scanResp.Body.Close()
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(scanResp.Body)
|
||||
require.Equal(t, http.StatusAccepted, scanResp.StatusCode, "Scan should be accepted")
|
||||
var scanResponse map[string]interface{}
|
||||
json.NewDecoder(scanResp.Body).Decode(&scanResponse)
|
||||
err = json.NewDecoder(scanResp.Body).Decode(&scanResponse)
|
||||
require.NoError(t, err)
|
||||
jobID, ok := scanResponse["job_id"].(string)
|
||||
require.True(t, ok, "job_id should be string")
|
||||
require.NotEmpty(t, jobID, "job_id should not be empty")
|
||||
@@ -81,16 +90,17 @@ func TestFSNotify_BulkFileDetection(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
if statusResp.StatusCode == http.StatusNotFound {
|
||||
statusResp.Body.Close()
|
||||
_ = statusResp.Body.Close()
|
||||
break // Job completed
|
||||
}
|
||||
|
||||
var status map[string]interface{}
|
||||
json.NewDecoder(statusResp.Body).Decode(&status)
|
||||
statusResp.Body.Close()
|
||||
err = json.NewDecoder(statusResp.Body).Decode(&status)
|
||||
require.NoError(t, err)
|
||||
_ = statusResp.Body.Close()
|
||||
|
||||
if status["status"] == "completed" || status["status"] == "failed" {
|
||||
statusResp.Body.Close()
|
||||
_ = statusResp.Body.Close()
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -99,9 +109,12 @@ func TestFSNotify_BulkFileDetection(t *testing.T) {
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
itemsResp, err := client.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer itemsResp.Body.Close()
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(itemsResp.Body)
|
||||
var itemsResult map[string]interface{}
|
||||
json.NewDecoder(itemsResp.Body).Decode(&itemsResult)
|
||||
err = json.NewDecoder(itemsResp.Body).Decode(&itemsResult)
|
||||
require.NoError(t, err)
|
||||
items, ok := itemsResult["data"].([]interface{})
|
||||
if !ok || items == nil {
|
||||
items = []interface{}{} // Handle nil or wrong type
|
||||
|
||||
Reference in New Issue
Block a user