code.gitea.io/gitea@v1.21.7/services/webhook/feishu_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package webhook 5 6 import ( 7 "testing" 8 9 api "code.gitea.io/gitea/modules/structs" 10 webhook_module "code.gitea.io/gitea/modules/webhook" 11 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestFeishuPayload(t *testing.T) { 17 t.Run("Create", func(t *testing.T) { 18 p := createTestPayload() 19 20 d := new(FeishuPayload) 21 pl, err := d.Create(p) 22 require.NoError(t, err) 23 require.NotNil(t, pl) 24 require.IsType(t, &FeishuPayload{}, pl) 25 26 assert.Equal(t, `[test/repo] branch test created`, pl.(*FeishuPayload).Content.Text) 27 }) 28 29 t.Run("Delete", func(t *testing.T) { 30 p := deleteTestPayload() 31 32 d := new(FeishuPayload) 33 pl, err := d.Delete(p) 34 require.NoError(t, err) 35 require.NotNil(t, pl) 36 require.IsType(t, &FeishuPayload{}, pl) 37 38 assert.Equal(t, `[test/repo] branch test deleted`, pl.(*FeishuPayload).Content.Text) 39 }) 40 41 t.Run("Fork", func(t *testing.T) { 42 p := forkTestPayload() 43 44 d := new(FeishuPayload) 45 pl, err := d.Fork(p) 46 require.NoError(t, err) 47 require.NotNil(t, pl) 48 require.IsType(t, &FeishuPayload{}, pl) 49 50 assert.Equal(t, `test/repo2 is forked to test/repo`, pl.(*FeishuPayload).Content.Text) 51 }) 52 53 t.Run("Push", func(t *testing.T) { 54 p := pushTestPayload() 55 56 d := new(FeishuPayload) 57 pl, err := d.Push(p) 58 require.NoError(t, err) 59 require.NotNil(t, pl) 60 require.IsType(t, &FeishuPayload{}, pl) 61 62 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) 63 }) 64 65 t.Run("Issue", func(t *testing.T) { 66 p := issueTestPayload() 67 68 d := new(FeishuPayload) 69 p.Action = api.HookIssueOpened 70 pl, err := d.Issue(p) 71 require.NoError(t, err) 72 require.NotNil(t, pl) 73 require.IsType(t, &FeishuPayload{}, pl) 74 75 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) 76 77 p.Action = api.HookIssueClosed 78 pl, err = d.Issue(p) 79 require.NoError(t, err) 80 require.NotNil(t, pl) 81 require.IsType(t, &FeishuPayload{}, pl) 82 83 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) 84 }) 85 86 t.Run("IssueComment", func(t *testing.T) { 87 p := issueCommentTestPayload() 88 89 d := new(FeishuPayload) 90 pl, err := d.IssueComment(p) 91 require.NoError(t, err) 92 require.NotNil(t, pl) 93 require.IsType(t, &FeishuPayload{}, pl) 94 95 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) 96 }) 97 98 t.Run("PullRequest", func(t *testing.T) { 99 p := pullRequestTestPayload() 100 101 d := new(FeishuPayload) 102 pl, err := d.PullRequest(p) 103 require.NoError(t, err) 104 require.NotNil(t, pl) 105 require.IsType(t, &FeishuPayload{}, pl) 106 107 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) 108 }) 109 110 t.Run("PullRequestComment", func(t *testing.T) { 111 p := pullRequestCommentTestPayload() 112 113 d := new(FeishuPayload) 114 pl, err := d.IssueComment(p) 115 require.NoError(t, err) 116 require.NotNil(t, pl) 117 require.IsType(t, &FeishuPayload{}, pl) 118 119 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) 120 }) 121 122 t.Run("Review", func(t *testing.T) { 123 p := pullRequestTestPayload() 124 p.Action = api.HookIssueReviewed 125 126 d := new(FeishuPayload) 127 pl, err := d.Review(p, webhook_module.HookEventPullRequestReviewApproved) 128 require.NoError(t, err) 129 require.NotNil(t, pl) 130 require.IsType(t, &FeishuPayload{}, pl) 131 132 assert.Equal(t, "[test/repo] Pull request review approved : #12 Fix bug\r\n\r\ngood job", pl.(*FeishuPayload).Content.Text) 133 }) 134 135 t.Run("Repository", func(t *testing.T) { 136 p := repositoryTestPayload() 137 138 d := new(FeishuPayload) 139 pl, err := d.Repository(p) 140 require.NoError(t, err) 141 require.NotNil(t, pl) 142 require.IsType(t, &FeishuPayload{}, pl) 143 144 assert.Equal(t, "[test/repo] Repository created", pl.(*FeishuPayload).Content.Text) 145 }) 146 147 t.Run("Package", func(t *testing.T) { 148 p := packageTestPayload() 149 150 d := new(FeishuPayload) 151 pl, err := d.Package(p) 152 require.NoError(t, err) 153 require.NotNil(t, pl) 154 require.IsType(t, &FeishuPayload{}, pl) 155 156 assert.Equal(t, "Package created: GiteaContainer:latest by user1", pl.(*FeishuPayload).Content.Text) 157 }) 158 159 t.Run("Wiki", func(t *testing.T) { 160 p := wikiTestPayload() 161 162 d := new(FeishuPayload) 163 p.Action = api.HookWikiCreated 164 pl, err := d.Wiki(p) 165 require.NoError(t, err) 166 require.NotNil(t, pl) 167 require.IsType(t, &FeishuPayload{}, pl) 168 169 assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment) by user1", pl.(*FeishuPayload).Content.Text) 170 171 p.Action = api.HookWikiEdited 172 pl, err = d.Wiki(p) 173 require.NoError(t, err) 174 require.NotNil(t, pl) 175 require.IsType(t, &FeishuPayload{}, pl) 176 177 assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1", pl.(*FeishuPayload).Content.Text) 178 179 p.Action = api.HookWikiDeleted 180 pl, err = d.Wiki(p) 181 require.NoError(t, err) 182 require.NotNil(t, pl) 183 require.IsType(t, &FeishuPayload{}, pl) 184 185 assert.Equal(t, "[test/repo] Wiki page 'index' deleted by user1", pl.(*FeishuPayload).Content.Text) 186 }) 187 188 t.Run("Release", func(t *testing.T) { 189 p := pullReleaseTestPayload() 190 191 d := new(FeishuPayload) 192 pl, err := d.Release(p) 193 require.NoError(t, err) 194 require.NotNil(t, pl) 195 require.IsType(t, &FeishuPayload{}, pl) 196 197 assert.Equal(t, "[test/repo] Release created: v1.0 by user1", pl.(*FeishuPayload).Content.Text) 198 }) 199 } 200 201 func TestFeishuJSONPayload(t *testing.T) { 202 p := pushTestPayload() 203 204 pl, err := new(FeishuPayload).Push(p) 205 require.NoError(t, err) 206 require.NotNil(t, pl) 207 require.IsType(t, &FeishuPayload{}, pl) 208 209 json, err := pl.JSONPayload() 210 require.NoError(t, err) 211 assert.NotEmpty(t, json) 212 }