513 lines
12 KiB
Go
513 lines
12 KiB
Go
|
package discord
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestMessageFromMap(t *testing.T) {
|
||
|
t.Run("create", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageCreate), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Equal(t, "swag", message.Content)
|
||
|
assert.Equal(t, "bvisness", message.Author.Username)
|
||
|
})
|
||
|
t.Run("update", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageUpdate), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Equal(t, "swank", message.Content)
|
||
|
assert.Equal(t, "bvisness", message.Author.Username)
|
||
|
})
|
||
|
t.Run("delete", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageDelete), &m))
|
||
|
|
||
|
MessageDeleteFromMap(m)
|
||
|
})
|
||
|
t.Run("create with attachment", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageCreate_Attachment), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Len(t, message.Attachments, 1)
|
||
|
assert.Equal(t, "legobrick.png", message.Attachments[0].Filename)
|
||
|
})
|
||
|
t.Run("delete attachment", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageUpdate_Attachment), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Len(t, message.Attachments, 0)
|
||
|
})
|
||
|
t.Run("create with embed", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageCreate_Embed), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Len(t, message.Embeds, 0) // no embeds in original message
|
||
|
})
|
||
|
t.Run("update with new embeds", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageCreate_AddEmbed), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Len(t, message.Embeds, 1)
|
||
|
assert.Equal(t, "https://handmade.network/jam", *message.Embeds[0].Url)
|
||
|
})
|
||
|
t.Run("delete embeds", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testMessageCreate_DeleteEmbed), &m))
|
||
|
|
||
|
message := MessageFromMap(m, "")
|
||
|
assert.Len(t, message.Embeds, 0)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestInteractionFromMap(t *testing.T) {
|
||
|
t.Run("slash command", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testInteractionCreate_Slash), &m))
|
||
|
|
||
|
i := InteractionFromMap(m, "")
|
||
|
assert.Equal(t, "745036422834028565", i.ApplicationID)
|
||
|
assert.Equal(t, "profile", i.Data.Name)
|
||
|
assert.Equal(t, "132715550571888640", i.Data.Options[0].Value)
|
||
|
|
||
|
userID := i.Data.Options[0].Value.(string)
|
||
|
|
||
|
assert.Equal(t, "132715550571888640", i.Data.Resolved.Users[userID].ID)
|
||
|
assert.Equal(t, "132715550571888640", i.Data.Resolved.Members[userID].User.ID)
|
||
|
})
|
||
|
t.Run("user command", func(t *testing.T) {
|
||
|
var m interface{}
|
||
|
assert.Nil(t, json.Unmarshal([]byte(testInteractionCreate_User), &m))
|
||
|
|
||
|
i := InteractionFromMap(m, "")
|
||
|
assert.Equal(t, "745036422834028565", i.ApplicationID)
|
||
|
assert.Equal(t, "HMN Profile", i.Data.Name)
|
||
|
assert.Equal(t, "132715550571888640", i.Data.TargetID)
|
||
|
assert.Equal(t, "132715550571888640", i.Data.Resolved.Users[i.Data.TargetID].ID)
|
||
|
assert.Equal(t, "132715550571888640", i.Data.Resolved.Members[i.Data.TargetID].User.ID)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
const testMessageCreate = `{
|
||
|
"attachments": [],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "swag",
|
||
|
"edited_timestamp": null,
|
||
|
"embeds": [],
|
||
|
"flags": 0,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891865665160507442",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"nonce": "891865663746867200",
|
||
|
"pinned": false,
|
||
|
"referenced_message": null,
|
||
|
"timestamp": "2021-09-27T01:55:44.637000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testMessageUpdate = `{
|
||
|
"attachments": [],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "swank",
|
||
|
"edited_timestamp": "2021-09-27T01:54:00.260824+00:00",
|
||
|
"embeds": [],
|
||
|
"flags": 0,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891865088183644170",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"pinned": false,
|
||
|
"timestamp": "2021-09-27T01:53:27.075000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testMessageDelete = `{
|
||
|
"channel_id": "605598627141910556",
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891866242783248405"
|
||
|
}`
|
||
|
|
||
|
const testMessageCreate_Attachment = `{
|
||
|
"attachments": [
|
||
|
{
|
||
|
"content_type": "image/png",
|
||
|
"filename": "legobrick.png",
|
||
|
"height": 385,
|
||
|
"id": "891866614931288075",
|
||
|
"proxy_url": "https://media.discordapp.net/attachments/605598627141910556/891866614931288075/legobrick.png",
|
||
|
"size": 84148,
|
||
|
"url": "https://cdn.discordapp.com/attachments/605598627141910556/891866614931288075/legobrick.png",
|
||
|
"width": 512
|
||
|
}
|
||
|
],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "our favorite",
|
||
|
"edited_timestamp": null,
|
||
|
"embeds": [],
|
||
|
"flags": 0,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891866615161950328",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"pinned": false,
|
||
|
"referenced_message": null,
|
||
|
"timestamp": "2021-09-27T01:59:31.135000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testMessageUpdate_Attachment = `{
|
||
|
"attachments": [],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "our favorite",
|
||
|
"edited_timestamp": "2021-09-27T01:59:37.262353+00:00",
|
||
|
"embeds": [],
|
||
|
"flags": 0,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891866615161950328",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"pinned": false,
|
||
|
"timestamp": "2021-09-27T01:59:31.135000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testMessageCreate_Embed = `{
|
||
|
"attachments": [],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "https://handmade.network/jam",
|
||
|
"edited_timestamp": null,
|
||
|
"embeds": [],
|
||
|
"flags": 0,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891887149723566092",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"nonce": "891887148477710336",
|
||
|
"pinned": false,
|
||
|
"referenced_message": null,
|
||
|
"timestamp": "2021-09-27T03:21:06.956000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testMessageCreate_AddEmbed = `{
|
||
|
"channel_id": "605598627141910556",
|
||
|
"embeds": [
|
||
|
{
|
||
|
"description": "A one-week jam to bring a fresh perspective to old ideas. September 27 - October 3 on Handmade Network.",
|
||
|
"provider": {
|
||
|
"name": "Handmade.Network"
|
||
|
},
|
||
|
"thumbnail": {
|
||
|
"height": 630,
|
||
|
"proxy_url": "https://images-ext-2.discordapp.net/external/kqIj9PXmxlWUFDygt_2yMf5xKWEo9avdWs0gQcN0l2s/%3Fv%3D1632704138/https/handmade.network/public/wheeljam/opengraph.png",
|
||
|
"url": "https://handmade.network/public/wheeljam/opengraph.png?v=1632704138",
|
||
|
"width": 632
|
||
|
},
|
||
|
"type": "link",
|
||
|
"url": "https://handmade.network/jam"
|
||
|
}
|
||
|
],
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891887149723566092"
|
||
|
}`
|
||
|
|
||
|
const testMessageCreate_DeleteEmbed = `{
|
||
|
"attachments": [],
|
||
|
"author": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
},
|
||
|
"channel_id": "605598627141910556",
|
||
|
"components": [],
|
||
|
"content": "https://handmade.network/jam",
|
||
|
"edited_timestamp": null,
|
||
|
"embeds": [],
|
||
|
"flags": 4,
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891887149723566092",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"hoisted_role": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
},
|
||
|
"mention_everyone": false,
|
||
|
"mention_roles": [],
|
||
|
"mentions": [],
|
||
|
"pinned": false,
|
||
|
"timestamp": "2021-09-27T03:21:06.956000+00:00",
|
||
|
"tts": false,
|
||
|
"type": 0
|
||
|
}`
|
||
|
|
||
|
const testInteractionCreate_Slash = `{
|
||
|
"application_id": "745036422834028565",
|
||
|
"channel_id": "605598627141910556",
|
||
|
"data": {
|
||
|
"id": "891773437335462049",
|
||
|
"name": "profile",
|
||
|
"options": [
|
||
|
{
|
||
|
"name": "user",
|
||
|
"type": 6,
|
||
|
"value": "132715550571888640"
|
||
|
}
|
||
|
],
|
||
|
"resolved": {
|
||
|
"members": {
|
||
|
"132715550571888640": {
|
||
|
"avatar": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"permissions": "1099511627775",
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
"users": {
|
||
|
"132715550571888640": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"type": 1
|
||
|
},
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891863243960750120",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"permissions": "1099511627775",
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
],
|
||
|
"user": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
}
|
||
|
},
|
||
|
"token": "<redacted>",
|
||
|
"type": 2,
|
||
|
"version": 1
|
||
|
}`
|
||
|
|
||
|
const testInteractionCreate_User = `{
|
||
|
"application_id": "745036422834028565",
|
||
|
"channel_id": "605598627141910556",
|
||
|
"data": {
|
||
|
"id": "891856083914752031",
|
||
|
"name": "HMN Profile",
|
||
|
"resolved": {
|
||
|
"members": {
|
||
|
"132715550571888640": {
|
||
|
"avatar": null,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"permissions": "1099511627775",
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
"users": {
|
||
|
"132715550571888640": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"target_id": "132715550571888640",
|
||
|
"type": 2
|
||
|
},
|
||
|
"guild_id": "164936220651028480",
|
||
|
"id": "891859116543324211",
|
||
|
"member": {
|
||
|
"avatar": null,
|
||
|
"deaf": false,
|
||
|
"is_pending": false,
|
||
|
"joined_at": "2016-03-31T03:17:39.375000+00:00",
|
||
|
"mute": false,
|
||
|
"nick": null,
|
||
|
"pending": false,
|
||
|
"permissions": "1099511627775",
|
||
|
"premium_since": null,
|
||
|
"roles": [
|
||
|
"876685379770646538"
|
||
|
],
|
||
|
"user": {
|
||
|
"avatar": "1963eacbf364164efce1c597dc66aeab",
|
||
|
"discriminator": "3719",
|
||
|
"id": "132715550571888640",
|
||
|
"public_flags": 0,
|
||
|
"username": "bvisness"
|
||
|
}
|
||
|
},
|
||
|
"token": "<redacted>",
|
||
|
"type": 2,
|
||
|
"version": 1
|
||
|
}`
|