code.gitea.io/gitea@v1.21.7/services/webhook/msteams_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 TestMSTeamsPayload(t *testing.T) { 17 t.Run("Create", func(t *testing.T) { 18 p := createTestPayload() 19 20 d := new(MSTeamsPayload) 21 pl, err := d.Create(p) 22 require.NoError(t, err) 23 require.NotNil(t, pl) 24 require.IsType(t, &MSTeamsPayload{}, pl) 25 26 assert.Equal(t, "[test/repo] branch test created", pl.(*MSTeamsPayload).Title) 27 assert.Equal(t, "[test/repo] branch test created", pl.(*MSTeamsPayload).Summary) 28 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 29 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 30 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 31 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 32 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 33 if fact.Name == "Repository:" { 34 assert.Equal(t, p.Repo.FullName, fact.Value) 35 } else if fact.Name == "branch:" { 36 assert.Equal(t, "test", fact.Value) 37 } else { 38 t.Fail() 39 } 40 } 41 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 42 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 43 assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 44 }) 45 46 t.Run("Delete", func(t *testing.T) { 47 p := deleteTestPayload() 48 49 d := new(MSTeamsPayload) 50 pl, err := d.Delete(p) 51 require.NoError(t, err) 52 require.NotNil(t, pl) 53 require.IsType(t, &MSTeamsPayload{}, pl) 54 55 assert.Equal(t, "[test/repo] branch test deleted", pl.(*MSTeamsPayload).Title) 56 assert.Equal(t, "[test/repo] branch test deleted", pl.(*MSTeamsPayload).Summary) 57 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 58 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 59 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 60 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 61 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 62 if fact.Name == "Repository:" { 63 assert.Equal(t, p.Repo.FullName, fact.Value) 64 } else if fact.Name == "branch:" { 65 assert.Equal(t, "test", fact.Value) 66 } else { 67 t.Fail() 68 } 69 } 70 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 71 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 72 assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 73 }) 74 75 t.Run("Fork", func(t *testing.T) { 76 p := forkTestPayload() 77 78 d := new(MSTeamsPayload) 79 pl, err := d.Fork(p) 80 require.NoError(t, err) 81 require.NotNil(t, pl) 82 require.IsType(t, &MSTeamsPayload{}, pl) 83 84 assert.Equal(t, "test/repo2 is forked to test/repo", pl.(*MSTeamsPayload).Title) 85 assert.Equal(t, "test/repo2 is forked to test/repo", pl.(*MSTeamsPayload).Summary) 86 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 87 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 88 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 89 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 90 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 91 if fact.Name == "Repository:" { 92 assert.Equal(t, p.Repo.FullName, fact.Value) 93 } else if fact.Name == "Forkee:" { 94 assert.Equal(t, p.Forkee.FullName, fact.Value) 95 } else { 96 t.Fail() 97 } 98 } 99 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 100 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 101 assert.Equal(t, "http://localhost:3000/test/repo", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 102 }) 103 104 t.Run("Push", func(t *testing.T) { 105 p := pushTestPayload() 106 107 d := new(MSTeamsPayload) 108 pl, err := d.Push(p) 109 require.NoError(t, err) 110 require.NotNil(t, pl) 111 require.IsType(t, &MSTeamsPayload{}, pl) 112 113 assert.Equal(t, "[test/repo:test] 2 new commits", pl.(*MSTeamsPayload).Title) 114 assert.Equal(t, "[test/repo:test] 2 new commits", pl.(*MSTeamsPayload).Summary) 115 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 116 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 117 assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\n\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.(*MSTeamsPayload).Sections[0].Text) 118 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 119 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 120 if fact.Name == "Repository:" { 121 assert.Equal(t, p.Repo.FullName, fact.Value) 122 } else if fact.Name == "Commit count:" { 123 assert.Equal(t, "2", fact.Value) 124 } else { 125 t.Fail() 126 } 127 } 128 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 129 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 130 assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 131 }) 132 133 t.Run("Issue", func(t *testing.T) { 134 p := issueTestPayload() 135 136 d := new(MSTeamsPayload) 137 p.Action = api.HookIssueOpened 138 pl, err := d.Issue(p) 139 require.NoError(t, err) 140 require.NotNil(t, pl) 141 require.IsType(t, &MSTeamsPayload{}, pl) 142 143 assert.Equal(t, "[test/repo] Issue opened: #2 crash", pl.(*MSTeamsPayload).Title) 144 assert.Equal(t, "[test/repo] Issue opened: #2 crash", pl.(*MSTeamsPayload).Summary) 145 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 146 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 147 assert.Equal(t, "issue body", pl.(*MSTeamsPayload).Sections[0].Text) 148 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 149 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 150 if fact.Name == "Repository:" { 151 assert.Equal(t, p.Repository.FullName, fact.Value) 152 } else if fact.Name == "Issue #:" { 153 assert.Equal(t, "2", fact.Value) 154 } else { 155 t.Fail() 156 } 157 } 158 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 159 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 160 assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 161 162 p.Action = api.HookIssueClosed 163 pl, err = d.Issue(p) 164 require.NoError(t, err) 165 require.NotNil(t, pl) 166 require.IsType(t, &MSTeamsPayload{}, pl) 167 168 assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.(*MSTeamsPayload).Title) 169 assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.(*MSTeamsPayload).Summary) 170 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 171 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 172 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 173 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 174 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 175 if fact.Name == "Repository:" { 176 assert.Equal(t, p.Repository.FullName, fact.Value) 177 } else if fact.Name == "Issue #:" { 178 assert.Equal(t, "2", fact.Value) 179 } else { 180 t.Fail() 181 } 182 } 183 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 184 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 185 assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 186 }) 187 188 t.Run("IssueComment", func(t *testing.T) { 189 p := issueCommentTestPayload() 190 191 d := new(MSTeamsPayload) 192 pl, err := d.IssueComment(p) 193 require.NoError(t, err) 194 require.NotNil(t, pl) 195 require.IsType(t, &MSTeamsPayload{}, pl) 196 197 assert.Equal(t, "[test/repo] New comment on issue #2 crash", pl.(*MSTeamsPayload).Title) 198 assert.Equal(t, "[test/repo] New comment on issue #2 crash", pl.(*MSTeamsPayload).Summary) 199 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 200 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 201 assert.Equal(t, "more info needed", pl.(*MSTeamsPayload).Sections[0].Text) 202 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 203 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 204 if fact.Name == "Repository:" { 205 assert.Equal(t, p.Repository.FullName, fact.Value) 206 } else if fact.Name == "Issue #:" { 207 assert.Equal(t, "2", fact.Value) 208 } else { 209 t.Fail() 210 } 211 } 212 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 213 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 214 assert.Equal(t, "http://localhost:3000/test/repo/issues/2#issuecomment-4", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 215 }) 216 217 t.Run("PullRequest", func(t *testing.T) { 218 p := pullRequestTestPayload() 219 220 d := new(MSTeamsPayload) 221 pl, err := d.PullRequest(p) 222 require.NoError(t, err) 223 require.NotNil(t, pl) 224 require.IsType(t, &MSTeamsPayload{}, pl) 225 226 assert.Equal(t, "[test/repo] Pull request opened: #12 Fix bug", pl.(*MSTeamsPayload).Title) 227 assert.Equal(t, "[test/repo] Pull request opened: #12 Fix bug", pl.(*MSTeamsPayload).Summary) 228 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 229 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 230 assert.Equal(t, "fixes bug #2", pl.(*MSTeamsPayload).Sections[0].Text) 231 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 232 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 233 if fact.Name == "Repository:" { 234 assert.Equal(t, p.Repository.FullName, fact.Value) 235 } else if fact.Name == "Pull request #:" { 236 assert.Equal(t, "12", fact.Value) 237 } else { 238 t.Fail() 239 } 240 } 241 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 242 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 243 assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 244 }) 245 246 t.Run("PullRequestComment", func(t *testing.T) { 247 p := pullRequestCommentTestPayload() 248 249 d := new(MSTeamsPayload) 250 pl, err := d.IssueComment(p) 251 require.NoError(t, err) 252 require.NotNil(t, pl) 253 require.IsType(t, &MSTeamsPayload{}, pl) 254 255 assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.(*MSTeamsPayload).Title) 256 assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.(*MSTeamsPayload).Summary) 257 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 258 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 259 assert.Equal(t, "changes requested", pl.(*MSTeamsPayload).Sections[0].Text) 260 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 261 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 262 if fact.Name == "Repository:" { 263 assert.Equal(t, p.Repository.FullName, fact.Value) 264 } else if fact.Name == "Issue #:" { 265 assert.Equal(t, "12", fact.Value) 266 } else { 267 t.Fail() 268 } 269 } 270 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 271 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 272 assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 273 }) 274 275 t.Run("Review", func(t *testing.T) { 276 p := pullRequestTestPayload() 277 p.Action = api.HookIssueReviewed 278 279 d := new(MSTeamsPayload) 280 pl, err := d.Review(p, webhook_module.HookEventPullRequestReviewApproved) 281 require.NoError(t, err) 282 require.NotNil(t, pl) 283 require.IsType(t, &MSTeamsPayload{}, pl) 284 285 assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug", pl.(*MSTeamsPayload).Title) 286 assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug", pl.(*MSTeamsPayload).Summary) 287 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 288 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 289 assert.Equal(t, "good job", pl.(*MSTeamsPayload).Sections[0].Text) 290 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 291 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 292 if fact.Name == "Repository:" { 293 assert.Equal(t, p.Repository.FullName, fact.Value) 294 } else if fact.Name == "Pull request #:" { 295 assert.Equal(t, "12", fact.Value) 296 } else { 297 t.Fail() 298 } 299 } 300 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 301 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 302 assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 303 }) 304 305 t.Run("Repository", func(t *testing.T) { 306 p := repositoryTestPayload() 307 308 d := new(MSTeamsPayload) 309 pl, err := d.Repository(p) 310 require.NoError(t, err) 311 require.NotNil(t, pl) 312 require.IsType(t, &MSTeamsPayload{}, pl) 313 314 assert.Equal(t, "[test/repo] Repository created", pl.(*MSTeamsPayload).Title) 315 assert.Equal(t, "[test/repo] Repository created", pl.(*MSTeamsPayload).Summary) 316 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 317 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 318 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 319 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 1) 320 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 321 if fact.Name == "Repository:" { 322 assert.Equal(t, p.Repository.FullName, fact.Value) 323 } else { 324 t.Fail() 325 } 326 } 327 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 328 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 329 assert.Equal(t, "http://localhost:3000/test/repo", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 330 }) 331 332 t.Run("Package", func(t *testing.T) { 333 p := packageTestPayload() 334 335 d := new(MSTeamsPayload) 336 pl, err := d.Package(p) 337 require.NoError(t, err) 338 require.NotNil(t, pl) 339 require.IsType(t, &MSTeamsPayload{}, pl) 340 341 assert.Equal(t, "Package created: GiteaContainer:latest", pl.(*MSTeamsPayload).Title) 342 assert.Equal(t, "Package created: GiteaContainer:latest", pl.(*MSTeamsPayload).Summary) 343 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 344 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 345 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 346 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 1) 347 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 348 if fact.Name == "Package:" { 349 assert.Equal(t, p.Package.Name, fact.Value) 350 } else { 351 t.Fail() 352 } 353 } 354 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 355 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 356 assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 357 }) 358 359 t.Run("Wiki", func(t *testing.T) { 360 p := wikiTestPayload() 361 362 d := new(MSTeamsPayload) 363 p.Action = api.HookWikiCreated 364 pl, err := d.Wiki(p) 365 require.NoError(t, err) 366 require.NotNil(t, pl) 367 require.IsType(t, &MSTeamsPayload{}, pl) 368 369 assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment)", pl.(*MSTeamsPayload).Title) 370 assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment)", pl.(*MSTeamsPayload).Summary) 371 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 372 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 373 assert.Equal(t, "", pl.(*MSTeamsPayload).Sections[0].Text) 374 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 375 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 376 if fact.Name == "Repository:" { 377 assert.Equal(t, p.Repository.FullName, fact.Value) 378 } else { 379 t.Fail() 380 } 381 } 382 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 383 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 384 assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 385 386 p.Action = api.HookWikiEdited 387 pl, err = d.Wiki(p) 388 require.NoError(t, err) 389 require.NotNil(t, pl) 390 require.IsType(t, &MSTeamsPayload{}, pl) 391 392 assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment)", pl.(*MSTeamsPayload).Title) 393 assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment)", pl.(*MSTeamsPayload).Summary) 394 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 395 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 396 assert.Equal(t, "", pl.(*MSTeamsPayload).Sections[0].Text) 397 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 398 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 399 if fact.Name == "Repository:" { 400 assert.Equal(t, p.Repository.FullName, fact.Value) 401 } else { 402 t.Fail() 403 } 404 } 405 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 406 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 407 assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 408 409 p.Action = api.HookWikiDeleted 410 pl, err = d.Wiki(p) 411 require.NoError(t, err) 412 require.NotNil(t, pl) 413 require.IsType(t, &MSTeamsPayload{}, pl) 414 415 assert.Equal(t, "[test/repo] Wiki page 'index' deleted", pl.(*MSTeamsPayload).Title) 416 assert.Equal(t, "[test/repo] Wiki page 'index' deleted", pl.(*MSTeamsPayload).Summary) 417 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 418 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 419 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 420 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 421 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 422 if fact.Name == "Repository:" { 423 assert.Equal(t, p.Repository.FullName, fact.Value) 424 } else { 425 t.Fail() 426 } 427 } 428 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 429 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 430 assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 431 }) 432 433 t.Run("Release", func(t *testing.T) { 434 p := pullReleaseTestPayload() 435 436 d := new(MSTeamsPayload) 437 pl, err := d.Release(p) 438 require.NoError(t, err) 439 require.NotNil(t, pl) 440 require.IsType(t, &MSTeamsPayload{}, pl) 441 442 assert.Equal(t, "[test/repo] Release created: v1.0", pl.(*MSTeamsPayload).Title) 443 assert.Equal(t, "[test/repo] Release created: v1.0", pl.(*MSTeamsPayload).Summary) 444 assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) 445 assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) 446 assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) 447 assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2) 448 for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { 449 if fact.Name == "Repository:" { 450 assert.Equal(t, p.Repository.FullName, fact.Value) 451 } else if fact.Name == "Tag:" { 452 assert.Equal(t, "v1.0", fact.Value) 453 } else { 454 t.Fail() 455 } 456 } 457 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) 458 assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) 459 assert.Equal(t, "http://localhost:3000/test/repo/releases/tag/v1.0", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) 460 }) 461 } 462 463 func TestMSTeamsJSONPayload(t *testing.T) { 464 p := pushTestPayload() 465 466 pl, err := new(MSTeamsPayload).Push(p) 467 require.NoError(t, err) 468 require.NotNil(t, pl) 469 require.IsType(t, &MSTeamsPayload{}, pl) 470 471 json, err := pl.JSONPayload() 472 require.NoError(t, err) 473 assert.NotEmpty(t, json) 474 }