Files
gochat/backend/internal/handler/widget/coverage5_test.go
T
Rogeeandrogee 2b182f9956 H-300: wire Captain Skills into Web runtime (#48)
* H-300: wire Captain Skills into Web runtime

* H-300: enforce effective model and conservative skill budget

* H-300: fix CI gosec step

* ci: extend golangci-lint timeout

* fix lint findings across backend

* fix(push): resolve delivery protocol blockers

* test(repository): close SQLite test databases

* test(repository): reuse SQLite schema per package

* H-307: restore backend Go cache in CI

* H-307: prefetch modules before cold lint

* H-307: resolve govulncheck security gate

* H-307: build lint with patched Go toolchain

* H-307: clear remaining security scan findings

---------

Co-authored-by: Rogee <rogee@ipao.vip>
2026-08-19 07:08:14 +08:00

91 lines
2.7 KiB
Go

package widget
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
"github.com/gochat/gochat/internal/service"
"github.com/stretchr/testify/assert"
)
func TestWidgetEnabledFeatures_Custom_Cov5(t *testing.T) {
config := service.WebWidgetConfig{SelectedFeatureFlags: []string{"custom_flag"}}
result := widgetEnabledFeatures(config)
assert.Equal(t, []string{"custom_flag"}, result)
}
func TestWidgetEnabledFeatures_Default_Cov5(t *testing.T) {
config := service.WebWidgetConfig{}
result := widgetEnabledFeatures(config)
assert.Equal(t, []string{"attachments", "emoji_picker", "end_conversation"}, result)
}
func TestWidgetEnabledFeatures_Empty_Cov5(t *testing.T) {
config := service.WebWidgetConfig{SelectedFeatureFlags: []string{}}
result := widgetEnabledFeatures(config)
assert.Equal(t, []string{"attachments", "emoji_picker", "end_conversation"}, result)
}
func TestListCampaigns_NoToken_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("GET", "/widget/campaigns", nil)
h := NewHandler(nil)
h.ListCampaigns(c)
assert.Equal(t, http.StatusBadRequest, w.Code)
}
func TestListCampaigns_WithToken_NilService_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("GET", "/widget/campaigns?website_token=test", nil)
h := NewHandler(nil)
defer func() { _ = recover() }()
h.ListCampaigns(c)
}
func TestGetFileUploadStatus_NoToken_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("GET", "/widget/file_upload/status", nil)
h := NewHandler(nil)
defer func() { _ = recover() }()
h.GetFileUploadStatus(c)
}
func TestGetThemeConfig_NoToken_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("GET", "/widget/theme_config", nil)
h := NewHandler(nil)
defer func() { _ = recover() }()
h.GetThemeConfig(c)
}
func TestGetConversations_NoToken_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("GET", "/widget/conversations", nil)
h := NewHandler(nil)
defer func() { _ = recover() }()
h.GetConversations(c)
}
func TestBindWidgetSendMessageRequest_Empty_Cov5(t *testing.T) {
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = httptest.NewRequest("POST", "/widget/messages", nil)
defer func() { _ = recover() }()
if _, err := bindWidgetSendMessageRequest(c); err == nil {
t.Fatal("expected empty request body to fail")
}
}