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) } }