diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender.go b/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender.go index 80c49c46..49de6952 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender.go @@ -249,11 +249,11 @@ func formatGeo(evt *event.Event) string { var parens string switch { case city != "" && country != "": - parens = "(" + EscapeMD(city) + ", " + EscapeMD(country) + ")" + parens = `\(` + EscapeMD(city) + ", " + EscapeMD(country) + `\)` case country != "": - parens = "(" + EscapeMD(country) + ")" + parens = `\(` + EscapeMD(country) + `\)` case city != "": - parens = "(" + EscapeMD(city) + ")" + parens = `\(` + EscapeMD(city) + `\)` } if parens == "" && asnOrg == "" { return "" diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender_test.go index d83c8c87..02411320 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/notify/telegram/sender_test.go @@ -186,8 +186,11 @@ func TestSender_Send_MessageContainsKeyFields(t *testing.T) { ) require.Contains(t, text, "envfile") require.Contains(t, text, `203\.0\.113\.45`, "IP dots escaped") - require.Contains(t, text, "Toronto") - require.Contains(t, text, "CA") + require.Contains(t, + text, + `\(Toronto, CA\)`, + "geo wrapping parens escaped (V2 reserved chars)", + ) require.Contains(t, text, `Cloudflare, Inc\.`, "asn_org . escaped") require.Contains(t, text, "View full event timeline", "manage link present") require.Contains(t,