mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-04-03 07:18:49 +02:00
84 lines
2.9 KiB
Go
84 lines
2.9 KiB
Go
package webhook
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/sirupsen/logrus/hooks/test"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
appclientset "github.com/argoproj/argo-cd/pkg/client/clientset/versioned/fake"
|
|
"github.com/argoproj/argo-cd/util/settings"
|
|
)
|
|
|
|
func NewMockHandler() *ArgoCDWebhookHandler {
|
|
appClientset := appclientset.NewSimpleClientset()
|
|
return NewHandler("", appClientset, &settings.ArgoCDSettings{})
|
|
}
|
|
func TestGitHubCommitEvent(t *testing.T) {
|
|
hook := test.NewGlobal()
|
|
h := NewMockHandler()
|
|
req := httptest.NewRequest("POST", "/api/webhook", nil)
|
|
req.Header.Set("X-GitHub-Event", "push")
|
|
eventJSON, err := ioutil.ReadFile("github-commit-event.json")
|
|
assert.NoError(t, err)
|
|
req.Body = ioutil.NopCloser(bytes.NewReader(eventJSON))
|
|
w := httptest.NewRecorder()
|
|
h.Handler(w, req)
|
|
assert.Equal(t, w.Code, http.StatusOK)
|
|
expectedLogResult := "Received push event repo: https://github.com/jessesuen/test-repo, revision: master, touchedHead: true"
|
|
assert.Equal(t, expectedLogResult, hook.LastEntry().Message)
|
|
hook.Reset()
|
|
}
|
|
|
|
func TestGitHubTagEvent(t *testing.T) {
|
|
hook := test.NewGlobal()
|
|
h := NewMockHandler()
|
|
req := httptest.NewRequest("POST", "/api/webhook", nil)
|
|
req.Header.Set("X-GitHub-Event", "push")
|
|
eventJSON, err := ioutil.ReadFile("github-tag-event.json")
|
|
assert.NoError(t, err)
|
|
req.Body = ioutil.NopCloser(bytes.NewReader(eventJSON))
|
|
w := httptest.NewRecorder()
|
|
h.Handler(w, req)
|
|
assert.Equal(t, w.Code, http.StatusOK)
|
|
expectedLogResult := "Received push event repo: https://github.com/jessesuen/test-repo, revision: v1.0, touchedHead: false"
|
|
assert.Equal(t, expectedLogResult, hook.LastEntry().Message)
|
|
hook.Reset()
|
|
}
|
|
|
|
func TestBitbucketServerRepositoryReferenceChangedEvent(t *testing.T) {
|
|
hook := test.NewGlobal()
|
|
h := NewMockHandler()
|
|
req := httptest.NewRequest("POST", "/api/webhook", nil)
|
|
req.Header.Set("X-Event-Key", "repo:refs_changed")
|
|
eventJSON, err := ioutil.ReadFile("bitbucket-server-event.json")
|
|
assert.NoError(t, err)
|
|
req.Body = ioutil.NopCloser(bytes.NewReader(eventJSON))
|
|
w := httptest.NewRecorder()
|
|
h.Handler(w, req)
|
|
assert.Equal(t, w.Code, http.StatusOK)
|
|
expectedLogResult := "Received push event repo: https://bitbucketserver/scm/myproject/test-repo.git, revision: master, touchedHead: true"
|
|
assert.Equal(t, expectedLogResult, hook.LastEntry().Message)
|
|
hook.Reset()
|
|
}
|
|
|
|
func TestGogsPushEvent(t *testing.T) {
|
|
hook := test.NewGlobal()
|
|
h := NewMockHandler()
|
|
req := httptest.NewRequest("POST", "/api/webhook", nil)
|
|
req.Header.Set("X-Gogs-Event", "push")
|
|
eventJSON, err := ioutil.ReadFile("gogs-event.json")
|
|
assert.NoError(t, err)
|
|
req.Body = ioutil.NopCloser(bytes.NewReader(eventJSON))
|
|
w := httptest.NewRecorder()
|
|
h.Handler(w, req)
|
|
assert.Equal(t, w.Code, http.StatusOK)
|
|
expectedLogResult := "Received push event repo: http://gogs-server/john/repo-test, revision: master, touchedHead: true"
|
|
assert.Equal(t, expectedLogResult, hook.LastEntry().Message)
|
|
hook.Reset()
|
|
}
|