You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

msteams_test.go 18KB

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