Download backend/internal/handler/admin/data_management_handler_test.go from cjovs/su2a: direct link, hf CLI and curl.
- Browser
- Download file 2.5 kB
-
https://huggingface.co/spaces/cjovs/su2a/resolve/main/backend/internal/handler/admin/data_management_handler_test.go
- Command line
-
hf download hf://spaces/cjovs/su2a/backend/internal/handler/admin/data_management_handler_test.go
-
curl -L -o data_management_handler_test.go https://huggingface.co/spaces/cjovs/su2a/resolve/main/backend/internal/handler/admin/data_management_handler_test.go
2.5 kB
| package admin | |
| import ( | |
| "encoding/json" | |
| "net/http" | |
| "net/http/httptest" | |
| "path/filepath" | |
| "testing" | |
| "time" | |
| "github.com/Wei-Shaw/sub2api/internal/service" | |
| "github.com/gin-gonic/gin" | |
| "github.com/stretchr/testify/require" | |
| ) | |
| type apiEnvelope struct { | |
| Code int `json:"code"` | |
| Message string `json:"message"` | |
| Reason string `json:"reason"` | |
| Data json.RawMessage `json:"data"` | |
| } | |
| func TestDataManagementHandler_AgentHealthAlways200(t *testing.T) { | |
| gin.SetMode(gin.TestMode) | |
| svc := service.NewDataManagementServiceWithOptions(filepath.Join(t.TempDir(), "missing.sock"), 50*time.Millisecond) | |
| h := NewDataManagementHandler(svc) | |
| r := gin.New() | |
| r.GET("/api/v1/admin/data-management/agent/health", h.GetAgentHealth) | |
| rec := httptest.NewRecorder() | |
| req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/data-management/agent/health", nil) | |
| r.ServeHTTP(rec, req) | |
| require.Equal(t, http.StatusOK, rec.Code) | |
| var envelope apiEnvelope | |
| require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &envelope)) | |
| require.Equal(t, 0, envelope.Code) | |
| var data struct { | |
| Enabled bool `json:"enabled"` | |
| Reason string `json:"reason"` | |
| SocketPath string `json:"socket_path"` | |
| } | |
| require.NoError(t, json.Unmarshal(envelope.Data, &data)) | |
| require.False(t, data.Enabled) | |
| require.Equal(t, service.DataManagementDeprecatedReason, data.Reason) | |
| require.Equal(t, svc.SocketPath(), data.SocketPath) | |
| } | |
| func TestDataManagementHandler_NonHealthRouteReturns503WhenDisabled(t *testing.T) { | |
| gin.SetMode(gin.TestMode) | |
| svc := service.NewDataManagementServiceWithOptions(filepath.Join(t.TempDir(), "missing.sock"), 50*time.Millisecond) | |
| h := NewDataManagementHandler(svc) | |
| r := gin.New() | |
| r.GET("/api/v1/admin/data-management/config", h.GetConfig) | |
| rec := httptest.NewRecorder() | |
| req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/data-management/config", nil) | |
| r.ServeHTTP(rec, req) | |
| require.Equal(t, http.StatusServiceUnavailable, rec.Code) | |
| var envelope apiEnvelope | |
| require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &envelope)) | |
| require.Equal(t, http.StatusServiceUnavailable, envelope.Code) | |
| require.Equal(t, service.DataManagementDeprecatedReason, envelope.Reason) | |
| } | |
| func TestNormalizeBackupIdempotencyKey(t *testing.T) { | |
| require.Equal(t, "from-header", normalizeBackupIdempotencyKey("from-header", "from-body")) | |
| require.Equal(t, "from-body", normalizeBackupIdempotencyKey(" ", " from-body ")) | |
| require.Equal(t, "", normalizeBackupIdempotencyKey("", "")) | |
| } | |