mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Backport #28089 by @KN4CK3R Fixes #28088 Fixes #28094 Added missing tests. Co-authored-by: KN4CK3R <admin@oldschoolhack.me> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		| @@ -188,6 +188,21 @@ func TestDingTalkPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, "http://localhost:3000/test/repo", parseRealSingleURL(pl.(*DingtalkPayload).ActionCard.SingleURL)) | 		assert.Equal(t, "http://localhost:3000/test/repo", parseRealSingleURL(pl.(*DingtalkPayload).ActionCard.SingleURL)) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(DingtalkPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &DingtalkPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest by user1", pl.(*DingtalkPayload).ActionCard.Text) | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest by user1", pl.(*DingtalkPayload).ActionCard.Title) | ||||||
|  | 		assert.Equal(t, "view package", pl.(*DingtalkPayload).ActionCard.SingleTitle) | ||||||
|  | 		assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", parseRealSingleURL(pl.(*DingtalkPayload).ActionCard.SingleURL)) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -211,6 +211,24 @@ func TestDiscordPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL) | 		assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(DiscordPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &DiscordPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Len(t, pl.(*DiscordPayload).Embeds, 1) | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest", pl.(*DiscordPayload).Embeds[0].Title) | ||||||
|  | 		assert.Empty(t, pl.(*DiscordPayload).Embeds[0].Description) | ||||||
|  | 		assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", pl.(*DiscordPayload).Embeds[0].URL) | ||||||
|  | 		assert.Equal(t, p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.Name) | ||||||
|  | 		assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.URL) | ||||||
|  | 		assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -144,6 +144,18 @@ func TestFeishuPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, "[test/repo] Repository created", pl.(*FeishuPayload).Content.Text) | 		assert.Equal(t, "[test/repo] Repository created", pl.(*FeishuPayload).Content.Text) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(FeishuPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &FeishuPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest by user1", pl.(*FeishuPayload).Content.Text) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -303,6 +303,36 @@ func repositoryTestPayload() *api.RepositoryPayload { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func packageTestPayload() *api.PackagePayload { | ||||||
|  | 	return &api.PackagePayload{ | ||||||
|  | 		Action: api.HookPackageCreated, | ||||||
|  | 		Sender: &api.User{ | ||||||
|  | 			UserName:  "user1", | ||||||
|  | 			AvatarURL: "http://localhost:3000/user1/avatar", | ||||||
|  | 		}, | ||||||
|  | 		Repository: nil, | ||||||
|  | 		Organization: &api.User{ | ||||||
|  | 			UserName:  "org1", | ||||||
|  | 			AvatarURL: "http://localhost:3000/org1/avatar", | ||||||
|  | 		}, | ||||||
|  | 		Package: &api.Package{ | ||||||
|  | 			Owner: &api.User{ | ||||||
|  | 				UserName:  "user1", | ||||||
|  | 				AvatarURL: "http://localhost:3000/user1/avatar", | ||||||
|  | 			}, | ||||||
|  | 			Repository: nil, | ||||||
|  | 			Creator: &api.User{ | ||||||
|  | 				UserName:  "user1", | ||||||
|  | 				AvatarURL: "http://localhost:3000/user1/avatar", | ||||||
|  | 			}, | ||||||
|  | 			Type:    "container", | ||||||
|  | 			Name:    "GiteaContainer", | ||||||
|  | 			Version: "latest", | ||||||
|  | 			HTMLURL: "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| func TestGetIssuesPayloadInfo(t *testing.T) { | func TestGetIssuesPayloadInfo(t *testing.T) { | ||||||
| 	p := issueTestPayload() | 	p := issueTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -212,14 +212,14 @@ func (m *MatrixPayload) Repository(p *api.RepositoryPayload) (api.Payloader, err | |||||||
|  |  | ||||||
| func (m *MatrixPayload) Package(p *api.PackagePayload) (api.Payloader, error) { | func (m *MatrixPayload) Package(p *api.PackagePayload) (api.Payloader, error) { | ||||||
| 	senderLink := MatrixLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) | 	senderLink := MatrixLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) | ||||||
| 	repoLink := MatrixLinkFormatter(p.Repository.HTMLURL, p.Repository.FullName) | 	packageLink := MatrixLinkFormatter(p.Package.HTMLURL, p.Package.Name) | ||||||
| 	var text string | 	var text string | ||||||
|  |  | ||||||
| 	switch p.Action { | 	switch p.Action { | ||||||
| 	case api.HookPackageCreated: | 	case api.HookPackageCreated: | ||||||
| 		text = fmt.Sprintf("[%s] Package published by %s", repoLink, senderLink) | 		text = fmt.Sprintf("[%s] Package published by %s", packageLink, senderLink) | ||||||
| 	case api.HookPackageDeleted: | 	case api.HookPackageDeleted: | ||||||
| 		text = fmt.Sprintf("[%s] Package deleted by %s", repoLink, senderLink) | 		text = fmt.Sprintf("[%s] Package deleted by %s", packageLink, senderLink) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return getMatrixPayload(text, nil, m.MsgType), nil | 	return getMatrixPayload(text, nil, m.MsgType), nil | ||||||
|   | |||||||
| @@ -155,6 +155,19 @@ func TestMatrixPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Repository created by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*MatrixPayload).FormattedBody) | 		assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Repository created by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*MatrixPayload).FormattedBody) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(MatrixPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &MatrixPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Equal(t, `[[GiteaContainer](http://localhost:3000/user1/-/packages/container/GiteaContainer/latest)] Package published by [user1](https://try.gitea.io/user1)`, pl.(*MatrixPayload).Body) | ||||||
|  | 		assert.Equal(t, `[<a href="http://localhost:3000/user1/-/packages/container/GiteaContainer/latest">GiteaContainer</a>] Package published by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*MatrixPayload).FormattedBody) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -316,11 +316,12 @@ func GetMSTeamsPayload(p api.Payloader, event webhook_module.HookEventType, _ st | |||||||
| } | } | ||||||
|  |  | ||||||
| func createMSTeamsPayload(r *api.Repository, s *api.User, title, text, actionTarget string, color int, fact *MSTeamsFact) *MSTeamsPayload { | func createMSTeamsPayload(r *api.Repository, s *api.User, title, text, actionTarget string, color int, fact *MSTeamsFact) *MSTeamsPayload { | ||||||
| 	facts := []MSTeamsFact{ | 	facts := make([]MSTeamsFact, 0, 2) | ||||||
| 		{ | 	if r != nil { | ||||||
|  | 		facts = append(facts, MSTeamsFact{ | ||||||
| 			Name:  "Repository:", | 			Name:  "Repository:", | ||||||
| 			Value: r.FullName, | 			Value: r.FullName, | ||||||
| 		}, | 		}) | ||||||
| 	} | 	} | ||||||
| 	if fact != nil { | 	if fact != nil { | ||||||
| 		facts = append(facts, *fact) | 		facts = append(facts, *fact) | ||||||
|   | |||||||
| @@ -329,6 +329,33 @@ func TestMSTeamsPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, "http://localhost:3000/test/repo", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) | 		assert.Equal(t, "http://localhost:3000/test/repo", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(MSTeamsPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &MSTeamsPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest", pl.(*MSTeamsPayload).Title) | ||||||
|  | 		assert.Equal(t, "Package created: GiteaContainer:latest", pl.(*MSTeamsPayload).Summary) | ||||||
|  | 		assert.Len(t, pl.(*MSTeamsPayload).Sections, 1) | ||||||
|  | 		assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle) | ||||||
|  | 		assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text) | ||||||
|  | 		assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 1) | ||||||
|  | 		for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts { | ||||||
|  | 			if fact.Name == "Package:" { | ||||||
|  | 				assert.Equal(t, p.Package.Name, fact.Value) | ||||||
|  | 			} else { | ||||||
|  | 				t.Fail() | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1) | ||||||
|  | 		assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1) | ||||||
|  | 		assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -115,6 +115,15 @@ func TestPackagistPayload(t *testing.T) { | |||||||
| 		require.Nil(t, pl) | 		require.Nil(t, pl) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(PackagistPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.Nil(t, pl) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -144,6 +144,18 @@ func TestSlackPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, "[<http://localhost:3000/test/repo|test/repo>] Repository created by <https://try.gitea.io/user1|user1>", pl.(*SlackPayload).Text) | 		assert.Equal(t, "[<http://localhost:3000/test/repo|test/repo>] Repository created by <https://try.gitea.io/user1|user1>", pl.(*SlackPayload).Text) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(SlackPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &SlackPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		assert.Equal(t, "Package created: <http://localhost:3000/user1/-/packages/container/GiteaContainer/latest|GiteaContainer:latest> by <https://try.gitea.io/user1|user1>", pl.(*SlackPayload).Text) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -144,6 +144,18 @@ func TestTelegramPayload(t *testing.T) { | |||||||
| 		assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Repository created`, pl.(*TelegramPayload).Message) | 		assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Repository created`, pl.(*TelegramPayload).Message) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	t.Run("Package", func(t *testing.T) { | ||||||
|  | 		p := packageTestPayload() | ||||||
|  |  | ||||||
|  | 		d := new(TelegramPayload) | ||||||
|  | 		pl, err := d.Package(p) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		require.NotNil(t, pl) | ||||||
|  | 		require.IsType(t, &TelegramPayload{}, pl) | ||||||
|  |  | ||||||
|  | 		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) | ||||||
|  | 	}) | ||||||
|  |  | ||||||
| 	t.Run("Wiki", func(t *testing.T) { | 	t.Run("Wiki", func(t *testing.T) { | ||||||
| 		p := wikiTestPayload() | 		p := wikiTestPayload() | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user