gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package webhook
  4. import (
  5. "testing"
  6. repo_model "code.gitea.io/gitea/models/repo"
  7. "code.gitea.io/gitea/models/unittest"
  8. user_model "code.gitea.io/gitea/models/user"
  9. webhook_model "code.gitea.io/gitea/models/webhook"
  10. "code.gitea.io/gitea/modules/setting"
  11. api "code.gitea.io/gitea/modules/structs"
  12. "code.gitea.io/gitea/modules/test"
  13. webhook_module "code.gitea.io/gitea/modules/webhook"
  14. "code.gitea.io/gitea/services/convert"
  15. "github.com/stretchr/testify/assert"
  16. "github.com/stretchr/testify/require"
  17. )
  18. func TestWebhook_GetSlackHook(t *testing.T) {
  19. w := &webhook_model.Webhook{
  20. Meta: `{"channel": "foo", "username": "username", "color": "blue"}`,
  21. }
  22. slackHook := GetSlackHook(w)
  23. assert.Equal(t, SlackMeta{
  24. Channel: "foo",
  25. Username: "username",
  26. Color: "blue",
  27. }, *slackHook)
  28. }
  29. func TestPrepareWebhooks(t *testing.T) {
  30. assert.NoError(t, unittest.PrepareTestDatabase())
  31. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
  32. hookTasks := []*webhook_model.HookTask{
  33. {HookID: 1, EventType: webhook_module.HookEventPush},
  34. }
  35. for _, hookTask := range hookTasks {
  36. unittest.AssertNotExistsBean(t, hookTask)
  37. }
  38. assert.NoError(t, PrepareWebhooks(t.Context(), EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Commits: []*api.PayloadCommit{{}}}))
  39. for _, hookTask := range hookTasks {
  40. unittest.AssertExistsAndLoadBean(t, hookTask)
  41. }
  42. }
  43. func TestPrepareWebhooksBranchFilterMatch(t *testing.T) {
  44. assert.NoError(t, unittest.PrepareTestDatabase())
  45. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
  46. hookTasks := []*webhook_model.HookTask{
  47. {HookID: 4, EventType: webhook_module.HookEventPush},
  48. }
  49. for _, hookTask := range hookTasks {
  50. unittest.AssertNotExistsBean(t, hookTask)
  51. }
  52. // this test also ensures that * doesn't handle / in any special way (like shell would)
  53. assert.NoError(t, PrepareWebhooks(t.Context(), EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Ref: "refs/heads/feature/7791", Commits: []*api.PayloadCommit{{}}}))
  54. for _, hookTask := range hookTasks {
  55. unittest.AssertExistsAndLoadBean(t, hookTask)
  56. }
  57. }
  58. func TestPrepareWebhooksBranchFilterNoMatch(t *testing.T) {
  59. assert.NoError(t, unittest.PrepareTestDatabase())
  60. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
  61. hookTasks := []*webhook_model.HookTask{
  62. {HookID: 4, EventType: webhook_module.HookEventPush},
  63. }
  64. for _, hookTask := range hookTasks {
  65. unittest.AssertNotExistsBean(t, hookTask)
  66. }
  67. assert.NoError(t, PrepareWebhooks(t.Context(), EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Ref: "refs/heads/fix_weird_bug"}))
  68. for _, hookTask := range hookTasks {
  69. unittest.AssertNotExistsBean(t, hookTask)
  70. }
  71. }
  72. func TestWebhookUserMail(t *testing.T) {
  73. require.NoError(t, unittest.PrepareTestDatabase())
  74. defer test.MockVariableValue(&setting.Service.NoReplyAddress, "no-reply.com")()
  75. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
  76. assert.Equal(t, user.GetPlaceholderEmail(), convert.ToUser(t.Context(), user, nil).Email)
  77. assert.Equal(t, user.Email, convert.ToUser(t.Context(), user, user).Email)
  78. }