41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/services"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestDockerHandler_ListContainers(t *testing.T) {
|
|
// We can't easily mock the DockerService without an interface,
|
|
// and the DockerService depends on the real Docker client.
|
|
// So we'll just test that the handler is wired up correctly,
|
|
// even if it returns an error because Docker isn't running in the test env.
|
|
|
|
svc, _ := services.NewDockerService()
|
|
// svc might be nil if docker is not available, but NewDockerHandler handles nil?
|
|
// Actually NewDockerHandler just stores it.
|
|
// If svc is nil, ListContainers will panic.
|
|
// So we only run this if svc is not nil.
|
|
|
|
if svc == nil {
|
|
t.Skip("Docker not available")
|
|
}
|
|
|
|
h := NewDockerHandler(svc)
|
|
gin.SetMode(gin.TestMode)
|
|
r := gin.New()
|
|
h.RegisterRoutes(r.Group("/"))
|
|
|
|
req, _ := http.NewRequest("GET", "/docker/containers", nil)
|
|
w := httptest.NewRecorder()
|
|
r.ServeHTTP(w, req)
|
|
|
|
// It might return 200 or 500 depending on if ListContainers succeeds
|
|
assert.Contains(t, []int{http.StatusOK, http.StatusInternalServerError}, w.Code)
|
|
}
|