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  }