35 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|