ops_error_logger_cyber_test.go 819 B

12345678910111213141516171819202122
  1. package handler
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/Wei-Shaw/sub2api/internal/service"
  7. "github.com/gin-gonic/gin"
  8. "github.com/stretchr/testify/require"
  9. )
  10. // cyber mark 存在时,中间件必须跳过自身落库(由 recordCyberPolicyIfMarked 统一落 403)。
  11. func TestOpsErrorLoggerMiddlewareSkipsCyber(t *testing.T) {
  12. gin.SetMode(gin.TestMode)
  13. c, _ := gin.CreateTestContext(httptest.NewRecorder())
  14. c.Request = httptest.NewRequest(http.MethodPost, "/v1/responses", nil)
  15. service.MarkOpsCyberPolicy(c, service.CyberPolicyMark{Code: "cyber_policy", Message: "blocked", UpstreamStatus: http.StatusOK})
  16. require.NotNil(t, service.GetOpsCyberPolicy(c), "前置:mark 已设置")
  17. require.True(t, shouldSkipOpsErrorLogForCyber(c), "cyber mark 命中应跳过中间件落库")
  18. }