mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-20 16:58:31 +02:00
Merge branch 'release/v1.24' into lunny/changelog_1.24.0
This commit is contained in:
commit
d71d756f43
@ -34,7 +34,7 @@ type Commit struct {
|
|||||||
// CommitSignature represents a git commit signature part.
|
// CommitSignature represents a git commit signature part.
|
||||||
type CommitSignature struct {
|
type CommitSignature struct {
|
||||||
Signature string
|
Signature string
|
||||||
Payload string // TODO check if can be reconstruct from the rest of commit information to not have duplicate data
|
Payload string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Message returns the commit message. Same as retrieving CommitMessage directly.
|
// Message returns the commit message. Same as retrieving CommitMessage directly.
|
||||||
|
@ -6,10 +6,44 @@ package git
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
commitHeaderGpgsig = "gpgsig"
|
||||||
|
commitHeaderGpgsigSha256 = "gpgsig-sha256"
|
||||||
|
)
|
||||||
|
|
||||||
|
func assignCommitFields(gitRepo *Repository, commit *Commit, headerKey string, headerValue []byte) error {
|
||||||
|
if len(headerValue) > 0 && headerValue[len(headerValue)-1] == '\n' {
|
||||||
|
headerValue = headerValue[:len(headerValue)-1] // remove trailing newline
|
||||||
|
}
|
||||||
|
switch headerKey {
|
||||||
|
case "tree":
|
||||||
|
objID, err := NewIDFromString(string(headerValue))
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid tree ID %q: %w", string(headerValue), err)
|
||||||
|
}
|
||||||
|
commit.Tree = *NewTree(gitRepo, objID)
|
||||||
|
case "parent":
|
||||||
|
objID, err := NewIDFromString(string(headerValue))
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid parent ID %q: %w", string(headerValue), err)
|
||||||
|
}
|
||||||
|
commit.Parents = append(commit.Parents, objID)
|
||||||
|
case "author":
|
||||||
|
commit.Author.Decode(headerValue)
|
||||||
|
case "committer":
|
||||||
|
commit.Committer.Decode(headerValue)
|
||||||
|
case commitHeaderGpgsig, commitHeaderGpgsigSha256:
|
||||||
|
// if there are duplicate "gpgsig" and "gpgsig-sha256" headers, then the signature must have already been invalid
|
||||||
|
// so we don't need to handle duplicate headers here
|
||||||
|
commit.Signature = &CommitSignature{Signature: string(headerValue)}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// CommitFromReader will generate a Commit from a provided reader
|
// CommitFromReader will generate a Commit from a provided reader
|
||||||
// We need this to interpret commits from cat-file or cat-file --batch
|
// We need this to interpret commits from cat-file or cat-file --batch
|
||||||
//
|
//
|
||||||
@ -21,90 +55,46 @@ func CommitFromReader(gitRepo *Repository, objectID ObjectID, reader io.Reader)
|
|||||||
Committer: &Signature{},
|
Committer: &Signature{},
|
||||||
}
|
}
|
||||||
|
|
||||||
payloadSB := new(strings.Builder)
|
bufReader := bufio.NewReader(reader)
|
||||||
signatureSB := new(strings.Builder)
|
inHeader := true
|
||||||
messageSB := new(strings.Builder)
|
var payloadSB, messageSB bytes.Buffer
|
||||||
message := false
|
var headerKey string
|
||||||
pgpsig := false
|
var headerValue []byte
|
||||||
|
|
||||||
bufReader, ok := reader.(*bufio.Reader)
|
|
||||||
if !ok {
|
|
||||||
bufReader = bufio.NewReader(reader)
|
|
||||||
}
|
|
||||||
|
|
||||||
readLoop:
|
|
||||||
for {
|
for {
|
||||||
line, err := bufReader.ReadBytes('\n')
|
line, err := bufReader.ReadBytes('\n')
|
||||||
if err != nil {
|
if err != nil && err != io.EOF {
|
||||||
if err == io.EOF {
|
return nil, fmt.Errorf("unable to read commit %q: %w", objectID.String(), err)
|
||||||
if message {
|
}
|
||||||
_, _ = messageSB.Write(line)
|
if len(line) == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if inHeader {
|
||||||
|
inHeader = !(len(line) == 1 && line[0] == '\n') // still in header if line is not just a newline
|
||||||
|
k, v, _ := bytes.Cut(line, []byte{' '})
|
||||||
|
if len(k) != 0 || !inHeader {
|
||||||
|
if headerKey != "" {
|
||||||
|
if err = assignCommitFields(gitRepo, commit, headerKey, headerValue); err != nil {
|
||||||
|
return nil, fmt.Errorf("unable to parse commit %q: %w", objectID.String(), err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_, _ = payloadSB.Write(line)
|
headerKey = string(k) // it also resets the headerValue to empty string if not inHeader
|
||||||
break readLoop
|
headerValue = v
|
||||||
|
} else {
|
||||||
|
headerValue = append(headerValue, v...)
|
||||||
}
|
}
|
||||||
return nil, err
|
if headerKey != commitHeaderGpgsig && headerKey != commitHeaderGpgsigSha256 {
|
||||||
}
|
|
||||||
if pgpsig {
|
|
||||||
if len(line) > 0 && line[0] == ' ' {
|
|
||||||
_, _ = signatureSB.Write(line[1:])
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
pgpsig = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if !message {
|
|
||||||
// This is probably not correct but is copied from go-gits interpretation...
|
|
||||||
trimmed := bytes.TrimSpace(line)
|
|
||||||
if len(trimmed) == 0 {
|
|
||||||
message = true
|
|
||||||
_, _ = payloadSB.Write(line)
|
_, _ = payloadSB.Write(line)
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
split := bytes.SplitN(trimmed, []byte{' '}, 2)
|
|
||||||
var data []byte
|
|
||||||
if len(split) > 1 {
|
|
||||||
data = split[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
switch string(split[0]) {
|
|
||||||
case "tree":
|
|
||||||
commit.Tree = *NewTree(gitRepo, MustIDFromString(string(data)))
|
|
||||||
_, _ = payloadSB.Write(line)
|
|
||||||
case "parent":
|
|
||||||
commit.Parents = append(commit.Parents, MustIDFromString(string(data)))
|
|
||||||
_, _ = payloadSB.Write(line)
|
|
||||||
case "author":
|
|
||||||
commit.Author = &Signature{}
|
|
||||||
commit.Author.Decode(data)
|
|
||||||
_, _ = payloadSB.Write(line)
|
|
||||||
case "committer":
|
|
||||||
commit.Committer = &Signature{}
|
|
||||||
commit.Committer.Decode(data)
|
|
||||||
_, _ = payloadSB.Write(line)
|
|
||||||
case "encoding":
|
|
||||||
_, _ = payloadSB.Write(line)
|
|
||||||
case "gpgsig":
|
|
||||||
fallthrough
|
|
||||||
case "gpgsig-sha256": // FIXME: no intertop, so only 1 exists at present.
|
|
||||||
_, _ = signatureSB.Write(data)
|
|
||||||
_ = signatureSB.WriteByte('\n')
|
|
||||||
pgpsig = true
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, _ = messageSB.Write(line)
|
_, _ = messageSB.Write(line)
|
||||||
_, _ = payloadSB.Write(line)
|
_, _ = payloadSB.Write(line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
commit.CommitMessage = messageSB.String()
|
|
||||||
commit.Signature = &CommitSignature{
|
|
||||||
Signature: signatureSB.String(),
|
|
||||||
Payload: payloadSB.String(),
|
|
||||||
}
|
|
||||||
if len(commit.Signature.Signature) == 0 {
|
|
||||||
commit.Signature = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
|
commit.CommitMessage = messageSB.String()
|
||||||
|
if commit.Signature != nil {
|
||||||
|
commit.Signature.Payload = payloadSB.String()
|
||||||
|
}
|
||||||
return commit, nil
|
return commit, nil
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,7 @@ func TestGetFullCommitIDErrorSha256(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCommitFromReaderSha256(t *testing.T) {
|
func TestCommitFromReaderSha256(t *testing.T) {
|
||||||
commitString := `9433b2a62b964c17a4485ae180f45f595d3e69d31b786087775e28c6b6399df0 commit 1114
|
commitString := `tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
|
||||||
tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
|
|
||||||
parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
|
parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
|
||||||
author Adam Majer <amajer@suse.de> 1698676906 +0100
|
author Adam Majer <amajer@suse.de> 1698676906 +0100
|
||||||
committer Adam Majer <amajer@suse.de> 1698676906 +0100
|
committer Adam Majer <amajer@suse.de> 1698676906 +0100
|
||||||
@ -112,8 +111,7 @@ VAEUo6ecdDxSpyt2naeg9pKus/BRi7P6g4B1hkk/zZstUX/QP4IQuAJbXjkvsC+X
|
|||||||
HKRr3NlRM/DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN/W0ayrlZjGF1cbR
|
HKRr3NlRM/DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN/W0ayrlZjGF1cbR
|
||||||
8NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6
|
8NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6
|
||||||
=xybZ
|
=xybZ
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----`, commitFromReader.Signature.Signature)
|
||||||
`, commitFromReader.Signature.Signature)
|
|
||||||
assert.Equal(t, `tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
|
assert.Equal(t, `tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
|
||||||
parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
|
parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
|
||||||
author Adam Majer <amajer@suse.de> 1698676906 +0100
|
author Adam Majer <amajer@suse.de> 1698676906 +0100
|
||||||
|
@ -59,8 +59,7 @@ func TestGetFullCommitIDError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCommitFromReader(t *testing.T) {
|
func TestCommitFromReader(t *testing.T) {
|
||||||
commitString := `feaf4ba6bc635fec442f46ddd4512416ec43c2c2 commit 1074
|
commitString := `tree f1a6cb52b2d16773290cefe49ad0684b50a4f930
|
||||||
tree f1a6cb52b2d16773290cefe49ad0684b50a4f930
|
|
||||||
parent 37991dec2c8e592043f47155ce4808d4580f9123
|
parent 37991dec2c8e592043f47155ce4808d4580f9123
|
||||||
author silverwind <me@silverwind.io> 1563741793 +0200
|
author silverwind <me@silverwind.io> 1563741793 +0200
|
||||||
committer silverwind <me@silverwind.io> 1563741793 +0200
|
committer silverwind <me@silverwind.io> 1563741793 +0200
|
||||||
@ -108,8 +107,7 @@ sD53z/f0J+We4VZjY+pidvA9BGZPFVdR3wd3xGs8/oH6UWaLJAMGkLG6dDb3qDLm
|
|||||||
mfeFhT57UbE4qukTDIQ0Y0WM40UYRTakRaDY7ubhXgLgx09Cnp9XTVMsHgT6j9/i
|
mfeFhT57UbE4qukTDIQ0Y0WM40UYRTakRaDY7ubhXgLgx09Cnp9XTVMsHgT6j9/i
|
||||||
1pxsB104XLWjQHTjr1JtiaBQEwFh9r2OKTcpvaLcbNtYpo7CzOs=
|
1pxsB104XLWjQHTjr1JtiaBQEwFh9r2OKTcpvaLcbNtYpo7CzOs=
|
||||||
=FRsO
|
=FRsO
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----`, commitFromReader.Signature.Signature)
|
||||||
`, commitFromReader.Signature.Signature)
|
|
||||||
assert.Equal(t, `tree f1a6cb52b2d16773290cefe49ad0684b50a4f930
|
assert.Equal(t, `tree f1a6cb52b2d16773290cefe49ad0684b50a4f930
|
||||||
parent 37991dec2c8e592043f47155ce4808d4580f9123
|
parent 37991dec2c8e592043f47155ce4808d4580f9123
|
||||||
author silverwind <me@silverwind.io> 1563741793 +0200
|
author silverwind <me@silverwind.io> 1563741793 +0200
|
||||||
@ -126,8 +124,7 @@ empty commit`, commitFromReader.Signature.Payload)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCommitWithEncodingFromReader(t *testing.T) {
|
func TestCommitWithEncodingFromReader(t *testing.T) {
|
||||||
commitString := `feaf4ba6bc635fec442f46ddd4512416ec43c2c2 commit 1074
|
commitString := `tree ca3fad42080dd1a6d291b75acdfc46e5b9b307e5
|
||||||
tree ca3fad42080dd1a6d291b75acdfc46e5b9b307e5
|
|
||||||
parent 47b24e7ab977ed31c5a39989d570847d6d0052af
|
parent 47b24e7ab977ed31c5a39989d570847d6d0052af
|
||||||
author KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
author KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
||||||
committer KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
committer KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
||||||
@ -172,8 +169,7 @@ SONRzusmu5n3DgV956REL7x62h7JuqmBz/12HZkr0z0zgXkcZ04q08pSJATX5N1F
|
|||||||
yN+tWxTsWg+zhDk96d5Esdo9JMjcFvPv0eioo30GAERaz1hoD7zCMT4jgUFTQwgz
|
yN+tWxTsWg+zhDk96d5Esdo9JMjcFvPv0eioo30GAERaz1hoD7zCMT4jgUFTQwgz
|
||||||
jw4YcO5u
|
jw4YcO5u
|
||||||
=r3UU
|
=r3UU
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----`, commitFromReader.Signature.Signature)
|
||||||
`, commitFromReader.Signature.Signature)
|
|
||||||
assert.Equal(t, `tree ca3fad42080dd1a6d291b75acdfc46e5b9b307e5
|
assert.Equal(t, `tree ca3fad42080dd1a6d291b75acdfc46e5b9b307e5
|
||||||
parent 47b24e7ab977ed31c5a39989d570847d6d0052af
|
parent 47b24e7ab977ed31c5a39989d570847d6d0052af
|
||||||
author KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
author KN4CK3R <admin@oldschoolhack.me> 1711702962 +0100
|
||||||
|
@ -54,6 +54,8 @@ func ToggleAssigneeWithNotify(ctx context.Context, issue *issues_model.Issue, do
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil, err
|
return false, nil, err
|
||||||
}
|
}
|
||||||
|
issue.AssigneeID = assigneeID
|
||||||
|
issue.Assignee = assignee
|
||||||
|
|
||||||
notify_service.IssueChangeAssignee(ctx, doer, issue, assignee, removed, comment)
|
notify_service.IssueChangeAssignee(ctx, doer, issue, assignee, removed, comment)
|
||||||
|
|
||||||
|
@ -180,11 +180,15 @@ func (c *CodeCommitDownloader) GetPullRequests(ctx context.Context, page, perPag
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
target := orig.PullRequestTargets[0]
|
target := orig.PullRequestTargets[0]
|
||||||
|
description := ""
|
||||||
|
if orig.Description != nil {
|
||||||
|
description = *orig.Description
|
||||||
|
}
|
||||||
pr := &base.PullRequest{
|
pr := &base.PullRequest{
|
||||||
Number: number,
|
Number: number,
|
||||||
Title: *orig.Title,
|
Title: *orig.Title,
|
||||||
PosterName: c.getUsernameFromARN(*orig.AuthorArn),
|
PosterName: c.getUsernameFromARN(*orig.AuthorArn),
|
||||||
Content: *orig.Description,
|
Content: description,
|
||||||
State: "open",
|
State: "open",
|
||||||
Created: *orig.CreationDate,
|
Created: *orig.CreationDate,
|
||||||
Updated: *orig.LastActivityDate,
|
Updated: *orig.LastActivityDate,
|
||||||
|
@ -151,6 +151,15 @@ func testNewIssue(t *testing.T, session *TestSession, user, repo, title, content
|
|||||||
return issueURL
|
return issueURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testIssueAssign(t *testing.T, session *TestSession, repoLink string, issueID, assigneeID int64) {
|
||||||
|
req := NewRequestWithValues(t, "POST", fmt.Sprintf(repoLink+"/issues/assignee?issue_ids=%d", issueID), map[string]string{
|
||||||
|
"_csrf": GetUserCSRFToken(t, session),
|
||||||
|
"id": strconv.FormatInt(assigneeID, 10),
|
||||||
|
"action": "", // empty action means assign
|
||||||
|
})
|
||||||
|
session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
func testIssueAddComment(t *testing.T, session *TestSession, issueURL, content, status string) int64 {
|
func testIssueAddComment(t *testing.T, session *TestSession, issueURL, content, status string) int64 {
|
||||||
req := NewRequest(t, "GET", issueURL)
|
req := NewRequest(t, "GET", issueURL)
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
@ -126,19 +126,19 @@ func (m *mockWebhookProvider) Close() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookCreate(t *testing.T) {
|
func Test_WebhookCreate(t *testing.T) {
|
||||||
var payloads []api.CreatePayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.CreatePayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = string(webhook_module.HookEventCreate)
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.CreatePayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.CreatePayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = string(webhook_module.HookEventCreate)
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -158,19 +158,19 @@ func Test_WebhookCreate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookDelete(t *testing.T) {
|
func Test_WebhookDelete(t *testing.T) {
|
||||||
var payloads []api.DeletePayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.DeletePayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "delete"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.DeletePayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.DeletePayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "delete"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -191,19 +191,19 @@ func Test_WebhookDelete(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookFork(t *testing.T) {
|
func Test_WebhookFork(t *testing.T) {
|
||||||
var payloads []api.ForkPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.ForkPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "fork"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.ForkPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.ForkPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "fork"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user1")
|
session := loginUser(t, "user1")
|
||||||
|
|
||||||
@ -223,19 +223,19 @@ func Test_WebhookFork(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookIssueComment(t *testing.T) {
|
func Test_WebhookIssueComment(t *testing.T) {
|
||||||
var payloads []api.IssueCommentPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.IssueCommentPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "issue_comment"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.IssueCommentPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.IssueCommentPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "issue_comment"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -307,19 +307,19 @@ func Test_WebhookIssueComment(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookRelease(t *testing.T) {
|
func Test_WebhookRelease(t *testing.T) {
|
||||||
var payloads []api.ReleasePayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.ReleasePayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "release"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.ReleasePayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.ReleasePayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "release"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -340,19 +340,19 @@ func Test_WebhookRelease(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookPush(t *testing.T) {
|
func Test_WebhookPush(t *testing.T) {
|
||||||
var payloads []api.PushPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.PushPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "push"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.PushPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.PushPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "push"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -372,19 +372,19 @@ func Test_WebhookPush(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookIssue(t *testing.T) {
|
func Test_WebhookIssue(t *testing.T) {
|
||||||
var payloads []api.IssuePayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.IssuePayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "issues"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.IssuePayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.IssuePayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "issues"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -401,6 +401,45 @@ func Test_WebhookIssue(t *testing.T) {
|
|||||||
assert.Equal(t, "user2/repo1", payloads[0].Issue.Repo.FullName)
|
assert.Equal(t, "user2/repo1", payloads[0].Issue.Repo.FullName)
|
||||||
assert.Equal(t, "Title1", payloads[0].Issue.Title)
|
assert.Equal(t, "Title1", payloads[0].Issue.Title)
|
||||||
assert.Equal(t, "Description1", payloads[0].Issue.Body)
|
assert.Equal(t, "Description1", payloads[0].Issue.Body)
|
||||||
|
assert.Positive(t, payloads[0].Issue.Created.Unix())
|
||||||
|
assert.Positive(t, payloads[0].Issue.Updated.Unix())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_WebhookIssueAssign(t *testing.T) {
|
||||||
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.PullRequestPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.PullRequestPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "pull_request_assign"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||||
|
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
|
||||||
|
|
||||||
|
// 1. create a new webhook with special webhook for repo1
|
||||||
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
|
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "pull_request_assign")
|
||||||
|
|
||||||
|
// 2. trigger the webhook, issue 2 is a pull request
|
||||||
|
testIssueAssign(t, session, repo1.Link(), 2, user2.ID)
|
||||||
|
|
||||||
|
// 3. validate the webhook is triggered
|
||||||
|
assert.Equal(t, "pull_request_assign", triggeredEvent)
|
||||||
|
assert.Len(t, payloads, 1)
|
||||||
|
assert.EqualValues(t, "assigned", payloads[0].Action)
|
||||||
|
assert.Equal(t, "repo1", payloads[0].PullRequest.Base.Repository.Name)
|
||||||
|
assert.Equal(t, "user2/repo1", payloads[0].PullRequest.Base.Repository.FullName)
|
||||||
|
assert.Equal(t, "issue2", payloads[0].PullRequest.Title)
|
||||||
|
assert.Equal(t, "content for the second issue", payloads[0].PullRequest.Body)
|
||||||
|
assert.Equal(t, user2.ID, payloads[0].PullRequest.Assignee.ID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,19 +516,19 @@ func Test_WebhookIssueMilestone(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookPullRequest(t *testing.T) {
|
func Test_WebhookPullRequest(t *testing.T) {
|
||||||
var payloads []api.PullRequestPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.PullRequestPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "pull_request"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.PullRequestPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.PullRequestPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "pull_request"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -514,19 +553,19 @@ func Test_WebhookPullRequest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookPullRequestComment(t *testing.T) {
|
func Test_WebhookPullRequestComment(t *testing.T) {
|
||||||
var payloads []api.IssueCommentPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.IssueCommentPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "pull_request_comment"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.IssueCommentPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.IssueCommentPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "pull_request_comment"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -552,19 +591,19 @@ func Test_WebhookPullRequestComment(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookWiki(t *testing.T) {
|
func Test_WebhookWiki(t *testing.T) {
|
||||||
var payloads []api.WikiPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.WikiPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "wiki"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.WikiPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.WikiPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "wiki"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -584,19 +623,19 @@ func Test_WebhookWiki(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookRepository(t *testing.T) {
|
func Test_WebhookRepository(t *testing.T) {
|
||||||
var payloads []api.RepositoryPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.RepositoryPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "repository"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.RepositoryPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.RepositoryPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "repository"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user1")
|
session := loginUser(t, "user1")
|
||||||
|
|
||||||
@ -616,19 +655,19 @@ func Test_WebhookRepository(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookPackage(t *testing.T) {
|
func Test_WebhookPackage(t *testing.T) {
|
||||||
var payloads []api.PackagePayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.PackagePayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "package"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.PackagePayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.PackagePayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "package"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user1")
|
session := loginUser(t, "user1")
|
||||||
|
|
||||||
@ -653,24 +692,24 @@ func Test_WebhookPackage(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookStatus(t *testing.T) {
|
func Test_WebhookStatus(t *testing.T) {
|
||||||
var payloads []api.CommitStatusPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
assert.Contains(t, r.Header["X-Github-Event-Type"], "status", "X-GitHub-Event-Type should contain status")
|
|
||||||
assert.Contains(t, r.Header["X-Github-Hook-Installation-Target-Type"], "repository", "X-GitHub-Hook-Installation-Target-Type should contain repository")
|
|
||||||
assert.Contains(t, r.Header["X-Gitea-Event-Type"], "status", "X-Gitea-Event-Type should contain status")
|
|
||||||
assert.Contains(t, r.Header["X-Gitea-Hook-Installation-Target-Type"], "repository", "X-Gitea-Hook-Installation-Target-Type should contain repository")
|
|
||||||
assert.Contains(t, r.Header["X-Gogs-Event-Type"], "status", "X-Gogs-Event-Type should contain status")
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.CommitStatusPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "status"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.CommitStatusPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
assert.Contains(t, r.Header["X-Github-Event-Type"], "status", "X-GitHub-Event-Type should contain status")
|
||||||
|
assert.Contains(t, r.Header["X-Github-Hook-Installation-Target-Type"], "repository", "X-GitHub-Hook-Installation-Target-Type should contain repository")
|
||||||
|
assert.Contains(t, r.Header["X-Gitea-Event-Type"], "status", "X-Gitea-Event-Type should contain status")
|
||||||
|
assert.Contains(t, r.Header["X-Gitea-Hook-Installation-Target-Type"], "repository", "X-Gitea-Hook-Installation-Target-Type should contain repository")
|
||||||
|
assert.Contains(t, r.Header["X-Gogs-Event-Type"], "status", "X-Gogs-Event-Type should contain status")
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.CommitStatusPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "status"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -706,16 +745,16 @@ func Test_WebhookStatus(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookStatus_NoWrongTrigger(t *testing.T) {
|
func Test_WebhookStatus_NoWrongTrigger(t *testing.T) {
|
||||||
var trigger string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
assert.NotContains(t, r.Header["X-Github-Event-Type"], "status", "X-GitHub-Event-Type should not contain status")
|
|
||||||
assert.NotContains(t, r.Header["X-Gitea-Event-Type"], "status", "X-Gitea-Event-Type should not contain status")
|
|
||||||
assert.NotContains(t, r.Header["X-Gogs-Event-Type"], "status", "X-Gogs-Event-Type should not contain status")
|
|
||||||
trigger = "push"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var trigger string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
assert.NotContains(t, r.Header["X-Github-Event-Type"], "status", "X-GitHub-Event-Type should not contain status")
|
||||||
|
assert.NotContains(t, r.Header["X-Gitea-Event-Type"], "status", "X-Gitea-Event-Type should not contain status")
|
||||||
|
assert.NotContains(t, r.Header["X-Gogs-Event-Type"], "status", "X-Gogs-Event-Type should not contain status")
|
||||||
|
trigger = "push"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
@ -731,22 +770,22 @@ func Test_WebhookStatus_NoWrongTrigger(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_WebhookWorkflowJob(t *testing.T) {
|
func Test_WebhookWorkflowJob(t *testing.T) {
|
||||||
var payloads []api.WorkflowJobPayload
|
|
||||||
var triggeredEvent string
|
|
||||||
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
||||||
assert.Contains(t, r.Header["X-Github-Event-Type"], "workflow_job", "X-GitHub-Event-Type should contain workflow_job")
|
|
||||||
assert.Contains(t, r.Header["X-Gitea-Event-Type"], "workflow_job", "X-Gitea-Event-Type should contain workflow_job")
|
|
||||||
assert.Contains(t, r.Header["X-Gogs-Event-Type"], "workflow_job", "X-Gogs-Event-Type should contain workflow_job")
|
|
||||||
content, _ := io.ReadAll(r.Body)
|
|
||||||
var payload api.WorkflowJobPayload
|
|
||||||
err := json.Unmarshal(content, &payload)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
payloads = append(payloads, payload)
|
|
||||||
triggeredEvent = "workflow_job"
|
|
||||||
}, http.StatusOK)
|
|
||||||
defer provider.Close()
|
|
||||||
|
|
||||||
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
||||||
|
var payloads []api.WorkflowJobPayload
|
||||||
|
var triggeredEvent string
|
||||||
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
||||||
|
assert.Contains(t, r.Header["X-Github-Event-Type"], "workflow_job", "X-GitHub-Event-Type should contain workflow_job")
|
||||||
|
assert.Contains(t, r.Header["X-Gitea-Event-Type"], "workflow_job", "X-Gitea-Event-Type should contain workflow_job")
|
||||||
|
assert.Contains(t, r.Header["X-Gogs-Event-Type"], "workflow_job", "X-Gogs-Event-Type should contain workflow_job")
|
||||||
|
content, _ := io.ReadAll(r.Body)
|
||||||
|
var payload api.WorkflowJobPayload
|
||||||
|
err := json.Unmarshal(content, &payload)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
payloads = append(payloads, payload)
|
||||||
|
triggeredEvent = "workflow_job"
|
||||||
|
}, http.StatusOK)
|
||||||
|
defer provider.Close()
|
||||||
|
|
||||||
// 1. create a new webhook with special webhook for repo1
|
// 1. create a new webhook with special webhook for repo1
|
||||||
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user