diff --git a/server/command.go b/server/command.go index 0bfce6115..1fb169984 100644 --- a/server/command.go +++ b/server/command.go @@ -14,11 +14,19 @@ const helpText = "###### Mattermost Jira Plugin - Slash Command Help\n" + "* `/jira disconnect` - Disonnect your Mattermost account from your Jira account\n" + "* `/jira create ` - Create a new Issue with 'text' inserted into the description field.\n" + "* `/jira transition ` - Changes the state of a Jira issue.\n" + + "* `/jira settings [setting] [value]` - Update your user settings\n" + + " * [setting] can be `notifications`\n" + + " * [value] can be `on` or `off`\n" + "\nFor system administrators:\n" + "* `/jira install cloud ` - connect Mattermost to a cloud Jira instance located at \n" + "* `/jira install server ` - connect Mattermost to a server Jira instance located at \n" + "" +// Available settings +const ( + settingsNotifications = "notifications" +) + type CommandHandlerFunc func(p *Plugin, c *plugin.Context, header *model.CommandArgs, args ...string) *model.CommandResponse type CommandHandler struct { @@ -33,6 +41,7 @@ var jiraCommandHandler = CommandHandler{ "transition": executeTransition, "connect": executeConnect, "disconnect": executeDisconnect, + "settings": executeSettings, //"webhook": executeWebhookURL, //"webhook/url": executeWebhookURL, //"list": executeList, @@ -84,6 +93,30 @@ func executeDisconnect(p *Plugin, c *plugin.Context, header *model.CommandArgs, p.GetPluginURL(), routeUserDisconnect) } +func executeSettings(p *Plugin, c *plugin.Context, header *model.CommandArgs, args ...string) *model.CommandResponse { + if len(args) < 1 { + return help() + } + + ji, err := p.LoadCurrentJIRAInstance() + if err != nil { + return responsef("Failed to load current Jira instance: %v. Please contact your system administrator.", err) + } + + mattermostUserId := header.UserId + jiraUser, err := p.LoadJIRAUser(ji, mattermostUserId) + if err != nil { + return responsef("Your username is not connected to Jira. Please type `jira connect`. %v", err) + } + + switch args[0] { + case settingsNotifications: + return p.settingsNotifications(ji, mattermostUserId, jiraUser, args) + default: + return responsef("Unknown setting.") + } +} + func executeList(p *Plugin, c *plugin.Context, header *model.CommandArgs, args ...string) *model.CommandResponse { authorized, err := authorizedSysAdmin(p, header.UserId) if err != nil { @@ -280,7 +313,7 @@ func getCommand() *model.Command { DisplayName: "Jira", Description: "Integration with Jira.", AutoComplete: true, - AutoCompleteDesc: "Available commands: connect, disconnect, create, transition, install cloud, install server, help", + AutoCompleteDesc: "Available commands: connect, disconnect, create, transition, settings, install cloud, install server, help", AutoCompleteHint: "[command]", } } diff --git a/server/settings.go b/server/settings.go new file mode 100644 index 000000000..bbd63e591 --- /dev/null +++ b/server/settings.go @@ -0,0 +1,47 @@ +package main + +import "github.com/mattermost/mattermost-server/model" + +const ( + settingOn = "on" + settingOff = "off" +) + +func (p *Plugin) settingsNotifications(ji Instance, mattermostUserId string, jiraUser JIRAUser, args []string) *model.CommandResponse { + const helpText = "`/jira settings notifications [value]`\n* Invalid value. Accepted values are: `on` or `off`." + + if len(args) != 2 { + return responsef(helpText) + } + + var value bool + switch args[1] { + case settingOn: + value = true + case settingOff: + value = false + default: + return responsef(helpText) + } + + if jiraUser.Settings == nil { + jiraUser.Settings = &UserSettings{} + } + jiraUser.Settings.Notifications = value + if err := p.StoreUserInfo(ji, mattermostUserId, jiraUser); err != nil { + p.errorf("settingsNotifications, err: %v", err) + responsef("Could not store new settings. Please contact your system administrator. error: %v", err) + } + + // send back the actual value + updatedJiraUser, err := p.LoadJIRAUser(ji, mattermostUserId) + if err != nil { + return responsef("Your username is not connected to Jira. Please type `jira connect`. %v", err) + } + notifications := "off" + if updatedJiraUser.Settings.Notifications { + notifications = "on" + } + + return responsef("Settings updated. Notifications %s.", notifications) +} diff --git a/server/subscribe.go b/server/subscribe.go index eb2486709..62c30ba43 100644 --- a/server/subscribe.go +++ b/server/subscribe.go @@ -357,6 +357,13 @@ func httpSubscribeWebhook(p *Plugin, w http.ResponseWriter, r *http.Request) (in } } + // Notify any affected users using a direct channel + err = p.handleNotifications(parsed) + if err != nil { + p.errorf("httpSubscribeWebhook, handleNotifications: %v", err) + return http.StatusBadRequest, err + } + return http.StatusOK, nil } diff --git a/server/testdata/webhook-comment-created.json b/server/testdata/webhook-comment-created.json index e9d126114..72f7ee1ca 100644 --- a/server/testdata/webhook-comment-created.json +++ b/server/testdata/webhook-comment-created.json @@ -1 +1,93 @@ -{"timestamp":1550286678321,"webhookEvent":"comment_created","comment":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019","id":"10019","author":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"body":"Added a comment","updateAuthor":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"created":"2019-02-15T19:11:18.321-0800","updated":"2019-02-15T19:11:18.321-0800","jsdPublic":true},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"summary":"Unit test summary 1","issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"assignee":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To Do"}}}}} +{ + "timestamp": 1550286678321, + "webhookEvent": "comment_created", + "comment": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019", + "id": "10019", + "author": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "body": "Added a comment", + "updateAuthor": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "created": "2019-02-15T19:11:18.321-0800", + "updated": "2019-02-15T19:11:18.321-0800", + "jsdPublic": true + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "summary": "Unit test summary 1", + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "assignee": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + } +} diff --git a/server/testdata/webhook-comment-deleted.json b/server/testdata/webhook-comment-deleted.json index ddd369b0a..5fdfb5a57 100644 --- a/server/testdata/webhook-comment-deleted.json +++ b/server/testdata/webhook-comment-deleted.json @@ -1 +1,93 @@ -{"timestamp":1550286759394,"webhookEvent":"comment_deleted","comment":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019","id":"10019","author":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"body":"Added a comment, then edited it","updateAuthor":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"created":"2019-02-15T19:11:18.321-0800","updated":"2019-02-15T19:12:08.432-0800","jsdPublic":true},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"summary":"Unit test summary 1","issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"assignee":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To Do"}}}}} +{ + "timestamp": 1550286759394, + "webhookEvent": "comment_deleted", + "comment": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019", + "id": "10019", + "author": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "body": "Added a comment, then edited it", + "updateAuthor": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "created": "2019-02-15T19:11:18.321-0800", + "updated": "2019-02-15T19:12:08.432-0800", + "jsdPublic": true + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "summary": "Unit test summary 1", + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "assignee": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + } +} diff --git a/server/testdata/webhook-comment-updated.json b/server/testdata/webhook-comment-updated.json index ecaf9201a..8457f82bc 100644 --- a/server/testdata/webhook-comment-updated.json +++ b/server/testdata/webhook-comment-updated.json @@ -1 +1,93 @@ -{"timestamp":1550286728432,"webhookEvent":"comment_updated","comment":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019","id":"10019","author":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"body":"Added a comment, then edited it","updateAuthor":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"created":"2019-02-15T19:11:18.321-0800","updated":"2019-02-15T19:12:08.432-0800","jsdPublic":true},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"summary":"Unit test summary 1","issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"assignee":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To Do"}}}}} +{ + "timestamp": 1550286728432, + "webhookEvent": "comment_updated", + "comment": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040/comment/10019", + "id": "10019", + "author": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "body": "Added a comment, then edited it", + "updateAuthor": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "created": "2019-02-15T19:11:18.321-0800", + "updated": "2019-02-15T19:12:08.432-0800", + "jsdPublic": true + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "summary": "Unit test summary 1", + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "assignee": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + } +} diff --git a/server/testdata/webhook-issue-updated-assigned-nobody.json b/server/testdata/webhook-issue-updated-assigned-nobody.json index 08e247f6e..0cf03e487 100644 --- a/server/testdata/webhook-issue-updated-assigned-nobody.json +++ b/server/testdata/webhook-issue-updated-assigned-nobody.json @@ -1 +1,202 @@ -{"timestamp":1550351432604,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_assigned","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"lastViewed":"2019-02-16T13:08:49.231-0800","watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10024":[],"customfield_10025":null,"labels":["test-label"],"customfield_10026":null,"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"aggregatetimeoriginalestimate":null,"timeestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-16T13:10:32.523-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"timetracking":{},"customfield_10015":null,"customfield_10005":null,"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":null,"attachment":[],"customfield_10009":null,"aggregatetimeestimate":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10231","items":[{"field":"assignee","fieldtype":"jira","fieldId":"assignee","from":"admin","fromString":"Test User","to":null,"toString":null}]}} +{ + "timestamp": 1550351432604, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_assigned", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10024": [], + "customfield_10025": null, + "labels": [ + "test-label" + ], + "customfield_10026": null, + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "aggregatetimeoriginalestimate": null, + "timeestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:10:32.523-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "timetracking": {}, + "customfield_10015": null, + "customfield_10005": null, + "customfield_10006": null, + "security": null, + "customfield_10007": null, + "customfield_10008": null, + "attachment": [], + "customfield_10009": null, + "aggregatetimeestimate": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10231", + "items": [ + { + "field": "assignee", + "fieldtype": "jira", + "fieldId": "assignee", + "from": "admin", + "fromString": "Test User", + "to": null, + "toString": null + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-assigned.json b/server/testdata/webhook-issue-updated-assigned.json index a49add80f..01f55c47b 100644 --- a/server/testdata/webhook-issue-updated-assigned.json +++ b/server/testdata/webhook-issue-updated-assigned.json @@ -1 +1,217 @@ -{"timestamp":1550287081752,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_assigned","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-15T19:07:41.418-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10024":[],"customfield_10025":null,"customfield_10026":null,"labels":["test-label"],"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"updated":"2019-02-15T19:18:01.707-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"customfield_10015":null,"timetracking":{},"customfield_10005":null,"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":null,"aggregatetimeestimate":null,"customfield_10009":null,"attachment":[],"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10230","items":[{"field":"assignee","fieldtype":"jira","fieldId":"assignee","from":null,"fromString":null,"to":"admin","toString":"Test User"}]}} +{ + "timestamp": 1550287081752, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_assigned", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "updated": "2019-02-15T19:18:01.707-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "aggregatetimeestimate": null, + "customfield_10009": null, + "attachment": [], + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "customfield_10000": "{}", + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10230", + "items": [ + { + "field": "assignee", + "fieldtype": "jira", + "fieldId": "assignee", + "from": null, + "fromString": null, + "to": "admin", + "toString": "Test User" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-attachments.json b/server/testdata/webhook-issue-updated-attachments.json index afa6707df..94edd75a2 100644 --- a/server/testdata/webhook-issue-updated-attachments.json +++ b/server/testdata/webhook-issue-updated-attachments.json @@ -1,203 +1,203 @@ { - "timestamp": 1550351530065, - "webhookEvent": "jira:issue_updated", - "issue_event_type_name": "issue_updated", - "user": { + "timestamp": 1550351530065, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:12:10.037-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", "name": "admin", "key": "admin", "accountId": "5c5f880629be9642ba529340", "emailAddress": "some-instance-test@gmail.com", "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" }, "displayName": "Test User", "active": true, "timeZone": "America/Los_Angeles" - }, - "issue": { - "id": "10040", - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", - "key": "TES-41", - "fields": { - "issuetype": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", - "id": "10001", - "description": "Stories track functionality or features expressed as user goals.", - "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", - "name": "Story", - "subtask": false, - "avatarId": 10315 - }, - "timespent": null, - "customfield_10030": null, - "project": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", - "id": "10000", - "key": "TES", - "name": "test1", - "projectTypeKey": "software", - "avatarUrls": { - "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", - "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", - "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", - "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" - } - }, - "fixVersions": [], - "aggregatetimespent": null, - "resolution": null, - "customfield_10027": null, - "resolutiondate": null, - "workratio": -1, - "watches": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", - "watchCount": 1, - "isWatching": true - }, - "lastViewed": "2019-02-16T13:08:49.231-0800", - "created": "2019-02-15T19:01:52.971-0800", - "customfield_10020": null, - "customfield_10021": null, - "customfield_10022": "0|i0000r:r", - "priority": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", - "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", - "name": "High", - "id": "2" - }, - "customfield_10023": null, - "customfield_10024": [], - "customfield_10025": null, - "customfield_10026": null, - "labels": [ - "sad", - "test-label" - ], - "customfield_10016": null, - "customfield_10017": null, - "customfield_10018": { - "hasEpicLinkFieldDependency": false, - "showField": false, - "nonEditableReason": { - "reason": "PLUGIN_LICENSE_ERROR", - "message": "Portfolio for Jira must be licensed for the Parent Link to be available." - } - }, - "customfield_10019": null, - "timeestimate": null, - "aggregatetimeoriginalestimate": null, - "versions": [], - "issuelinks": [], - "assignee": null, - "updated": "2019-02-16T13:12:10.037-0800", - "status": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", - "description": "", - "iconUrl": "https://some-instance-test.atlassian.net/", - "name": "To Do", - "id": "10001", - "statusCategory": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", - "id": 2, - "key": "new", - "colorName": "blue-gray", - "name": "New" - } - }, - "components": [ - { - "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", - "id": "10000", - "name": "COMP-1", - "description": "Component-1" - } - ], - "timeoriginalestimate": null, - "description": "Unit test description, not that long, a little longer now", - "customfield_10010": null, - "customfield_10014": null, - "customfield_10015": null, - "timetracking": {}, - "customfield_10005": null, - "customfield_10006": null, - "customfield_10007": null, - "security": null, - "customfield_10008": null, - "attachment": [], - "aggregatetimeestimate": null, - "customfield_10009": null, - "summary": "Unit test summary 1", - "creator": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "subtasks": [], - "reporter": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "aggregateprogress": { - "progress": 0, - "total": 0 - }, - "customfield_10000": "{}", - "customfield_10001": null, - "customfield_10002": null, - "customfield_10003": null, - "customfield_10004": null, - "environment": null, - "duedate": null, - "progress": { - "progress": 0, - "total": 0 - }, - "votes": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", - "votes": 0, - "hasVoted": false - } - } - }, - "changelog": { - "id": "10233", - "items": [ - { - "field": "Attachment", - "fieldtype": "jira", - "fieldId": "Attachment", - "from": null, - "fromString": "test.json test.xml", - "to": null, - "toString": "test.gif test.xml" - } - ] + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } } -} \ No newline at end of file + }, + "changelog": { + "id": "10233", + "items": [ + { + "field": "Attachment", + "fieldtype": "jira", + "fieldId": "Attachment", + "from": null, + "fromString": "test.json test.xml", + "to": null, + "toString": "test.gif test.xml" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-edited.json b/server/testdata/webhook-issue-updated-edited.json index a7e3dd016..b04ac005a 100644 --- a/server/testdata/webhook-issue-updated-edited.json +++ b/server/testdata/webhook-issue-updated-edited.json @@ -1 +1,202 @@ -{"timestamp":1550286601840,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_updated","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-15T19:07:41.418-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10024":[],"customfield_10025":null,"labels":["test-label"],"customfield_10026":null,"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"aggregatetimeoriginalestimate":null,"timeestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-15T19:10:01.805-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"customfield_10015":null,"timetracking":{},"customfield_10005":null,"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":null,"aggregatetimeestimate":null,"customfield_10009":null,"attachment":[],"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10225","items":[{"field":"description","fieldtype":"jira","fieldId":"description","from":null,"fromString":"Unit test description, not that long","to":null,"toString":"Unit test description, not that long, a little longer now"}]}} +{ + "timestamp": 1550286601840, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10024": [], + "customfield_10025": null, + "labels": [ + "test-label" + ], + "customfield_10026": null, + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "aggregatetimeoriginalestimate": null, + "timeestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-15T19:10:01.805-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "security": null, + "customfield_10007": null, + "customfield_10008": null, + "aggregatetimeestimate": null, + "customfield_10009": null, + "attachment": [], + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10225", + "items": [ + { + "field": "description", + "fieldtype": "jira", + "fieldId": "description", + "from": null, + "fromString": "Unit test description, not that long", + "to": null, + "toString": "Unit test description, not that long, a little longer now" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-labels.json b/server/testdata/webhook-issue-updated-labels.json index e0a3a677d..36b9bac8b 100644 --- a/server/testdata/webhook-issue-updated-labels.json +++ b/server/testdata/webhook-issue-updated-labels.json @@ -1 +1,203 @@ -{"timestamp":1550351530065,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_updated","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-16T13:08:49.231-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10023":null,"customfield_10024":[],"customfield_10025":null,"customfield_10026":null,"labels":["sad","test-label"],"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-16T13:12:10.037-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"customfield_10015":null,"timetracking":{},"customfield_10005":null,"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":null,"attachment":[],"aggregatetimeestimate":null,"customfield_10009":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10233","items":[{"field":"labels","fieldtype":"jira","fieldId":"labels","from":null,"fromString":"bad test-label","to":null,"toString":"sad test-label"}]}} +{ + "timestamp": 1550351530065, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:12:10.037-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10233", + "items": [ + { + "field": "labels", + "fieldtype": "jira", + "fieldId": "labels", + "from": null, + "fromString": "bad test-label", + "to": null, + "toString": "sad test-label" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-lowered-priority.json b/server/testdata/webhook-issue-updated-lowered-priority.json index ae82eb951..0fa9a6b95 100644 --- a/server/testdata/webhook-issue-updated-lowered-priority.json +++ b/server/testdata/webhook-issue-updated-lowered-priority.json @@ -1 +1,203 @@ -{"timestamp":1550351632565,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_updated","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-16T13:08:49.231-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/4","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/low.svg","name":"Low","id":"4"},"customfield_10024":[],"customfield_10025":null,"customfield_10026":null,"labels":["sad","test-label"],"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-16T13:13:52.522-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"timetracking":{},"customfield_10015":null,"customfield_10005":null,"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":null,"aggregatetimeestimate":null,"attachment":[],"customfield_10009":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10234","items":[{"field":"priority","fieldtype":"jira","fieldId":"priority","from":"2","fromString":"High","to":"4","toString":"Low"}]}} +{ + "timestamp": 1550351632565, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/4", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/low.svg", + "name": "Low", + "id": "4" + }, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:13:52.522-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "timetracking": {}, + "customfield_10015": null, + "customfield_10005": null, + "customfield_10006": null, + "security": null, + "customfield_10007": null, + "customfield_10008": null, + "aggregatetimeestimate": null, + "attachment": [], + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "customfield_10000": "{}", + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10234", + "items": [ + { + "field": "priority", + "fieldtype": "jira", + "fieldId": "priority", + "from": "2", + "fromString": "High", + "to": "4", + "toString": "Low" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-raised-priority.json b/server/testdata/webhook-issue-updated-raised-priority.json index 67a124162..ce6de259d 100644 --- a/server/testdata/webhook-issue-updated-raised-priority.json +++ b/server/testdata/webhook-issue-updated-raised-priority.json @@ -1 +1,203 @@ -{"timestamp":1550351716080,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_updated","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-16T13:08:49.231-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10024":[],"customfield_10025":null,"customfield_10026":null,"labels":["sad","test-label"],"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"aggregatetimeoriginalestimate":null,"timeestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-16T13:15:16.037-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"timetracking":{},"customfield_10015":null,"customfield_10005":null,"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":null,"attachment":[],"customfield_10009":null,"aggregatetimeestimate":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10235","items":[{"field":"priority","fieldtype":"jira","fieldId":"priority","from":"4","fromString":"Low","to":"2","toString":"High"}]}} +{ + "timestamp": 1550351716080, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "aggregatetimeoriginalestimate": null, + "timeestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:15:16.037-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "timetracking": {}, + "customfield_10015": null, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "customfield_10009": null, + "aggregatetimeestimate": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "customfield_10000": "{}", + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10235", + "items": [ + { + "field": "priority", + "fieldtype": "jira", + "fieldId": "priority", + "from": "4", + "fromString": "Low", + "to": "2", + "toString": "High" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-rank.json b/server/testdata/webhook-issue-updated-rank.json index d806abe33..7181e6315 100644 --- a/server/testdata/webhook-issue-updated-rank.json +++ b/server/testdata/webhook-issue-updated-rank.json @@ -1,203 +1,203 @@ { - "timestamp": 1550351530065, - "webhookEvent": "jira:issue_updated", - "issue_event_type_name": "issue_updated", - "user": { + "timestamp": 1550351530065, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:12:10.037-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", "name": "admin", "key": "admin", "accountId": "5c5f880629be9642ba529340", "emailAddress": "some-instance-test@gmail.com", "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" }, "displayName": "Test User", "active": true, "timeZone": "America/Los_Angeles" - }, - "issue": { - "id": "10040", - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", - "key": "TES-41", - "fields": { - "issuetype": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", - "id": "10001", - "description": "Stories track functionality or features expressed as user goals.", - "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", - "name": "Story", - "subtask": false, - "avatarId": 10315 - }, - "timespent": null, - "customfield_10030": null, - "project": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", - "id": "10000", - "key": "TES", - "name": "test1", - "projectTypeKey": "software", - "avatarUrls": { - "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", - "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", - "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", - "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" - } - }, - "fixVersions": [], - "aggregatetimespent": null, - "resolution": null, - "customfield_10027": null, - "resolutiondate": null, - "workratio": -1, - "watches": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", - "watchCount": 1, - "isWatching": true - }, - "lastViewed": "2019-02-16T13:08:49.231-0800", - "created": "2019-02-15T19:01:52.971-0800", - "customfield_10020": null, - "customfield_10021": null, - "customfield_10022": "0|i0000r:r", - "priority": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", - "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", - "name": "High", - "id": "2" - }, - "customfield_10023": null, - "customfield_10024": [], - "customfield_10025": null, - "customfield_10026": null, - "labels": [ - "sad", - "test-label" - ], - "customfield_10016": null, - "customfield_10017": null, - "customfield_10018": { - "hasEpicLinkFieldDependency": false, - "showField": false, - "nonEditableReason": { - "reason": "PLUGIN_LICENSE_ERROR", - "message": "Portfolio for Jira must be licensed for the Parent Link to be available." - } - }, - "customfield_10019": null, - "timeestimate": null, - "aggregatetimeoriginalestimate": null, - "versions": [], - "issuelinks": [], - "assignee": null, - "updated": "2019-02-16T13:12:10.037-0800", - "status": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", - "description": "", - "iconUrl": "https://some-instance-test.atlassian.net/", - "name": "To Do", - "id": "10001", - "statusCategory": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", - "id": 2, - "key": "new", - "colorName": "blue-gray", - "name": "New" - } - }, - "components": [ - { - "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", - "id": "10000", - "name": "COMP-1", - "description": "Component-1" - } - ], - "timeoriginalestimate": null, - "description": "Unit test description, not that long, a little longer now", - "customfield_10010": null, - "customfield_10014": null, - "customfield_10015": null, - "timetracking": {}, - "customfield_10005": null, - "customfield_10006": null, - "customfield_10007": null, - "security": null, - "customfield_10008": null, - "attachment": [], - "aggregatetimeestimate": null, - "customfield_10009": null, - "summary": "Unit test summary 1", - "creator": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "subtasks": [], - "reporter": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "aggregateprogress": { - "progress": 0, - "total": 0 - }, - "customfield_10000": "{}", - "customfield_10001": null, - "customfield_10002": null, - "customfield_10003": null, - "customfield_10004": null, - "environment": null, - "duedate": null, - "progress": { - "progress": 0, - "total": 0 - }, - "votes": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", - "votes": 0, - "hasVoted": false - } - } - }, - "changelog": { - "id": "10233", - "items": [ - { - "field": "Rank", - "fieldtype": "jira", - "fieldId": "Rank", - "from": null, - "fromString": "", - "to": null, - "toString": "ranked higher" - } - ] + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } } -} \ No newline at end of file + }, + "changelog": { + "id": "10233", + "items": [ + { + "field": "Rank", + "fieldtype": "jira", + "fieldId": "Rank", + "from": null, + "fromString": "", + "to": null, + "toString": "ranked higher" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-renamed.json b/server/testdata/webhook-issue-updated-renamed.json index 09505eb7a..2c0fed4f0 100644 --- a/server/testdata/webhook-issue-updated-renamed.json +++ b/server/testdata/webhook-issue-updated-renamed.json @@ -1 +1,202 @@ -{"timestamp":1550286471789,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_updated","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"lastViewed":"2019-02-15T19:07:41.418-0800","watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","customfield_10023":null,"priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10024":[],"customfield_10025":null,"labels":["test-label"],"customfield_10026":null,"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-15T19:07:51.756-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long","customfield_10010":null,"customfield_10014":null,"customfield_10015":null,"timetracking":{},"customfield_10005":null,"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":null,"attachment":[],"aggregatetimeestimate":null,"customfield_10009":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10224","items":[{"field":"summary","fieldtype":"jira","fieldId":"summary","from":null,"fromString":"Unit test summary","to":null,"toString":"Unit test summary 1"}]}} +{ + "timestamp": 1550286471789, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "customfield_10023": null, + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10024": [], + "customfield_10025": null, + "labels": [ + "test-label" + ], + "customfield_10026": null, + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-15T19:07:51.756-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10224", + "items": [ + { + "field": "summary", + "fieldtype": "jira", + "fieldId": "summary", + "from": null, + "fromString": "Unit test summary", + "to": null, + "toString": "Unit test summary 1" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-reopened.json b/server/testdata/webhook-issue-updated-reopened.json index 4d5032b36..1b57a6904 100644 --- a/server/testdata/webhook-issue-updated-reopened.json +++ b/server/testdata/webhook-issue-updated-reopened.json @@ -1 +1,211 @@ -{"timestamp":1550287026531,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_generic","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"lastViewed":"2019-02-15T19:07:41.418-0800","watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10023":null,"customfield_10024":[],"customfield_10025":null,"labels":["test-label"],"customfield_10026":null,"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"aggregatetimeoriginalestimate":null,"timeestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-15T19:17:06.501-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10001","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"To Do","id":"10001","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"customfield_10015":null,"timetracking":{},"customfield_10005":null,"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":null,"aggregatetimeestimate":null,"customfield_10009":null,"attachment":[],"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10229","items":[{"field":"resolution","fieldtype":"jira","fieldId":"resolution","from":"10000","fromString":"Done","to":null,"toString":null},{"field":"status","fieldtype":"jira","fieldId":"status","from":"10002","fromString":"Done","to":"10001","toString":"To Do"}]}} +{ + "timestamp": 1550287026531, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_generic", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "labels": [ + "test-label" + ], + "customfield_10026": null, + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "aggregatetimeoriginalestimate": null, + "timeestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-15T19:17:06.501-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "security": null, + "customfield_10007": null, + "customfield_10008": null, + "aggregatetimeestimate": null, + "customfield_10009": null, + "attachment": [], + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "customfield_10000": "{}", + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10229", + "items": [ + { + "field": "resolution", + "fieldtype": "jira", + "fieldId": "resolution", + "from": "10000", + "fromString": "Done", + "to": null, + "toString": null + }, + { + "field": "status", + "fieldtype": "jira", + "fieldId": "status", + "from": "10002", + "fromString": "Done", + "to": "10001", + "toString": "To Do" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-resolved.json b/server/testdata/webhook-issue-updated-resolved.json index 77c82d7bc..1b0dd40b5 100644 --- a/server/testdata/webhook-issue-updated-resolved.json +++ b/server/testdata/webhook-issue-updated-resolved.json @@ -1 +1,216 @@ -{"timestamp":1550286940507,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_generic","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":{"self":"https://some-instance-test.atlassian.net/rest/api/2/resolution/10000","id":"10000","description":"Work has been completed on this issue.","name":"Done"},"customfield_10027":null,"resolutiondate":"2019-02-15T19:15:40.470-0800","workratio":-1,"watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"lastViewed":"2019-02-15T19:07:41.418-0800","created":"2019-02-15T19:01:52.971-0800","customfield_10020":"3_*:*_1_*:*_78475_*|*_10002_*:*_1_*:*_0_*|*_10001_*:*_1_*:*_749036","customfield_10021":null,"customfield_10022":"0|i0000r:r","priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10023":null,"customfield_10024":[],"customfield_10025":null,"customfield_10026":null,"labels":["test-label"],"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-15T19:15:40.477-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/10002","description":"","iconUrl":"https://some-instance-test.atlassian.net/","name":"Done","id":"10002","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/3","id":3,"key":"done","colorName":"green","name":"Complete"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"timetracking":{},"customfield_10015":null,"customfield_10005":null,"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":null,"aggregatetimeestimate":null,"attachment":[],"customfield_10009":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10228","items":[{"field":"resolution","fieldtype":"jira","fieldId":"resolution","from":null,"fromString":null,"to":"10000","toString":"Done"},{"field":"status","fieldtype":"jira","fieldId":"status","from":"3","fromString":"In Progress","to":"10002","toString":"Done"}]}} +{ + "timestamp": 1550286940507, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_generic", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/resolution/10000", + "id": "10000", + "description": "Work has been completed on this issue.", + "name": "Done" + }, + "customfield_10027": null, + "resolutiondate": "2019-02-15T19:15:40.470-0800", + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": "3_*:*_1_*:*_78475_*|*_10002_*:*_1_*:*_0_*|*_10001_*:*_1_*:*_749036", + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-15T19:15:40.477-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10002", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "Done", + "id": "10002", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/3", + "id": 3, + "key": "done", + "colorName": "green", + "name": "Complete" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "timetracking": {}, + "customfield_10015": null, + "customfield_10005": null, + "customfield_10006": null, + "security": null, + "customfield_10007": null, + "customfield_10008": null, + "aggregatetimeestimate": null, + "attachment": [], + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10228", + "items": [ + { + "field": "resolution", + "fieldtype": "jira", + "fieldId": "resolution", + "from": null, + "fromString": null, + "to": "10000", + "toString": "Done" + }, + { + "field": "status", + "fieldtype": "jira", + "fieldId": "status", + "from": "3", + "fromString": "In Progress", + "to": "10002", + "toString": "Done" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-sprint.json b/server/testdata/webhook-issue-updated-sprint.json index 6a963b23d..bd1c579c0 100644 --- a/server/testdata/webhook-issue-updated-sprint.json +++ b/server/testdata/webhook-issue-updated-sprint.json @@ -1,203 +1,203 @@ { - "timestamp": 1550351530065, - "webhookEvent": "jira:issue_updated", - "issue_event_type_name": "issue_updated", - "user": { + "timestamp": 1550351530065, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_updated", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "lastViewed": "2019-02-16T13:08:49.231-0800", + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "customfield_10026": null, + "labels": [ + "sad", + "test-label" + ], + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-16T13:12:10.037-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", + "description": "", + "iconUrl": "https://some-instance-test.atlassian.net/", + "name": "To Do", + "id": "10001", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "customfield_10015": null, + "timetracking": {}, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", "name": "admin", "key": "admin", "accountId": "5c5f880629be9642ba529340", "emailAddress": "some-instance-test@gmail.com", "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" }, "displayName": "Test User", "active": true, "timeZone": "America/Los_Angeles" - }, - "issue": { - "id": "10040", - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", - "key": "TES-41", - "fields": { - "issuetype": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", - "id": "10001", - "description": "Stories track functionality or features expressed as user goals.", - "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", - "name": "Story", - "subtask": false, - "avatarId": 10315 - }, - "timespent": null, - "customfield_10030": null, - "project": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", - "id": "10000", - "key": "TES", - "name": "test1", - "projectTypeKey": "software", - "avatarUrls": { - "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", - "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", - "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", - "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" - } - }, - "fixVersions": [], - "aggregatetimespent": null, - "resolution": null, - "customfield_10027": null, - "resolutiondate": null, - "workratio": -1, - "watches": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", - "watchCount": 1, - "isWatching": true - }, - "lastViewed": "2019-02-16T13:08:49.231-0800", - "created": "2019-02-15T19:01:52.971-0800", - "customfield_10020": null, - "customfield_10021": null, - "customfield_10022": "0|i0000r:r", - "priority": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", - "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", - "name": "High", - "id": "2" - }, - "customfield_10023": null, - "customfield_10024": [], - "customfield_10025": null, - "customfield_10026": null, - "labels": [ - "sad", - "test-label" - ], - "customfield_10016": null, - "customfield_10017": null, - "customfield_10018": { - "hasEpicLinkFieldDependency": false, - "showField": false, - "nonEditableReason": { - "reason": "PLUGIN_LICENSE_ERROR", - "message": "Portfolio for Jira must be licensed for the Parent Link to be available." - } - }, - "customfield_10019": null, - "timeestimate": null, - "aggregatetimeoriginalestimate": null, - "versions": [], - "issuelinks": [], - "assignee": null, - "updated": "2019-02-16T13:12:10.037-0800", - "status": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/status/10001", - "description": "", - "iconUrl": "https://some-instance-test.atlassian.net/", - "name": "To Do", - "id": "10001", - "statusCategory": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/2", - "id": 2, - "key": "new", - "colorName": "blue-gray", - "name": "New" - } - }, - "components": [ - { - "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", - "id": "10000", - "name": "COMP-1", - "description": "Component-1" - } - ], - "timeoriginalestimate": null, - "description": "Unit test description, not that long, a little longer now", - "customfield_10010": null, - "customfield_10014": null, - "customfield_10015": null, - "timetracking": {}, - "customfield_10005": null, - "customfield_10006": null, - "customfield_10007": null, - "security": null, - "customfield_10008": null, - "attachment": [], - "aggregatetimeestimate": null, - "customfield_10009": null, - "summary": "Unit test summary 1", - "creator": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "subtasks": [], - "reporter": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", - "name": "admin", - "key": "admin", - "accountId": "5c5f880629be9642ba529340", - "emailAddress": "some-instance-test@gmail.com", - "avatarUrls": { - "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", - "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", - "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", - "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" - }, - "displayName": "Test User", - "active": true, - "timeZone": "America/Los_Angeles" - }, - "aggregateprogress": { - "progress": 0, - "total": 0 - }, - "customfield_10000": "{}", - "customfield_10001": null, - "customfield_10002": null, - "customfield_10003": null, - "customfield_10004": null, - "environment": null, - "duedate": null, - "progress": { - "progress": 0, - "total": 0 - }, - "votes": { - "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", - "votes": 0, - "hasVoted": false - } - } - }, - "changelog": { - "id": "10233", - "items": [ - { - "field": "Sprint", - "fieldtype": "jira", - "fieldId": "Sprint", - "from": null, - "fromString": "Sprint 1", - "to": null, - "toString": "Sprint 2" - } - ] + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10000": "{}", + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } } -} \ No newline at end of file + }, + "changelog": { + "id": "10233", + "items": [ + { + "field": "Sprint", + "fieldtype": "jira", + "fieldId": "Sprint", + "from": null, + "fromString": "Sprint 1", + "to": null, + "toString": "Sprint 2" + } + ] + } +} diff --git a/server/testdata/webhook-issue-updated-started-working.json b/server/testdata/webhook-issue-updated-started-working.json index 024bc1523..ac8cde9d8 100644 --- a/server/testdata/webhook-issue-updated-started-working.json +++ b/server/testdata/webhook-issue-updated-started-working.json @@ -1 +1,202 @@ -{"timestamp":1550286862039,"webhookEvent":"jira:issue_updated","issue_event_type_name":"issue_generic","user":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"issue":{"id":"10040","self":"https://some-instance-test.atlassian.net/rest/api/2/issue/10040","key":"TES-41","fields":{"issuetype":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories track functionality or features expressed as user goals.","iconUrl":"https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"customfield_10030":null,"project":{"self":"https://some-instance-test.atlassian.net/rest/api/2/project/10000","id":"10000","key":"TES","name":"test1","projectTypeKey":"software","avatarUrls":{"48x48":"https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"customfield_10027":null,"resolutiondate":null,"workratio":-1,"lastViewed":"2019-02-15T19:07:41.418-0800","watches":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers","watchCount":1,"isWatching":true},"created":"2019-02-15T19:01:52.971-0800","customfield_10020":null,"customfield_10021":null,"customfield_10022":"0|i0000r:r","priority":{"self":"https://some-instance-test.atlassian.net/rest/api/2/priority/2","iconUrl":"https://some-instance-test.atlassian.net/images/icons/priorities/high.svg","name":"High","id":"2"},"customfield_10023":null,"customfield_10024":[],"customfield_10025":null,"labels":["test-label"],"customfield_10026":null,"customfield_10016":null,"customfield_10017":null,"customfield_10018":{"hasEpicLinkFieldDependency":false,"showField":false,"nonEditableReason":{"reason":"PLUGIN_LICENSE_ERROR","message":"Portfolio for Jira must be licensed for the Parent Link to be available."}},"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2019-02-15T19:14:22.002-0800","status":{"self":"https://some-instance-test.atlassian.net/rest/api/2/status/3","description":"This issue is being actively worked on at the moment by the assignee.","iconUrl":"https://some-instance-test.atlassian.net/images/icons/statuses/inprogress.png","name":"In Progress","id":"3","statusCategory":{"self":"https://some-instance-test.atlassian.net/rest/api/2/statuscategory/4","id":4,"key":"indeterminate","colorName":"yellow","name":"In Progress"}},"components":[{"self":"https://some-instance-test.atlassian.net/rest/api/2/component/10000","id":"10000","name":"COMP-1","description":"Component-1"}],"timeoriginalestimate":null,"description":"Unit test description, not that long, a little longer now","customfield_10010":null,"customfield_10014":null,"timetracking":{},"customfield_10015":null,"customfield_10005":null,"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":null,"attachment":[],"aggregatetimeestimate":null,"customfield_10009":null,"summary":"Unit test summary 1","creator":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340","name":"admin","key":"admin","accountId":"5c5f880629be9642ba529340","emailAddress":"some-instance-test@gmail.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Test User","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"customfield_10003":null,"customfield_10004":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes","votes":0,"hasVoted":false}}},"changelog":{"id":"10227","items":[{"field":"status","fieldtype":"jira","fieldId":"status","from":"10001","fromString":"To Do","to":"3","toString":"In Progress"}]}} +{ + "timestamp": 1550286862039, + "webhookEvent": "jira:issue_updated", + "issue_event_type_name": "issue_generic", + "user": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "issue": { + "id": "10040", + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/10040", + "key": "TES-41", + "fields": { + "issuetype": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issuetype/10001", + "id": "10001", + "description": "Stories track functionality or features expressed as user goals.", + "iconUrl": "https://some-instance-test.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype", + "name": "Story", + "subtask": false, + "avatarId": 10315 + }, + "timespent": null, + "customfield_10030": null, + "project": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/project/10000", + "id": "10000", + "key": "TES", + "name": "test1", + "projectTypeKey": "software", + "avatarUrls": { + "48x48": "https://some-instance-test.atlassian.net/secure/projectavatar?avatarId=10324", + "24x24": "https://some-instance-test.atlassian.net/secure/projectavatar?size=small&avatarId=10324", + "16x16": "https://some-instance-test.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324", + "32x32": "https://some-instance-test.atlassian.net/secure/projectavatar?size=medium&avatarId=10324" + } + }, + "fixVersions": [], + "aggregatetimespent": null, + "resolution": null, + "customfield_10027": null, + "resolutiondate": null, + "workratio": -1, + "lastViewed": "2019-02-15T19:07:41.418-0800", + "watches": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/watchers", + "watchCount": 1, + "isWatching": true + }, + "created": "2019-02-15T19:01:52.971-0800", + "customfield_10020": null, + "customfield_10021": null, + "customfield_10022": "0|i0000r:r", + "priority": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/priorities/high.svg", + "name": "High", + "id": "2" + }, + "customfield_10023": null, + "customfield_10024": [], + "customfield_10025": null, + "labels": [ + "test-label" + ], + "customfield_10026": null, + "customfield_10016": null, + "customfield_10017": null, + "customfield_10018": { + "hasEpicLinkFieldDependency": false, + "showField": false, + "nonEditableReason": { + "reason": "PLUGIN_LICENSE_ERROR", + "message": "Portfolio for Jira must be licensed for the Parent Link to be available." + } + }, + "customfield_10019": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": null, + "updated": "2019-02-15T19:14:22.002-0800", + "status": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/status/3", + "description": "This issue is being actively worked on at the moment by the assignee.", + "iconUrl": "https://some-instance-test.atlassian.net/images/icons/statuses/inprogress.png", + "name": "In Progress", + "id": "3", + "statusCategory": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/statuscategory/4", + "id": 4, + "key": "indeterminate", + "colorName": "yellow", + "name": "In Progress" + } + }, + "components": [ + { + "self": "https://some-instance-test.atlassian.net/rest/api/2/component/10000", + "id": "10000", + "name": "COMP-1", + "description": "Component-1" + } + ], + "timeoriginalestimate": null, + "description": "Unit test description, not that long, a little longer now", + "customfield_10010": null, + "customfield_10014": null, + "timetracking": {}, + "customfield_10015": null, + "customfield_10005": null, + "customfield_10006": null, + "customfield_10007": null, + "security": null, + "customfield_10008": null, + "attachment": [], + "aggregatetimeestimate": null, + "customfield_10009": null, + "summary": "Unit test summary 1", + "creator": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "subtasks": [], + "reporter": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/user?accountId=5c5f880629be9642ba529340", + "name": "admin", + "key": "admin", + "accountId": "5c5f880629be9642ba529340", + "emailAddress": "some-instance-test@gmail.com", + "avatarUrls": { + "48x48": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue", + "24x24": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue", + "16x16": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue", + "32x32": "https://avatar-cdn.atlassian.com/d991bc281c0c0ecb0bbb2db3979ddaff?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd991bc281c0c0ecb0bbb2db3979ddaff%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue" + }, + "displayName": "Test User", + "active": true, + "timeZone": "America/Los_Angeles" + }, + "customfield_10000": "{}", + "aggregateprogress": { + "progress": 0, + "total": 0 + }, + "customfield_10001": null, + "customfield_10002": null, + "customfield_10003": null, + "customfield_10004": null, + "environment": null, + "duedate": null, + "progress": { + "progress": 0, + "total": 0 + }, + "votes": { + "self": "https://some-instance-test.atlassian.net/rest/api/2/issue/TES-41/votes", + "votes": 0, + "hasVoted": false + } + } + }, + "changelog": { + "id": "10227", + "items": [ + { + "field": "status", + "fieldtype": "jira", + "fieldId": "status", + "from": "10001", + "fromString": "To Do", + "to": "3", + "toString": "In Progress" + } + ] + } +} diff --git a/server/user.go b/server/user.go index 8da3361e1..c0ac69163 100644 --- a/server/user.go +++ b/server/user.go @@ -22,6 +22,11 @@ type JIRAUser struct { jira.User Oauth1AccessToken string `json:",omitempty"` Oauth1AccessSecret string `json:",omitempty"` + Settings *UserSettings +} + +type UserSettings struct { + Notifications bool `json:"notifications"` } type UserInfo struct { diff --git a/server/user_cloud.go b/server/user_cloud.go index 10d671ade..5574cd702 100644 --- a/server/user_cloud.go +++ b/server/user_cloud.go @@ -96,6 +96,9 @@ func httpACUserInteractive(jci *jiraCloudInstance, w http.ResponseWriter, r *htt return http.StatusUnauthorized, errors.New("link expired") } + // Set default settings the first time a user connects + uinfo.Settings = &UserSettings{Notifications: true} + err = jci.Plugin.StoreUserInfoNotify(jci, mattermostUserId, uinfo) case routeACUserDisconnected: diff --git a/server/user_server.go b/server/user_server.go index 3ac7c4e62..bee78b201 100644 --- a/server/user_server.go +++ b/server/user_server.go @@ -69,6 +69,9 @@ func httpOAuth1Complete(jsi *jiraServerInstance, w http.ResponseWriter, r *http. } jiraUser.User = *juser + // Set default settings the first time a user connects + jiraUser.Settings = &UserSettings{Notifications: true} + err = jsi.Plugin.StoreUserInfoNotify(jsi, mattermostUserId, jiraUser) if err != nil { return http.StatusInternalServerError, err diff --git a/server/utils.go b/server/utils.go index d2819f4f4..bdd174e1d 100644 --- a/server/utils.go +++ b/server/utils.go @@ -11,7 +11,7 @@ import ( "github.com/mattermost/mattermost-server/model" ) -func (p *Plugin) CreateBotDMPost(userId, message, postType string) (returnErr error) { +func (p *Plugin) CreateBotDMPost(ji Instance, userId, message, postType string) (returnErr error) { defer func() { if returnErr != nil { returnErr = errors.WithMessage(returnErr, @@ -19,6 +19,16 @@ func (p *Plugin) CreateBotDMPost(userId, message, postType string) (returnErr er } }() + // Don't send DMs to users who have turned off notifications + jiraUser, err := p.LoadJIRAUser(ji, userId) + if err != nil { + // not connected to Jira, so no need to send a DM, and no need to report an error + return nil + } + if !jiraUser.Settings.Notifications { + return nil + } + conf := p.getConfig() channel, appErr := p.API.GetDirectChannel(userId, conf.botUserID) if appErr != nil { diff --git a/server/webhook.go b/server/webhook.go index 9a7576e5a..07a65c1fd 100644 --- a/server/webhook.go +++ b/server/webhook.go @@ -7,6 +7,7 @@ import ( "crypto/subtle" "encoding/json" "fmt" + "github.com/pkg/errors" "io" "io/ioutil" "net/http" @@ -18,6 +19,11 @@ import ( "github.com/mattermost/mattermost-server/model" ) +const ( + jiraCommentPostType = "custom_jira_comment" + jiraMentionPostType = "custom_jira_mention" +) + type JIRAWebhookIssue struct { Self string Key string @@ -84,10 +90,6 @@ type parsedJIRAWebhook struct { issueURL string } -type notifier interface { - notify(ji Instance, parsed *parsedJIRAWebhook, text string) -} - func httpWebhook(p *Plugin, w http.ResponseWriter, r *http.Request) (int, error) { if r.Method != http.MethodPost { return http.StatusMethodNotAllowed, @@ -113,45 +115,22 @@ func httpWebhook(p *Plugin, w http.ResponseWriter, r *http.Request) (int, error) secret = unescaped } - teamName := r.FormValue("team") - if teamName == "" { - return http.StatusBadRequest, - fmt.Errorf("Request URL: team is empty") - } - channelId := r.FormValue("channel") - if channelId == "" { - return http.StatusBadRequest, - fmt.Errorf("Request URL: channel is empty") - } - - user, appErr := p.API.GetUserByUsername(cfg.UserName) - if appErr != nil { - return appErr.StatusCode, fmt.Errorf(appErr.Message) - } - - channel, appErr := p.API.GetChannelByNameForTeamName(teamName, channelId, false) - if appErr != nil { - return appErr.StatusCode, fmt.Errorf(appErr.Message) - } - - initPost, err := AsSlackAttachment(r.Body) + parsed, err := parse(r.Body, nil) if err != nil { return http.StatusBadRequest, err } - post := &model.Post{ - ChannelId: channel.Id, - UserId: user.Id, - Props: map[string]interface{}{ - "from_webhook": "true", - "use_user_icon": "true", - }, + // Post the event to the subscribed channel + statusCode, err := p.postEvent(r, cfg, parsed) + if err != nil { + return statusCode, err } - initPost(post) - _, appErr = p.API.CreatePost(post) - if appErr != nil { - return appErr.StatusCode, fmt.Errorf(appErr.Message) + // Notify any affected users using a direct channel + err = p.handleNotifications(parsed) + if err != nil { + p.errorf("httpWebhook, handleNotifications: %v", err) + return http.StatusBadRequest, err } return http.StatusOK, nil @@ -291,12 +270,101 @@ func (p *parsedJIRAWebhook) fromChangeLog(issue string) (string, string) { return "", "" } -func (p *Plugin) notify(ji Instance, parsed *parsedJIRAWebhook, text string) { +// postEvent posts the event to the channel that subscribed to it +func (p *Plugin) postEvent(r *http.Request, cfg config, parsed *parsedJIRAWebhook) (int, error) { + teamName := r.FormValue("team") + if teamName == "" { + return http.StatusBadRequest, + fmt.Errorf("Request URL: team is empty") + } + + channelId := r.FormValue("channel") + if channelId == "" { + return http.StatusBadRequest, + fmt.Errorf("Request URL: channel is empty") + } + + user, appErr := p.API.GetUserByUsername(cfg.UserName) + if appErr != nil { + return appErr.StatusCode, fmt.Errorf(appErr.Message) + } + + channel, appErr := p.API.GetChannelByNameForTeamName(teamName, channelId, false) + if appErr != nil { + return appErr.StatusCode, fmt.Errorf(appErr.Message) + } + + initPost := AsSlackAttachment(parsed) + + post := &model.Post{ + ChannelId: channel.Id, + UserId: user.Id, + Props: map[string]interface{}{ + "from_webhook": "true", + "use_user_icon": "true", + }, + } + initPost(post) + + _, appErr = p.API.CreatePost(post) + if appErr != nil { + return appErr.StatusCode, fmt.Errorf(appErr.Message) + } + + return http.StatusOK, nil +} + +// handleNotifications notifies users involved in the event, if they've enabled notifications +func (p *Plugin) handleNotifications(parsed *parsedJIRAWebhook) error { + // This bothers me, to do this for every webhook event... + ji, err := p.LoadCurrentJIRAInstance() + if err != nil { + // It won't break anything if we can't find the Jira Instance here -- we just can't notify anyone. + return nil + // Alternative: + //return errors.Errorf("Failed to load current Jira instance: %v", err) + } + + switch parsed.JIRAWebhook.WebhookEvent { + case "jira:issue_updated", "jira:issue_created": + return p.handleIssueUpdatedNotifications(ji, parsed) + case "comment_created": + return p.handleCommentCreatedNotifications(ji, parsed) + default: + return nil + } +} + +func (p *Plugin) handleIssueUpdatedNotifications(ji Instance, parsed *parsedJIRAWebhook) error { + for _, change := range parsed.ChangeLog.Items { + if change.Field != "assignee" || change.ToString == "" { + return nil + } + + if parsed.assigneeUsername == "" { + return nil + } + + mattermostUserId, err := p.LoadMattermostUserId(ji, parsed.assigneeUsername) + if err != nil { + return err + } + + message := "[%s](%s) assigned you to [%s](%s)" + err = p.CreateBotDMPost(ji, mattermostUserId, fmt.Sprintf(message, parsed.authorDisplayName, parsed.authorURL, parsed.issueKey, parsed.issueURL), "custom_jira_assigned") + if err != nil { + return errors.Errorf("handleIssueUpdatedNotification failed: %v", err) + } + } + return nil +} + +func (p *Plugin) handleCommentCreatedNotifications(ji Instance, parsed *parsedJIRAWebhook) error { if parsed.authorUsername == "" { - return + return nil } - for _, u := range parseJIRAUsernamesFromText(text) { + for _, u := range parseJIRAUsernamesFromText(parsed.Comment.Body) { // don't mention the author of the text if u == parsed.authorUsername { continue @@ -308,36 +376,38 @@ func (p *Plugin) notify(ji Instance, parsed *parsedJIRAWebhook, text string) { mattermostUserId, err := p.LoadMattermostUserId(ji, u) if err != nil { - p.errorf("notify: %v", err) + p.errorf("handleCommentCreatedNotifications, LoadMattermostUserId: %v", err) continue } - err = p.CreateBotDMPost(mattermostUserId, + err = p.CreateBotDMPost(ji, mattermostUserId, fmt.Sprintf("[%s](%s) mentioned you on [%s](%s):\n>%s", - parsed.authorDisplayName, parsed.authorURL, parsed.issueKey, parsed.issueURL, text), - "custom_jira_mention") + parsed.authorDisplayName, parsed.authorURL, parsed.issueKey, parsed.issueURL, parsed.text), + jiraMentionPostType) if err != nil { - p.errorf("notify: %v", err) + p.errorf("handleCommentCreatedNotifications, CreateBotDMPost: %v", err) continue } } if parsed.assigneeUsername == parsed.authorUsername { - return + return nil } mattermostUserId, err := p.LoadMattermostUserId(ji, parsed.assigneeUsername) if err != nil { - return + return err } - err = p.CreateBotDMPost(mattermostUserId, + err = p.CreateBotDMPost(ji, mattermostUserId, fmt.Sprintf("[%s](%s) commented on [%s](%s):\n>%s", - parsed.authorDisplayName, parsed.authorURL, parsed.issueKey, parsed.issueURL, text), - "custom_jira_comment") + parsed.authorDisplayName, parsed.authorURL, parsed.issueKey, parsed.issueURL, parsed.text), + jiraCommentPostType) if err != nil { - p.errorf("notify: %v", err) + return errors.Errorf("handleCommentCreatedNotifications, CreateBotDMPost: %v", err) } + + return nil } func (p *Plugin) GetWebhookURL(teamId, channelId string) (string, error) { diff --git a/server/webhook_slack_attachment.go b/server/webhook_slack_attachment.go index 8b7ddeb6c..14fb3fe31 100644 --- a/server/webhook_slack_attachment.go +++ b/server/webhook_slack_attachment.go @@ -4,23 +4,16 @@ package main import ( - "io" - "github.com/mattermost/mattermost-server/model" ) -func AsSlackAttachment(in io.Reader) (func(post *model.Post), error) { - parsed, err := parse(in, nil) - if err != nil { - return nil, err - } - +func AsSlackAttachment(parsed *parsedJIRAWebhook) func(post *model.Post) { a := newSlackAttachment(parsed) // Return a function that adds to a post as a SlackAttachment return func(post *model.Post) { model.ParseSlackAttachment(post, []*model.SlackAttachment{a}) - }, nil + } } func newSlackAttachment(parsed *parsedJIRAWebhook) *model.SlackAttachment {