MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestValidateWebhookURL

Function TestValidateWebhookURL

backend/plugin/webhook/validator_test.go:9–259  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

7)
8
9func TestValidateWebhookURL(t *testing.T) {
10 tests := []struct {
11 name string
12
13 webhookType storepb.WebhookType
14 webhookURL string
15 wantErr bool
16 }{
17 // Slack tests
18 {
19 name: "valid slack URL",
20 webhookType: storepb.WebhookType_SLACK,
21 webhookURL: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX",
22 wantErr: false,
23 },
24 {
25 name: "valid slack-gov URL",
26 webhookType: storepb.WebhookType_SLACK,
27 webhookURL: "https://hooks.slack-gov.com/services/T00000000/B00000000/XXXXXXXXXXXX",
28 wantErr: false,
29 },
30 {
31 name: "invalid slack domain",
32 webhookType: storepb.WebhookType_SLACK,
33 webhookURL: "https://evil.com/hooks",
34 wantErr: true,
35 },
36 {
37 name: "slack SSRF attempt localhost",
38 webhookType: storepb.WebhookType_SLACK,
39 webhookURL: "http://127.0.0.1:8080/",
40 wantErr: true,
41 },
42 {
43 name: "slack SSRF attempt private IP",
44 webhookType: storepb.WebhookType_SLACK,
45 webhookURL: "http://192.168.1.1/",
46 wantErr: true,
47 },
48 // Discord tests
49 {
50 name: "valid discord URL",
51 webhookType: storepb.WebhookType_DISCORD,
52 webhookURL: "https://discord.com/api/webhooks/123456789/abcdefg",
53 wantErr: false,
54 },
55 {
56 name: "valid discordapp URL (legacy)",
57 webhookType: storepb.WebhookType_DISCORD,
58 webhookURL: "https://discordapp.com/api/webhooks/123456789/abcdefg",
59 wantErr: false,
60 },
61 {
62 name: "invalid discord domain",
63 webhookType: storepb.WebhookType_DISCORD,
64 webhookURL: "https://evil-discord.com/api/webhooks/123456789/abcdefg",
65 wantErr: true,
66 },

Callers

nothing calls this directly

Calls 3

ValidateWebhookURLFunction · 0.85
ErrorfMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected