mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 09:11:53 -05:00
5104c887d3
close https://github.com/go-gitea/gitea/issues/24368 ## what my pull request does Since the official documentation states that custom bots do not support hyperlink functionality, simply adding it without making some formatting changes would result in an unappealing output. Therefore, I have modified the formatting of the output. Currently, it is only used for Feishu. --- [docs](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json#%E8%B6%85%E9%93%BE%E6%8E%A5%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) <img width="641" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/360e1c81-ab64-4ef6-851e-aa450d6e85a4"> - Issue <img width="423" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/519f6fae-81ab-4ec8-89b8-f6a73ff93783"> - Issue Comment <img width="548" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/749c0d1c-3657-431e-b787-8bf4c23cce83"> - Assign <img width="431" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/066f99e5-eabb-455d-91fb-a8359cc26dc7"> <img width="457" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/c6c10f99-db83-46ef-a775-4c91979fa68f"> - Merge <img width="408" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/e627bf43-5954-45aa-acf6-261ee046802f"> - PullRequest <img width="425" alt="image" src="https://github.com/go-gitea/gitea/assets/75628309/72cfa714-d3fa-4fb9-abdd-e8508d756056">
200 lines
6 KiB
Go
200 lines
6 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package webhook
|
|
|
|
import (
|
|
"testing"
|
|
|
|
api "code.gitea.io/gitea/modules/structs"
|
|
webhook_module "code.gitea.io/gitea/modules/webhook"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFeishuPayload(t *testing.T) {
|
|
t.Run("Create", func(t *testing.T) {
|
|
p := createTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Create(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, `[test/repo] branch test created`, pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Delete", func(t *testing.T) {
|
|
p := deleteTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Delete(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, `[test/repo] branch test deleted`, pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Fork", func(t *testing.T) {
|
|
p := forkTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Fork(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, `test/repo2 is forked to test/repo`, pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Push", func(t *testing.T) {
|
|
p := pushTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Push(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo:test] \r\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\r\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Issue", func(t *testing.T) {
|
|
p := issueTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
p.Action = api.HookIssueOpened
|
|
pl, err := d.Issue(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[Issue-test/repo #2]: opened\ncrash\nhttp://localhost:3000/test/repo/issues/2\nIssue by user1\nOperator: user1\nAssignees: user1\n\nissue body", pl.(*FeishuPayload).Content.Text)
|
|
|
|
p.Action = api.HookIssueClosed
|
|
pl, err = d.Issue(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[Issue-test/repo #2]: closed\ncrash\nhttp://localhost:3000/test/repo/issues/2\nIssue by user1\nOperator: user1\nAssignees: user1\n\nissue body", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("IssueComment", func(t *testing.T) {
|
|
p := issueCommentTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.IssueComment(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[Comment-test/repo #2]: created\ncrash\nhttp://localhost:3000/test/repo/issues/2\nIssue by user1\nOperator: user1\n\nmore info needed", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("PullRequest", func(t *testing.T) {
|
|
p := pullRequestTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.PullRequest(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[PullRequest-test/repo #12]: opened\nFix bug\nhttp://localhost:3000/test/repo/pulls/12\nPullRequest by user1\nOperator: user1\nAssignees: user1\n\nfixes bug #2", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("PullRequestComment", func(t *testing.T) {
|
|
p := pullRequestCommentTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.IssueComment(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[Comment-test/repo #12]: created\nFix bug\nhttp://localhost:3000/test/repo/pulls/12\nPullRequest by user1\nOperator: user1\n\nchanges requested", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Review", func(t *testing.T) {
|
|
p := pullRequestTestPayload()
|
|
p.Action = api.HookIssueReviewed
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Review(p, webhook_module.HookEventPullRequestReviewApproved)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] Pull request review approved : #12 Fix bug\r\n\r\ngood job", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Repository", func(t *testing.T) {
|
|
p := repositoryTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Repository(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] Repository created", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Wiki", func(t *testing.T) {
|
|
p := wikiTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
p.Action = api.HookWikiCreated
|
|
pl, err := d.Wiki(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment) by user1", pl.(*FeishuPayload).Content.Text)
|
|
|
|
p.Action = api.HookWikiEdited
|
|
pl, err = d.Wiki(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1", pl.(*FeishuPayload).Content.Text)
|
|
|
|
p.Action = api.HookWikiDeleted
|
|
pl, err = d.Wiki(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] Wiki page 'index' deleted by user1", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
|
|
t.Run("Release", func(t *testing.T) {
|
|
p := pullReleaseTestPayload()
|
|
|
|
d := new(FeishuPayload)
|
|
pl, err := d.Release(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
assert.Equal(t, "[test/repo] Release created: v1.0 by user1", pl.(*FeishuPayload).Content.Text)
|
|
})
|
|
}
|
|
|
|
func TestFeishuJSONPayload(t *testing.T) {
|
|
p := pushTestPayload()
|
|
|
|
pl, err := new(FeishuPayload).Push(p)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, pl)
|
|
require.IsType(t, &FeishuPayload{}, pl)
|
|
|
|
json, err := pl.JSONPayload()
|
|
require.NoError(t, err)
|
|
assert.NotEmpty(t, json)
|
|
}
|