Files
gochat/backend/internal/handler/api/v1/shangwutong_inbox_serializer_test.go
T

35 lines
1.4 KiB
Go

package v1
import (
"testing"
"github.com/gochat/gochat/internal/model"
"github.com/stretchr/testify/require"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestSerializeShangwutongInboxNeverReturnsCredentials(t *testing.T) {
db, err := gorm.Open(sqlite.Open("file:shangwutong_serializer?mode=memory&cache=shared"), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, db.AutoMigrate(&model.Inbox{}, &model.ChannelShangwutongConfig{}))
inbox := &model.Inbox{
AccountID: 1, Name: "商务通", ChannelType: "shangwutong", Enabled: true,
WebhookURL: "http://connector:9100/webhooks/gochat/v1", Secret: "webhook-secret",
}
require.NoError(t, db.Create(inbox).Error)
require.NoError(t, db.Create(&model.ChannelShangwutongConfig{
InboxID: inbox.ID, SessionID: "BYT99917999", Username: "agent", Password: "password",
DesiredPresence: "busy", ConfigVersion: 7, ActualPresence: "busy",
ConnectionStatus: "connected", CredentialStatus: "applied",
}).Error)
payload := serializeInbox(inbox, db, true)
require.Equal(t, "Channel::Shangwutong", payload["channel_type"])
require.Equal(t, true, payload["password_configured"])
require.EqualValues(t, 7, payload["config_version"])
require.Equal(t, "busy", payload["desired_presence"])
for _, secret := range []string{"password", "session_id", "username", "hmac_token", "secret"} {
require.NotContains(t, payload, secret)
}
}