Files
gochat/backend/internal/model/sensitive_json_test.go
T
Rogeeandrogee f719529d66 fix(security): harden auth and secret handling (HH-444) (#101)
* fix(security): harden auth and credential handling (HH-444)

* fix(security): address HH-444 review blockers

* fix(security): close remaining HH-444 review blockers

---------

Co-authored-by: Rogee <rogee@ipao.vip>
2026-08-22 15:45:06 +08:00

33 lines
1.2 KiB
Go

package model_test
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
"github.com/gochat/gochat/internal/model"
channelmodel "github.com/gochat/gochat/internal/model/channel"
)
func TestSensitiveFieldsAreNotSerialized(t *testing.T) {
const secret = "must-not-appear"
values := []any{
model.AccessToken{Token: secret},
model.AgentBot{Secret: secret, AccessToken: secret},
model.Inbox{Secret: secret, ChannelConfig: secret},
model.IntegrationHook{AccessToken: secret},
model.WebhookSubscription{Secret: secret},
channelmodel.ChannelAPI{Secret: secret, HMACToken: secret},
channelmodel.ChannelEmail{IMAPPassword: secret, SMTPPassword: secret},
channelmodel.ChannelFacebook{PageAccessToken: secret, UserAccessToken: secret, WebhookVerifyToken: secret},
channelmodel.ChannelTikTok{AccessToken: secret, RefreshToken: secret, WebhookVerifyToken: secret},
channelmodel.ChannelWhatsApp{AccessToken: secret, ProviderConfig: secret, WebhookVerifyToken: secret},
}
for _, value := range values {
encoded, err := json.Marshal(value)
require.NoError(t, err)
require.NotContains(t, string(encoded), secret, "%T exposed a sensitive value", value)
}
}