| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package repo
- import (
- "net/http"
- "testing"
- "github.com/stretchr/testify/assert"
- "gogs.io/gogs/internal/database"
- "gogs.io/gogs/internal/mocks"
- )
- func TestValidateWebhook(t *testing.T) {
- l := &mocks.Locale{
- MockLang: "en",
- MockTr: func(s string, _ ...any) string {
- return s
- },
- }
- tests := []struct {
- name string
- actor *database.User
- webhook *database.Webhook
- wantField string
- wantMsg string
- wantStatus int
- }{
- {
- name: "admin bypass local address check",
- webhook: &database.Webhook{URL: "https://www.google.com"},
- wantStatus: http.StatusOK,
- },
- {
- name: "local address not allowed",
- webhook: &database.Webhook{URL: "http://localhost:3306"},
- wantField: "PayloadURL",
- wantMsg: "repo.settings.webhook.url_resolved_to_blocked_local_address",
- wantStatus: http.StatusForbidden,
- },
- }
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- field, msg, status := validateWebhook(l, test.webhook)
- assert.Equal(t, test.wantStatus, status)
- assert.Equal(t, test.wantMsg, msg)
- assert.Equal(t, test.wantField, field)
- })
- }
- }
|