package bitbucket import ( "bytes" "log" "net/http" "net/http/httptest" "os" "testing" . "gopkg.in/go-playground/assert.v1" ) // NOTES: // - Run "go test" to run tests // - Run "gocov test | gocov report" to report on test converage by file // - Run "gocov test | gocov annotate -" to report on all code and functions, those ,marked with "MISS" were never called // // or // // -- may be a good idea to change to output path to somewherelike /tmp // go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html // // const ( path = "/webhooks" ) var hook *Webhook func TestMain(m *testing.M) { // setup var err error hook, err = New(Options.UUID("MY_UUID")) if err != nil { log.Fatal(err) } os.Exit(m.Run()) // teardown } func newServer(handler http.HandlerFunc) *httptest.Server { mux := http.NewServeMux() mux.HandleFunc(path, handler) return httptest.NewServer(mux) } func TestUUIDMissingEvent(t *testing.T) { payload := "{}" var parseError error server := newServer(func(w http.ResponseWriter, r *http.Request) { _, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Event-Key", "noneexistant_event") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, ErrMissingHookUUIDHeader) } func TestUUIDDoesNotMatchEvent(t *testing.T) { payload := "{}" var parseError error server := newServer(func(w http.ResponseWriter, r *http.Request) { _, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Hook-UUID", "THIS_DOES_NOT_MATCH") req.Header.Set("X-Event-Key", "repo:push") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, ErrUUIDVerificationFailed) } func TestBadNoEventHeader(t *testing.T) { payload := "{}" var parseError error server := newServer(func(w http.ResponseWriter, r *http.Request) { _, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Hook-UUID", "MY_UUID") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, ErrMissingEventKeyHeader) } func TestBadBody(t *testing.T) { payload := "" var parseError error server := newServer(func(w http.ResponseWriter, r *http.Request) { _, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Hook-UUID", "MY_UUID") req.Header.Set("X-Event-Key", "repo:push") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, ErrParsingPayload) } func TestUnsubscribedEvent(t *testing.T) { payload := "{}" var parseError error server := newServer(func(w http.ResponseWriter, r *http.Request) { _, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Hook-UUID", "MY_UUID") req.Header.Set("X-Event-Key", "noneexistant_event") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, ErrEventNotFound) } func TestRepoPush(t *testing.T) { payload := `{ "actor":{ "username":"emmap1", "display_name":"Emma", "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", "links":{ "self":{ "href":"https://api.bitbucket.org/api/2.0/users/emmap1" }, "html":{ "href":"https://api.bitbucket.org/emmap1" }, "avatar":{ "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" } } }, "repository":{ "links":{ "self":{ "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" }, "html":{ "href":"https://api.bitbucket.org/bitbucket/bitbucket" }, "avatar":{ "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" } }, "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", "full_name":"team_name/repo_name", "name":"repo_name", "scm":"git", "is_private":true }, "push":{ "changes":[ { "new":{ "type":"branch", "name":"name-of-branch", "target":{ "type":"commit", "hash":"709d658dc5b6d6afcd46049c2f332ee3f515a67d", "author":{ "username":"emmap1", "display_name":"Emma", "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", "links":{ "self":{ "href":"https://api.bitbucket.org/api/2.0/users/emmap1" }, "html":{ "href":"https://api.bitbucket.org/emmap1" }, "avatar":{ "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" } } }, "message":"new commit message\n", "date":"2015-06-09T03:34:49+00:00", "parents":[ { "type":"commit", "hash":"1e65c05c1d5171631d92438a13901ca7dae9618c", "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commit/8cbbd65829c7ad834a97841e0defc965718036a0" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/commits/8cbbd65829c7ad834a97841e0defc965718036a0" } } } ], "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commit/c4b2b7914156a878aa7c9da452a09fb50c2091f2" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/commits/c4b2b7914156a878aa7c9da452a09fb50c2091f2" } } }, "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/refs/branches/master" }, "commits":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commits/master" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/branch/master" } } }, "old":{ "type":"branch", "name":"name-of-branch", "target":{ "type":"commit", "hash":"1e65c05c1d5171631d92438a13901ca7dae9618c", "author":{ "username":"emmap1", "display_name":"Emma", "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", "links":{ "self":{ "href":"https://api.bitbucket.org/api/2.0/users/emmap1" }, "html":{ "href":"https://api.bitbucket.org/emmap1" }, "avatar":{ "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" } } }, "message":"old commit message\n", "date":"2015-06-08T21:34:56+00:00", "parents":[ { "type":"commit", "hash":"e0d0c2041e09746be5ce4b55067d5a8e3098c843", "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commit/9c4a3452da3bc4f37af5a6bb9c784246f44406f7" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/commits/9c4a3452da3bc4f37af5a6bb9c784246f44406f7" } } } ], "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commit/b99ea6dad8f416e57c5ca78c1ccef590600d841b" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/commits/b99ea6dad8f416e57c5ca78c1ccef590600d841b" } } }, "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/refs/branches/master" }, "commits":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commits/master" }, "html":{ "href":"https://bitbucket.org/user_name/repo_name/branch/master" } } }, "links":{ "html":{ "href":"https://bitbucket.org/user_name/repo_name/branches/compare/c4b2b7914156a878aa7c9da452a09fb50c2091f2..b99ea6dad8f416e57c5ca78c1ccef590600d841b" }, "diff":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/diff/c4b2b7914156a878aa7c9da452a09fb50c2091f2..b99ea6dad8f416e57c5ca78c1ccef590600d841b" }, "commits":{ "href":"https://api.bitbucket.org/2.0/repositories/user_name/repo_name/commits?include=c4b2b7914156a878aa7c9da452a09fb50c2091f2&exclude=b99ea6dad8f416e57c5ca78c1ccef590600d841b" } }, "created":false, "forced":false, "closed":false, "commits":[ { "hash":"03f4a7270240708834de475bcf21532d6134777e", "type":"commit", "message":"commit message\n", "author":{ "username":"emmap1", "display_name":"Emma", "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", "links":{ "self":{ "href":"https://api.bitbucket.org/api/2.0/users/emmap1" }, "html":{ "href":"https://api.bitbucket.org/emmap1" }, "avatar":{ "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" } } }, "links":{ "self":{ "href":"https://api.bitbucket.org/2.0/repositories/user/repo/commit/03f4a7270240708834de475bcf21532d6134777e" }, "html":{ "href":"https://bitbucket.org/user/repo/commits/03f4a7270240708834de475bcf21532d6134777e" } } } ], "truncated":false } ] } } ` var parseError error var results interface{} server := newServer(func(w http.ResponseWriter, r *http.Request) { results, parseError = hook.Parse(r, RepoPushEvent) }) defer server.Close() req, err := http.NewRequest(http.MethodPost, server.URL+path, bytes.NewBuffer([]byte(payload))) Equal(t, err, nil) req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Hook-UUID", "MY_UUID") req.Header.Set("X-Event-Key", "repo:push") Equal(t, err, nil) client := &http.Client{} resp, err := client.Do(req) Equal(t, err, nil) Equal(t, resp.StatusCode, http.StatusOK) Equal(t, parseError, nil) _, ok := results.(RepoPushPayload) Equal(t, ok, true) } // func TestRepoFork(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "fork":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "repo:fork") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestRepoUpdated(t *testing.T) { // payload := `{ // "actor": { // "type": "user", // "username": "emmap1", // "display_name": "Emma", // "uuid": "{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links": { // "self": { // "href": "https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html": { // "href": "https://api.bitbucket.org/emmap1" // }, // "avatar": { // "href": "https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository": { // "type": "repository", // "links": { // "self": { // "href": "https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html": { // "href": "https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar": { // "href": "https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid": "{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "project": { // "type": "project", // "project": "Untitled project", // "uuid": "{3b7898dc-6891-4225-ae60-24613bb83080}", // "links": { // "html": { // "href": "https://bitbucket.org/account/user/teamawesome/projects/proj" // }, // "avatar": { // "href": "https://bitbucket.org/account/user/teamawesome/projects/proj/avatar/32" // } // }, // "key": "proj" // }, // "full_name": "team_name/repo_name", // "name": "repo_name", // "website": "https://mywebsite.com/", // "owner": { // "type": "user", // "username": "emmap1", // "display_name": "Emma", // "uuid": "{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links": { // "self": { // "href": "https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html": { // "href": "https://api.bitbucket.org/emmap1" // }, // "avatar": { // "href": "https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "scm": "git", // "is_private": true // }, // "changes": { // "name": { // "new": "repository", // "old": "repository_name" // }, // "website": { // "new": "http://www.example.com/", // "old": "" // }, // "language": { // "new": "java", // "old": "" // }, // "links": { // "new": { // "avatar": { // "href": "https://bitbucket.org/teamawesome/repository/avatar/32/" // }, // "self": { // "href": "https://api.bitbucket.org/2.0/repositories/teamawesome/repository" // }, // "html": { // "href": "https://bitbucket.org/teamawesome/repository" // } // }, // "old": { // "avatar": { // "href": "https://bitbucket.org/teamawesome/repository_name/avatar/32/" // }, // "self": { // "href": "https://api.bitbucket.org/2.0/repositories/teamawesome/repository_name" // }, // "html": { // "href": "https://bitbucket.org/teamawesome/repository_name" // } // } // }, // "description": { // "new": "This is a better description.", // "old": "This is a description." // }, // "full_name": { // "new": "teamawesome/repository", // "old": "teamawesome/repository_name" // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "repo:updated") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestRepoCommitCommentCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"
Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "commit":{ // "hash":"d3022fc0ca3d65c7f6654eea129d6bf0cf0ee08e" // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "repo:commit_comment_created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestRepoCommitStatusCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "commit_status":{ // "name":"Unit Tests (Python)", // "description":"Build started", // "state":"INPROGRESS", // "key":"mybuildtool", // "url":"https://my-build-tool.com/builds/MY-PROJECT/BUILD-777", // "type":"build", // "created_on":"2015-11-19T20:37:35.547563+00:00", // "updated_on":"2015-11-19T20:37:35.547563+00:00", // "links":{ // "commit":{ // "href":"http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e" // }, // "self":{ // "href":"http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e/statuses/build/mybuildtool" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "repo:commit_status_created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestRepoCommitStatusUpdated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "commit_status":{ // "name":"Unit Tests (Python)", // "description":"All tests passed", // "state":"SUCCESSFUL", // "key":"mybuildtool", // "url":"https://my-build-tool.com/builds/MY-PROJECT/BUILD-792", // "type":"build", // "created_on":"2015-11-19T20:37:35.547563+00:00", // "updated_on":"2015-11-20T08:01:16.433108+00:00", // "links":{ // "commit":{ // "href":"http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e" // }, // "self":{ // "href":"http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e/statuses/build/mybuildtool" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "repo:commit_status_updated") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestIssueCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "issue":{ // "id":1, // "component":"component", // "title":"Issue title", // "content":{ // "raw":"Issue description", // "html":"Issue description
", // "markup":"markdown" // }, // "priority":"trivial|minor|major|critical|blocker", // "state":"new|open|on hold|resolved|duplicate|invalid|wontfix|closed", // "type":"bug|enhancement|proposal|task", // "milestone":{ // "name":"milestone 1" // }, // "version":{ // "name":"version 1" // }, // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.179678+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/issues/issue_id" // }, // "html":{ // "href":"https://api.bitbucket.org/issue_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "issue:created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestIssueUpdated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "issue":{ // "id":1, // "component":"component", // "title":"Issue title", // "content":{ // "raw":"Issue description", // "html":"Issue description
", // "markup":"markdown" // }, // "priority":"trivial|minor|major|critical|blocker", // "state":"new|open|on hold|resolved|duplicate|invalid|wontfix|closed", // "type":"bug|enhancement|proposal|task", // "milestone":{ // "name":"milestone 1" // }, // "version":{ // "name":"version 1" // }, // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.179678+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/issues/issue_id" // }, // "html":{ // "href":"https://api.bitbucket.org/issue_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // }, // "changes":{ // "status":{ // "old":"open", // "new":"on hold" // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "issue:updated") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestIssueCommentCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "issue":{ // "id":1, // "component":"component", // "title":"Issue title", // "content":{ // "raw":"Issue description", // "html":"Issue description
", // "markup":"markdown" // }, // "priority":"trivial|minor|major|critical|blocker", // "state":"new|open|on hold|resolved|duplicate|invalid|wontfix|closed", // "type":"bug|enhancement|proposal|task", // "milestone":{ // "name":"milestone 1" // }, // "version":{ // "name":"version 1" // }, // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.179678+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/issues/issue_id" // }, // "html":{ // "href":"https://api.bitbucket.org/issue_id" // } // } // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "issue:comment_created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestUpdated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:updated") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestApproved(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "approval":{ // "date":"2015-04-06T16:34:59.195330+00:00", // "user":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:approved") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestApprovalRemoved(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "approval":{ // "date":"2015-04-06T16:34:59.195330+00:00", // "user":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:unapproved") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestMerged(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:fulfilled") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestDeclined(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:rejected") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestCommentCreated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:comment_created") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestCommentUpdated(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pullrequest:comment_updated") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // } // func TestPullRequestCommentDeleted(t *testing.T) { // payload := `{ // "actor":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // }, // "pullrequest":{ // "id":1, // "title":"Title of pull request", // "description":"Description of pull request", // "state":"OPEN|MERGED|DECLINED", // "author":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "source":{ // "branch":{ // "name":"branch2" // }, // "commit":{ // "hash":"d3022fc0ca3d" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "destination":{ // "branch":{ // "name":"master" // }, // "commit":{ // "hash":"ce5965ddd289" // }, // "repository":{ // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket" // }, // "html":{ // "href":"https://api.bitbucket.org/bitbucket/bitbucket" // }, // "avatar":{ // "href":"https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png" // } // }, // "uuid":"{673a6070-3421-46c9-9d48-90745f7bfe8e}", // "full_name":"team_name/repo_name", // "name":"repo_name", // "scm":"git", // "is_private":true // } // }, // "merge_commit":{ // "hash":"764413d85e29" // }, // "participants":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "reviewers":[ // { // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // } // ], // "close_source_branch":true, // "closed_by":{ // "username":"emmap1", // "display_name":"Emma", // "uuid":"{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/users/emmap1" // }, // "html":{ // "href":"https://api.bitbucket.org/emmap1" // }, // "avatar":{ // "href":"https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png" // } // } // }, // "reason":"reason for declining the PR (if applicable)", // "created_on":"2015-04-06T15:23:38.179678+00:00", // "updated_on":"2015-04-06T15:23:38.205705+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/pullrequests/pullrequest_id" // }, // "html":{ // "href":"https://api.bitbucket.org/pullrequest_id" // } // } // }, // "comment":{ // "id":17, // "parent":{ // "id":16 // }, // "content":{ // "raw":"Comment text", // "html":"Comment text
", // "markup":"markdown" // }, // "inline":{ // "path":"path/to/file", // "from":null, // "to":10 // }, // "created_on":"2015-04-06T16:52:29.982346+00:00", // "updated_on":"2015-04-06T16:52:29.983730+00:00", // "links":{ // "self":{ // "href":"https://api.bitbucket.org/api/2.0/comments/comment_id" // }, // "html":{ // "href":"https://api.bitbucket.org/comment_id" // } // } // } // } // ` // req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload))) // req.Header.Set("Content-Type", "application/json") // req.Header.Set("X-Hook-UUID", "MY_UUID") // req.Header.Set("X-Event-Key", "pull_request:comment_deleted") // Equal(t, err, nil) // client := &http.Client{} // resp, err := client.Do(req) // Equal(t, err, nil) // defer resp.Body.Close() // Equal(t, resp.StatusCode, http.StatusOK) // }