code.gitea.io/gitea@v1.21.7/services/webhook/telegram_test.go (about) 1 // Copyright 2019 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 TestTelegramPayload(t *testing.T) { 17 t.Run("Create", func(t *testing.T) { 18 p := createTestPayload() 19 20 d := new(TelegramPayload) 21 pl, err := d.Create(p) 22 require.NoError(t, err) 23 require.NotNil(t, pl) 24 require.IsType(t, &TelegramPayload{}, pl) 25 26 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] branch <a href="http://localhost:3000/test/repo/src/test">test</a> created`, pl.(*TelegramPayload).Message) 27 }) 28 29 t.Run("Delete", func(t *testing.T) { 30 p := deleteTestPayload() 31 32 d := new(TelegramPayload) 33 pl, err := d.Delete(p) 34 require.NoError(t, err) 35 require.NotNil(t, pl) 36 require.IsType(t, &TelegramPayload{}, pl) 37 38 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] branch <a href="http://localhost:3000/test/repo/src/test">test</a> deleted`, pl.(*TelegramPayload).Message) 39 }) 40 41 t.Run("Fork", func(t *testing.T) { 42 p := forkTestPayload() 43 44 d := new(TelegramPayload) 45 pl, err := d.Fork(p) 46 require.NoError(t, err) 47 require.NotNil(t, pl) 48 require.IsType(t, &TelegramPayload{}, pl) 49 50 assert.Equal(t, `test/repo2 is forked to <a href="http://localhost:3000/test/repo">test/repo</a>`, pl.(*TelegramPayload).Message) 51 }) 52 53 t.Run("Push", func(t *testing.T) { 54 p := pushTestPayload() 55 56 d := new(TelegramPayload) 57 pl, err := d.Push(p) 58 require.NoError(t, err) 59 require.NotNil(t, pl) 60 require.IsType(t, &TelegramPayload{}, pl) 61 62 assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>:<a href=\"http://localhost:3000/test/repo/src/test\">test</a>] 2 new commits\n[<a href=\"http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778\">2020558</a>] commit message - user1\n[<a href=\"http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778\">2020558</a>] commit message - user1", pl.(*TelegramPayload).Message) 63 }) 64 65 t.Run("Issue", func(t *testing.T) { 66 p := issueTestPayload() 67 68 d := new(TelegramPayload) 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, &TelegramPayload{}, pl) 74 75 assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] Issue opened: <a href=\"http://localhost:3000/test/repo/issues/2\">#2 crash</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\n\nissue body", pl.(*TelegramPayload).Message) 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, &TelegramPayload{}, pl) 82 83 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Issue closed: <a href="http://localhost:3000/test/repo/issues/2">#2 crash</a> by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 84 }) 85 86 t.Run("IssueComment", func(t *testing.T) { 87 p := issueCommentTestPayload() 88 89 d := new(TelegramPayload) 90 pl, err := d.IssueComment(p) 91 require.NoError(t, err) 92 require.NotNil(t, pl) 93 require.IsType(t, &TelegramPayload{}, pl) 94 95 assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] New comment on issue <a href=\"http://localhost:3000/test/repo/issues/2\">#2 crash</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\nmore info needed", pl.(*TelegramPayload).Message) 96 }) 97 98 t.Run("PullRequest", func(t *testing.T) { 99 p := pullRequestTestPayload() 100 101 d := new(TelegramPayload) 102 pl, err := d.PullRequest(p) 103 require.NoError(t, err) 104 require.NotNil(t, pl) 105 require.IsType(t, &TelegramPayload{}, pl) 106 107 assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] Pull request opened: <a href=\"http://localhost:3000/test/repo/pulls/12\">#12 Fix bug</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\nfixes bug #2", pl.(*TelegramPayload).Message) 108 }) 109 110 t.Run("PullRequestComment", func(t *testing.T) { 111 p := pullRequestCommentTestPayload() 112 113 d := new(TelegramPayload) 114 pl, err := d.IssueComment(p) 115 require.NoError(t, err) 116 require.NotNil(t, pl) 117 require.IsType(t, &TelegramPayload{}, pl) 118 119 assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] New comment on pull request <a href=\"http://localhost:3000/test/repo/pulls/12\">#12 Fix bug</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\nchanges requested", pl.(*TelegramPayload).Message) 120 }) 121 122 t.Run("Review", func(t *testing.T) { 123 p := pullRequestTestPayload() 124 p.Action = api.HookIssueReviewed 125 126 d := new(TelegramPayload) 127 pl, err := d.Review(p, webhook_module.HookEventPullRequestReviewApproved) 128 require.NoError(t, err) 129 require.NotNil(t, pl) 130 require.IsType(t, &TelegramPayload{}, pl) 131 132 assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug\ngood job", pl.(*TelegramPayload).Message) 133 }) 134 135 t.Run("Repository", func(t *testing.T) { 136 p := repositoryTestPayload() 137 138 d := new(TelegramPayload) 139 pl, err := d.Repository(p) 140 require.NoError(t, err) 141 require.NotNil(t, pl) 142 require.IsType(t, &TelegramPayload{}, pl) 143 144 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Repository created`, pl.(*TelegramPayload).Message) 145 }) 146 147 t.Run("Package", func(t *testing.T) { 148 p := packageTestPayload() 149 150 d := new(TelegramPayload) 151 pl, err := d.Package(p) 152 require.NoError(t, err) 153 require.NotNil(t, pl) 154 require.IsType(t, &TelegramPayload{}, pl) 155 156 assert.Equal(t, `Package created: <a href="http://localhost:3000/user1/-/packages/container/GiteaContainer/latest">GiteaContainer:latest</a> by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 157 }) 158 159 t.Run("Wiki", func(t *testing.T) { 160 p := wikiTestPayload() 161 162 d := new(TelegramPayload) 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, &TelegramPayload{}, pl) 168 169 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] New wiki page '<a href="http://localhost:3000/test/repo/wiki/index">index</a>' (Wiki change comment) by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 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, &TelegramPayload{}, pl) 176 177 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Wiki page '<a href="http://localhost:3000/test/repo/wiki/index">index</a>' edited (Wiki change comment) by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 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, &TelegramPayload{}, pl) 184 185 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Wiki page '<a href="http://localhost:3000/test/repo/wiki/index">index</a>' deleted by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 186 }) 187 188 t.Run("Release", func(t *testing.T) { 189 p := pullReleaseTestPayload() 190 191 d := new(TelegramPayload) 192 pl, err := d.Release(p) 193 require.NoError(t, err) 194 require.NotNil(t, pl) 195 require.IsType(t, &TelegramPayload{}, pl) 196 197 assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Release created: <a href="http://localhost:3000/test/repo/releases/tag/v1.0">v1.0</a> by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message) 198 }) 199 } 200 201 func TestTelegramJSONPayload(t *testing.T) { 202 p := pushTestPayload() 203 204 pl, err := new(TelegramPayload).Push(p) 205 require.NoError(t, err) 206 require.NotNil(t, pl) 207 require.IsType(t, &TelegramPayload{}, pl) 208 209 json, err := pl.JSONPayload() 210 require.NoError(t, err) 211 assert.NotEmpty(t, json) 212 }