| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package admin
- import (
- "bytes"
- "encoding/json"
- "net/http"
- "net/http/httptest"
- "testing"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/gin-gonic/gin"
- "github.com/stretchr/testify/require"
- )
- func setupUpstreamBillingProbeRouter() *gin.Engine {
- gin.SetMode(gin.TestMode)
- handler := NewAccountHandler(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
- handler.SetUpstreamBillingProbeService(service.NewUpstreamBillingProbeService(nil, nil, nil))
- router := gin.New()
- router.GET("/admin/accounts/upstream-billing-probe/settings", handler.GetUpstreamBillingProbeSettings)
- router.POST("/admin/accounts/upstream-billing-probe/batch", handler.ProbeUpstreamBillingBatch)
- router.PUT("/admin/accounts/:id/upstream-billing-probe", handler.SetUpstreamBillingProbeEnabled)
- return router
- }
- func TestAccountHandlerGetUpstreamBillingProbeSettingsReturnsDefaults(t *testing.T) {
- router := setupUpstreamBillingProbeRouter()
- recorder := httptest.NewRecorder()
- router.ServeHTTP(recorder, httptest.NewRequest(http.MethodGet, "/admin/accounts/upstream-billing-probe/settings", nil))
- require.Equal(t, http.StatusOK, recorder.Code)
- var response struct {
- Data service.UpstreamBillingProbeSettings `json:"data"`
- }
- require.NoError(t, json.Unmarshal(recorder.Body.Bytes(), &response))
- require.True(t, response.Data.Enabled)
- require.Equal(t, 30, response.Data.IntervalMinutes)
- }
- func TestAccountHandlerProbeUpstreamBillingBatchValidatesIDs(t *testing.T) {
- router := setupUpstreamBillingProbeRouter()
- for _, body := range []string{`{"account_ids":[]}`, `{"account_ids":[0]}`} {
- recorder := httptest.NewRecorder()
- request := httptest.NewRequest(http.MethodPost, "/admin/accounts/upstream-billing-probe/batch", bytes.NewBufferString(body))
- request.Header.Set("Content-Type", "application/json")
- router.ServeHTTP(recorder, request)
- require.Equal(t, http.StatusBadRequest, recorder.Code)
- }
- }
- func TestAccountHandlerSetUpstreamBillingProbeEnabledRejectsInvalidID(t *testing.T) {
- router := setupUpstreamBillingProbeRouter()
- recorder := httptest.NewRecorder()
- request := httptest.NewRequest(http.MethodPut, "/admin/accounts/not-an-id/upstream-billing-probe", bytes.NewBufferString(`{"enabled":true}`))
- request.Header.Set("Content-Type", "application/json")
- router.ServeHTTP(recorder, request)
- require.Equal(t, http.StatusBadRequest, recorder.Code)
- }
- func TestAccountHandlerSetUpstreamBillingProbeEnabledRequiresValue(t *testing.T) {
- router := setupUpstreamBillingProbeRouter()
- recorder := httptest.NewRecorder()
- request := httptest.NewRequest(http.MethodPut, "/admin/accounts/1/upstream-billing-probe", bytes.NewBufferString(`{}`))
- request.Header.Set("Content-Type", "application/json")
- router.ServeHTTP(recorder, request)
- require.Equal(t, http.StatusBadRequest, recorder.Code)
- }
|