package controller import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" ) func TestGetChannelAffinityUsageCacheStatsRequiresRuleAndFingerprint(t *testing.T) { gin.SetMode(gin.TestMode) router := gin.New() router.GET("/stats", GetChannelAffinityUsageCacheStats) for _, target := range []string{"/stats?key_fp=abc", "/stats?rule_name=rule"} { response := httptest.NewRecorder() router.ServeHTTP(response, httptest.NewRequest(http.MethodGet, target, nil)) require.Equal(t, http.StatusBadRequest, response.Code) require.Contains(t, response.Body.String(), `"success":false`) } } func TestClearChannelAffinityCacheRequiresSelector(t *testing.T) { gin.SetMode(gin.TestMode) router := gin.New() router.DELETE("/cache", ClearChannelAffinityCache) response := httptest.NewRecorder() router.ServeHTTP(response, httptest.NewRequest(http.MethodDelete, "/cache", nil)) require.Equal(t, http.StatusBadRequest, response.Code) require.Contains(t, response.Body.String(), `"success":false`) }