| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Copyright 2025 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package utils
-
- import (
- "net/http"
- "testing"
-
- "code.gitea.io/gitea/models/unittest"
- "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/services/contexttest"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestTestHookValidation(t *testing.T) {
- unittest.PrepareTestEnv(t)
-
- t.Run("Test Validation", func(t *testing.T) {
- ctx, _ := contexttest.MockAPIContext(t, "user2/repo1/hooks")
- contexttest.LoadRepo(t, ctx, 1)
- contexttest.LoadRepoCommit(t, ctx)
- contexttest.LoadUser(t, ctx, 2)
-
- checkCreateHookOption(ctx, &structs.CreateHookOption{
- Type: "gitea",
- Config: map[string]string{
- "content_type": "json",
- "url": "https://example.com/webhook",
- },
- })
- assert.Equal(t, 0, ctx.Resp.WrittenStatus()) // not written yet
- })
-
- t.Run("Test Validation with invalid URL", func(t *testing.T) {
- ctx, _ := contexttest.MockAPIContext(t, "user2/repo1/hooks")
- contexttest.LoadRepo(t, ctx, 1)
- contexttest.LoadRepoCommit(t, ctx)
- contexttest.LoadUser(t, ctx, 2)
-
- checkCreateHookOption(ctx, &structs.CreateHookOption{
- Type: "gitea",
- Config: map[string]string{
- "content_type": "json",
- "url": "example.com/webhook",
- },
- })
- assert.Equal(t, http.StatusUnprocessableEntity, ctx.Resp.WrittenStatus())
- })
-
- t.Run("Test Validation with invalid webhook type", func(t *testing.T) {
- ctx, _ := contexttest.MockAPIContext(t, "user2/repo1/hooks")
- contexttest.LoadRepo(t, ctx, 1)
- contexttest.LoadRepoCommit(t, ctx)
- contexttest.LoadUser(t, ctx, 2)
-
- checkCreateHookOption(ctx, &structs.CreateHookOption{
- Type: "unknown",
- Config: map[string]string{
- "content_type": "json",
- "url": "example.com/webhook",
- },
- })
- assert.Equal(t, http.StatusUnprocessableEntity, ctx.Resp.WrittenStatus())
- })
-
- t.Run("Test Validation with empty content type", func(t *testing.T) {
- ctx, _ := contexttest.MockAPIContext(t, "user2/repo1/hooks")
- contexttest.LoadRepo(t, ctx, 1)
- contexttest.LoadRepoCommit(t, ctx)
- contexttest.LoadUser(t, ctx, 2)
-
- checkCreateHookOption(ctx, &structs.CreateHookOption{
- Type: "unknown",
- Config: map[string]string{
- "url": "https://example.com/webhook",
- },
- })
- assert.Equal(t, http.StatusUnprocessableEntity, ctx.Resp.WrittenStatus())
- })
- }
|