blob: 39c7d3be4fcad233eea6b3337b38218733d659eb [file] [log] [blame]
package gerrit_test
import (
"net/http"
"testing"
"time"
"github.com/andygrunwald/go-gerrit"
)
var (
fakeEvents = []byte(`
{"submitter":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"newRev":"0000000000000000000000000000000000000000","patchSet":{"number":"1","revision":"0000000000000000000000000000000000000000","parents":["0000000000000000000000000000000000000000"],"ref":"refs/changes/1/1/1","uploader":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"createdOn":1470000000,"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"isDraft":false,"kind":"TRIVIAL_REBASE","sizeInsertions":10,"sizeDeletions":0},"change":{"project":"test","branch":"master","id":"Iffffffffffffffffffffffffffffffffffffffff","number":"1","subject":"subject","owner":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"url":"https://localhost/1","commitMessage":"commitMessage\n\nline2\n\nChange-Id: Iffffffffffffffffffffffffffffffffffffffff\n","status":"MERGED"},"type":"change-merged","eventCreatedOn":1470000000}
{"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"comment":"Patch Set 1:\n\n(2 comments)\n\nSome comment","patchSet":{"number":"1","revision":"0000000000000000000000000000000000000000","parents":["0000000000000000000000000000000000000000"],"ref":"refs/changes/1/1/1","uploader":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"createdOn":1470000000,"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"isDraft":false,"kind":"REWORK","sizeInsertions":4,"sizeDeletions":-2},"change":{"project":"test","branch":"master","id":"Iffffffffffffffffffffffffffffffffffffffff","number":"1","subject":"subject","owner":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"url":"https://localhost/1","commitMessage":"commitMessage\n\nChange-Id: Iffffffffffffffffffffffffffffffffffffffff\n","status":"NEW"},"type":"comment-added","eventCreatedOn":1470000000}`)
fakeEventsWithError = []byte(`
{"submitter":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"newRev":"0000000000000000000000000000000000000000","patchSet":{"number":"1","revision":"0000000000000000000000000000000000000000","parents":["0000000000000000000000000000000000000000"],"ref":"refs/changes/1/1/1","uploader":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"createdOn":1470000000,"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"isDraft":false,"kind":"TRIVIAL_REBASE","sizeInsertions":10,"sizeDeletions":0},"change":{"project":"test","branch":"master","id":"Iffffffffffffffffffffffffffffffffffffffff","number":"1","subject":"subject","owner":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"url":"https://localhost/1","commitMessage":"commitMessage\n\nline2\n\nChange-Id: Iffffffffffffffffffffffffffffffffffffffff\n","status":"MERGED"},"type":"change-merged","eventCreatedOn":1470000000}
{"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"comment":"Patch Set 1:\n\n(2 comments)\n\nSome comment","patchSet":{"number":"1","revision":"0000000000000000000000000000000000000000","parents":["0000000000000000000000000000000000000000"],"ref":"refs/changes/1/1/1","uploader":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"createdOn":1470000000,"author":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"isDraft":false,"kind":"REWORK","sizeInsertions":4,"sizeDeletions":-2},"change":{"project":"test","branch":"master","id":"Iffffffffffffffffffffffffffffffffffffffff","number":"1","subject":"subject","owner":{"name":"Foo Bar","email":"fbar@example.com","username":"fbar"},"url":"https://localhost/1","commitMessage":"commitMessage\n\nChange-Id: Iffffffffffffffffffffffffffffffffffffffff\n","status":"NEW"},"type":"comment-added","eventCreatedOn":1470000000}
{"author":1}`)
)
func TestEventsLogService_GetEvents_NoDateRange(t *testing.T) {
setup()
defer teardown()
testMux.HandleFunc("/plugins/events-log/events/", func(writer http.ResponseWriter, request *http.Request) {
if _, err := writer.Write(fakeEvents); err != nil {
t.Error(err)
}
})
options := &gerrit.EventsLogOptions{}
events, _, _, err := testClient.EventsLog.GetEvents(options)
if err != nil {
t.Error(err)
}
if len(events) != 2 {
t.Error("Expected 2 events")
}
// Basic test
for i, event := range events {
switch i {
case 0:
if event.Type != "change-merged" {
t.Error("Expected event type to be `change-merged`")
}
case 1:
if event.Type != "comment-added" {
t.Error("Expected event type to be `comment-added`")
}
}
}
}
func TestEventsLogService_GetEvents_DateRangeFromAndTo(t *testing.T) {
setup()
defer teardown()
to := time.Now()
from := to.AddDate(0, 0, -7)
testMux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
query := request.URL.Query()
fromFormat := from.Format("2006-01-02 15:04:05")
if query.Get("t1") != fromFormat {
t.Errorf("%s != %s", query.Get("t1"), fromFormat)
}
toFormat := to.Format("2006-01-02 15:04:05")
if query.Get("t2") != toFormat {
t.Errorf("%s != %s", query.Get("t2"), toFormat)
}
if _, err := writer.Write(fakeEvents); err != nil {
t.Error(err)
}
})
options := &gerrit.EventsLogOptions{From: from, To: to}
_, _, _, err := testClient.EventsLog.GetEvents(options)
if err != nil {
t.Error(err)
}
}
func TestEventsLogService_GetEvents_DateRangeFromOnly(t *testing.T) {
setup()
defer teardown()
to := time.Now()
from := to.AddDate(0, 0, -7)
testMux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
query := request.URL.Query()
fromFormat := from.Format("2006-01-02 15:04:05")
if query.Get("t1") != fromFormat {
t.Errorf("%s != %s", query.Get("t1"), fromFormat)
}
if query.Get("t2") != "" {
t.Error("Did not expect t2 to be set")
}
if _, err := writer.Write(fakeEvents); err != nil {
t.Error(err)
}
})
options := &gerrit.EventsLogOptions{From: from}
_, _, _, err := testClient.EventsLog.GetEvents(options)
if err != nil {
t.Error(err)
}
}
func TestEventsLogService_GetEvents_DateRangeToOnly(t *testing.T) {
setup()
defer teardown()
to := time.Now()
testMux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
query := request.URL.Query()
toFormat := to.Format("2006-01-02 15:04:05")
if query.Get("t2") != toFormat {
t.Errorf("%s != %s", query.Get("t2"), toFormat)
}
if query.Get("t1") != "" {
t.Error("Did not expect t1 to be set")
}
if _, err := writer.Write(fakeEvents); err != nil {
t.Error(err)
}
})
options := &gerrit.EventsLogOptions{To: to}
_, _, _, err := testClient.EventsLog.GetEvents(options)
if err != nil {
t.Error(err)
}
}
func TestEventsLogService_GetEvents_UnmarshalError(t *testing.T) {
setup()
defer teardown()
testMux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
if _, err := writer.Write(fakeEventsWithError); err != nil {
t.Error(err)
}
})
options := &gerrit.EventsLogOptions{IgnoreUnmarshalErrors: true}
events, _, failures, err := testClient.EventsLog.GetEvents(options)
if err != nil {
t.Error(err)
}
if len(failures) != 1 {
t.Error("Expected 1 failures")
}
if len(events) != 2 {
t.Error(len(events))
}
}