mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
fix: rework tests and add reaction tests
This commit is contained in:
@@ -19,8 +19,8 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('[automod] Run automod tests', async () => {
|
||||
it('[automod] Create a MessageSend rule for Keyword with BlockMessage action.', async () => {
|
||||
describe('Run automod tests', async () => {
|
||||
it('Create a MessageSend rule for Keyword with BlockMessage action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
@@ -51,7 +51,7 @@ describe('[automod] Run automod tests', async () => {
|
||||
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
|
||||
})
|
||||
|
||||
it('[automod] Create a MessageSend rule for Keyword with Timeout action.', async () => {
|
||||
it('Create a MessageSend rule for Keyword with Timeout action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
@@ -86,7 +86,7 @@ describe('[automod] Run automod tests', async () => {
|
||||
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
|
||||
})
|
||||
|
||||
it('[automod] Create a MessageSend rule for Keyword with BlockMessage & Timeout action.', async () => {
|
||||
it('Create a MessageSend rule for Keyword with BlockMessage & Timeout action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
@@ -125,7 +125,7 @@ describe('[automod] Run automod tests', async () => {
|
||||
await rest.deleteChannel(channel.id)
|
||||
})
|
||||
|
||||
it('[automod] Create a MessageSend rule for Keyword with SendAlertMessage action.', async () => {
|
||||
it('Create a MessageSend rule for Keyword with SendAlertMessage action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
@@ -160,7 +160,7 @@ describe('[automod] Run automod tests', async () => {
|
||||
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
|
||||
})
|
||||
|
||||
it('[automod] Create a MessageSend rule for Keyword with SendAlertMessage & Timeout action.', async () => {
|
||||
it('Create a MessageSend rule for Keyword with SendAlertMessage & Timeout action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
@@ -189,7 +189,7 @@ describe('[automod] Run automod tests', async () => {
|
||||
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
|
||||
})
|
||||
|
||||
it('[automod] Create a MessageSend rule for Keyword with BlockMessage & SendAlertMessage & Timeout action.', async () => {
|
||||
it('Create a MessageSend rule for Keyword with BlockMessage & SendAlertMessage & Timeout action.', async () => {
|
||||
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
eventType: AutoModerationEventTypes.MessageSend,
|
||||
|
||||
@@ -23,109 +23,107 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('Emoji helpers', () => {
|
||||
describe('Create and delete', () => {
|
||||
it('create an emoji', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
|
||||
describe('Create and delete emojis', () => {
|
||||
it('create an emoji', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
// delete an emoji without a reason
|
||||
it('delete an emoji without a reason', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
|
||||
|
||||
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
|
||||
})
|
||||
|
||||
// delete an emoji with a reason
|
||||
it('delete an emoji with a reason', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!, 'with a reason')
|
||||
|
||||
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
|
||||
})
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
|
||||
})
|
||||
|
||||
describe('edit and get', () => {
|
||||
let emoji: Camelize<DiscordEmoji> & { id: string }
|
||||
|
||||
beforeEach(async () => {
|
||||
emoji = (await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})) as Camelize<DiscordEmoji> & { id: string }
|
||||
// delete an emoji without a reason
|
||||
it('delete an emoji without a reason', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id)
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
|
||||
|
||||
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
|
||||
})
|
||||
|
||||
// delete an emoji with a reason
|
||||
it('delete an emoji with a reason', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
// edit an emoji name
|
||||
it('Edit an emoji name', async () => {
|
||||
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
|
||||
name: 'edited',
|
||||
})
|
||||
// Assertions
|
||||
expect(emoji.id).to.be.exist
|
||||
|
||||
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!, 'with a reason')
|
||||
|
||||
expect(edited.name).to.equal('edited')
|
||||
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
|
||||
})
|
||||
})
|
||||
|
||||
describe('Edit and get emojis', () => {
|
||||
let emoji: Camelize<DiscordEmoji> & { id: string }
|
||||
|
||||
beforeEach(async () => {
|
||||
emoji = (await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})) as Camelize<DiscordEmoji> & { id: string }
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await rest.deleteEmoji(e2ecache.guild.id, emoji.id)
|
||||
})
|
||||
|
||||
// edit an emoji name
|
||||
it('Edit an emoji name', async () => {
|
||||
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
|
||||
name: 'edited',
|
||||
})
|
||||
|
||||
// edit an emoji roles
|
||||
it("Edit an emoji's roles", async () => {
|
||||
const role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: 'dd-test-emoji',
|
||||
})
|
||||
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
|
||||
roles: [role.id],
|
||||
})
|
||||
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
|
||||
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
expect(edited.name).to.equal('edited')
|
||||
})
|
||||
|
||||
expect(edited.roles?.length).to.equal(1)
|
||||
// edit an emoji roles
|
||||
it("Edit an emoji's roles", async () => {
|
||||
const role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: 'dd-test-emoji',
|
||||
})
|
||||
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
|
||||
roles: [role.id],
|
||||
})
|
||||
|
||||
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
|
||||
// get an emoji
|
||||
it('get an emoji', async () => {
|
||||
const exists = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
expect(exists.id).to.be.exist
|
||||
expect(emoji.id).to.equal(exists.id)
|
||||
})
|
||||
expect(edited.roles?.length).to.equal(1)
|
||||
})
|
||||
|
||||
it('get all guild emojis', async () => {
|
||||
await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf2',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
// get an emoji
|
||||
it('get an emoji', async () => {
|
||||
const exists = await rest.getEmoji(e2ecache.guild.id, emoji.id)
|
||||
expect(exists.id).to.be.exist
|
||||
expect(emoji.id).to.equal(exists.id)
|
||||
})
|
||||
|
||||
const exists = await rest.getEmojis(e2ecache.guild.id)
|
||||
expect(exists.length).to.greaterThan(1)
|
||||
it('get all guild emojis', async () => {
|
||||
await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'blamewolf2',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
|
||||
roles: [],
|
||||
})
|
||||
|
||||
const exists = await rest.getEmojis(e2ecache.guild.id)
|
||||
expect(exists.length).to.greaterThan(1)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,107 +1,113 @@
|
||||
import { ChannelTypes } from '@discordeno/types'
|
||||
import { logger } from '@discordeno/utils'
|
||||
import chai, { expect } from 'chai'
|
||||
import chaiAsPromised from 'chai-as-promised'
|
||||
import { after, describe, it } from 'mocha'
|
||||
import { rest } from './utils.js'
|
||||
import { describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
chai.use(chaiAsPromised)
|
||||
|
||||
describe('Guild helpers', async () => {
|
||||
// Delete the oldest guild(most likely to have finished tests).
|
||||
before(async () => {
|
||||
if (!e2ecache.guild) {
|
||||
e2ecache.guild = await rest.createGuild({
|
||||
name: 'Discordeno-test',
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
after(async () => {
|
||||
if (rest.invalidBucket.timeoutId) clearTimeout(rest.invalidBucket.timeoutId)
|
||||
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
|
||||
e2ecache.deletedGuild = true
|
||||
await rest.deleteGuild(e2ecache.guild.id)
|
||||
}
|
||||
})
|
||||
|
||||
describe('Manage Guilds', async () => {
|
||||
it('Create and delete a guild', async () => {
|
||||
const guild = await rest.createGuild({
|
||||
name: 'Discordeno-test',
|
||||
})
|
||||
expect(guild.id).to.be.exist
|
||||
expect(e2ecache.guild.id).to.be.exist
|
||||
await rest.deleteGuild(guild.id)
|
||||
// Make sure the guild was deleted
|
||||
await expect(rest.getGuild(guild.id)).to.eventually.rejected
|
||||
const deleted = await rest.getGuild(guild.id).catch(() => undefined)
|
||||
expect(deleted).to.be.equal(undefined)
|
||||
})
|
||||
|
||||
describe('Edit and get', async () => {
|
||||
const guild = await rest.createGuild({
|
||||
name: 'Discordeno-test',
|
||||
it('Get a guild', async () => {
|
||||
const exists = await rest.getGuild(e2ecache.guild.id)
|
||||
expect(exists).to.be.exist
|
||||
expect(exists.id).to.be.exist
|
||||
expect(exists.name).to.equal(e2ecache.guild.name)
|
||||
})
|
||||
|
||||
it('AFK channel', async () => {
|
||||
const voiceChannel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'edit-guild-test',
|
||||
type: ChannelTypes.GuildVoice,
|
||||
})
|
||||
expect(voiceChannel.id).to.be.exist
|
||||
|
||||
after(async () => {
|
||||
await rest.deleteGuild(guild.id)
|
||||
const edited = await rest.editGuild(e2ecache.guild.id, {
|
||||
name: 'Discordeno-test-edited',
|
||||
afkChannelId: voiceChannel.id,
|
||||
// afkTimeout: 5,
|
||||
})
|
||||
expect(edited.name).to.equal('Discordeno-test-edited')
|
||||
expect(e2ecache.guild.afkChannelId).to.not.equal(voiceChannel.id)
|
||||
expect(edited.afkChannelId).to.equal(voiceChannel.id)
|
||||
// expect(guild.afkTimeout).to.equal(0);
|
||||
// expect(edited.afkTimeout).to.equal(5);
|
||||
|
||||
it('Get a guild', async () => {
|
||||
const exists = await rest.getGuild(guild.id)
|
||||
expect(exists).to.be.exist
|
||||
expect(exists.id).to.be.exist
|
||||
expect(exists.name).to.equal(guild.name)
|
||||
const edited2 = await rest.editGuild(e2ecache.guild.id, { afkChannelId: null })
|
||||
expect(edited.afkChannelId).to.not.equal(edited2.afkChannelId)
|
||||
// Use boolean to check both undefined or null
|
||||
expect(!!edited2.afkChannelId).to.equal(false)
|
||||
|
||||
await rest.deleteChannel(voiceChannel.id)
|
||||
})
|
||||
|
||||
// it("Edit a guild's afk settings", async () => {
|
||||
|
||||
// });
|
||||
|
||||
it('Get audit logs', async () => {
|
||||
const auditLogs = await rest.getAuditLog(e2ecache.guild.id, { limit: 1 })
|
||||
expect(auditLogs.auditLogEntries.length).to.be.exist
|
||||
})
|
||||
|
||||
// Get available voice regions
|
||||
it('Get available voice regions', async () => {
|
||||
const regions = await rest.getVoiceRegions(e2ecache.guild.id)
|
||||
expect(regions.length).to.be.exist
|
||||
})
|
||||
|
||||
it('Banning members', async () => {
|
||||
await rest.banMember(e2ecache.guild.id, '379643682984296448', {
|
||||
reason: 'Blame Wolf',
|
||||
deleteMessageSeconds: 604800,
|
||||
})
|
||||
const fetchedBan = await rest.getBan(e2ecache.guild.id, '379643682984296448')
|
||||
|
||||
it('Edit a guild', async () => {
|
||||
const voiceChannel = await rest.createChannel(guild.id, {
|
||||
name: 'edit-guild-test',
|
||||
type: ChannelTypes.GuildVoice,
|
||||
})
|
||||
expect(voiceChannel.id).to.be.exist
|
||||
// Assertions
|
||||
expect(fetchedBan).to.be.exist
|
||||
expect(fetchedBan.user.id).to.equal('379643682984296448')
|
||||
|
||||
const edited = await rest.editGuild(guild.id, {
|
||||
name: 'Discordeno-test-edited',
|
||||
afkChannelId: voiceChannel.id,
|
||||
// afkTimeout: 5,
|
||||
})
|
||||
expect(edited.name).to.equal('Discordeno-test-edited')
|
||||
expect(guild.afkChannelId).to.not.equal(voiceChannel.id)
|
||||
expect(edited.afkChannelId).to.equal(voiceChannel.id)
|
||||
// expect(guild.afkTimeout).to.equal(0);
|
||||
// expect(edited.afkTimeout).to.equal(5);
|
||||
await rest.banMember(e2ecache.guild.id, '416477607966670869')
|
||||
const fetchedBans = await rest.getBans(e2ecache.guild.id)
|
||||
|
||||
it("Reset a guild's afk channel id", async () => {
|
||||
const edited2 = await rest.editGuild(guild.id, { afkChannelId: null })
|
||||
expect(edited.afkChannelId).to.not.equal(edited2.afkChannelId)
|
||||
expect(edited2.afkChannelId).to.equal(undefined)
|
||||
})
|
||||
// Assertions
|
||||
expect(fetchedBans).to.be.exist
|
||||
expect(fetchedBans.length).to.greaterThanOrEqual(2)
|
||||
|
||||
await rest.deleteChannel(voiceChannel.id)
|
||||
})
|
||||
await rest.unbanMember(e2ecache.guild.id, '416477607966670869')
|
||||
await rest.unbanMember(e2ecache.guild.id, '379643682984296448')
|
||||
|
||||
// it("Edit a guild's afk settings", async () => {
|
||||
const unbanned = await rest.getBans(e2ecache.guild.id)
|
||||
expect(unbanned.length).to.equal(0)
|
||||
})
|
||||
|
||||
// });
|
||||
|
||||
it('Get audit logs', async () => {
|
||||
const auditLogs = await rest.getAuditLog(guild.id, { limit: 1 })
|
||||
expect(auditLogs.auditLogEntries.length).to.be.exist
|
||||
})
|
||||
|
||||
// Get available voice regions
|
||||
it('Get available voice regions', async () => {
|
||||
const regions = await rest.getVoiceRegions(guild.id)
|
||||
expect(regions.length).to.be.exist
|
||||
})
|
||||
|
||||
// Get a guild ban
|
||||
it('Get a guild ban', async () => {
|
||||
await rest.banMember(guild.id, 379643682984296448n)
|
||||
|
||||
const fetchedBan = await rest.getBan(guild.id, 379643682984296448n)
|
||||
|
||||
// Assertions
|
||||
expect(fetchedBan).to.be.exist
|
||||
expect(fetchedBan.user.id).to.equal('379643682984296448')
|
||||
|
||||
// Get multiple guild bans
|
||||
it('Get multiple guild bans', async () => {
|
||||
await rest.banMember(guild.id, 416477607966670869n)
|
||||
await rest.banMember(guild.id, 635383782576357407n)
|
||||
|
||||
const fetchedBans = await rest.getBans(guild.id)
|
||||
|
||||
// Assertions
|
||||
expect(fetchedBans).to.be.exist
|
||||
})
|
||||
})
|
||||
|
||||
// Get vanity URL
|
||||
it('Get vanity URL', async () => {
|
||||
await expect(rest.getVanityUrl(guild.id)).to.eventually.rejected
|
||||
})
|
||||
// Get vanity URL
|
||||
it('Get vanity URL', async () => {
|
||||
await expect(rest.getVanityUrl(e2ecache.guild.id)).to.eventually.rejected
|
||||
})
|
||||
})
|
||||
|
||||
@@ -4,13 +4,6 @@ import { describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
chai.use(chaiAsPromised)
|
||||
|
||||
// THIS IS WOLF, IF ANYTHING BREAKS BLAME HIM!
|
||||
const wolfID = 270273690074087427n
|
||||
// THIS IS IAN, HE PLAY GOLDEN SUN. BAN HIM BEFORE HE MAKES US ADDICTED TO IT!!!
|
||||
const ianID = 90339695967350784n
|
||||
// THIS IS LTS, HE PLAY TETRIS EFFECT: CONNECTED. BAN HIM BEFORE HE MAKES US ADDICTED TO IT!!!
|
||||
const ltsID = 379643682984296448n
|
||||
|
||||
before(async () => {
|
||||
if (!e2ecache.guild) {
|
||||
e2ecache.guild = await rest.createGuild({
|
||||
@@ -27,97 +20,51 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('[member] Member tests', async () => {
|
||||
describe('Get members', () => {
|
||||
it("Fetches the bot and compares the bot's id with the fetched member's id", async () => {
|
||||
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
|
||||
expect(member?.user.id).to.exist
|
||||
expect(member?.user.id).to.equal(rest.applicationId.toString())
|
||||
})
|
||||
|
||||
it('Gets a member list and checks if the bot is in the member list', async () => {
|
||||
const members = await rest.getMembers(e2ecache.communityGuildId, {
|
||||
limit: 10,
|
||||
})
|
||||
expect(members.some((m) => m.user.id === rest.applicationId.toString())).to.equal(true)
|
||||
})
|
||||
|
||||
// fetch a single member by id
|
||||
it('fetch a single member by id', async () => {
|
||||
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
|
||||
|
||||
expect(member?.user.id).to.exist
|
||||
})
|
||||
describe('Member tests', () => {
|
||||
it("Fetches the bot and compares the bot's id with the fetched member's id", async () => {
|
||||
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
|
||||
expect(member?.user.id).to.exist
|
||||
expect(member?.user.id).to.equal(rest.applicationId.toString())
|
||||
})
|
||||
|
||||
describe('Ban member', () => {
|
||||
// ban user from guild without reason
|
||||
describe('ban user from guild without reason', async () => {
|
||||
await rest.banMember(e2ecache.communityGuildId, wolfID)
|
||||
|
||||
// get a single user's ban
|
||||
it("get a single user's ban", async () => {
|
||||
expect(await rest.getBan(e2ecache.communityGuildId, wolfID)).to.exist
|
||||
})
|
||||
})
|
||||
|
||||
// ban member from guild with a reason
|
||||
it('ban member from guild with a reason', async () => {
|
||||
await rest.banMember(e2ecache.communityGuildId, ianID, {
|
||||
reason: 'Blame Wolf',
|
||||
})
|
||||
expect(await rest.getBan(e2ecache.communityGuildId, ianID)).to.exist
|
||||
})
|
||||
|
||||
// ban member from guild and delete messages
|
||||
it('ban member from guild and delete messages', async () => {
|
||||
await rest.banMember(e2ecache.communityGuildId, ltsID, {
|
||||
deleteMessageSeconds: 604800,
|
||||
})
|
||||
expect(await rest.getBan(e2ecache.communityGuildId, ltsID)).to.exist
|
||||
})
|
||||
|
||||
// get bans on a server
|
||||
it('get bans on a server', async () => {
|
||||
const bans = await rest.getBans(e2ecache.communityGuildId)
|
||||
expect(bans.length).to.greaterThan(1)
|
||||
})
|
||||
|
||||
// unban member from guild
|
||||
it('unban member from guild', async () => {
|
||||
await Promise.all([rest.unbanMember(e2ecache.communityGuildId, wolfID), rest.unbanMember(e2ecache.communityGuildId, ianID)])
|
||||
|
||||
await expect(rest.getBan(e2ecache.communityGuildId, wolfID)).to.eventually.rejected
|
||||
it('Gets a member list and checks if the bot is in the member list', async () => {
|
||||
const members = await rest.getMembers(e2ecache.communityGuildId, {
|
||||
limit: 10,
|
||||
})
|
||||
expect(members.some((m) => m.user.id === rest.applicationId.toString())).to.equal(true)
|
||||
})
|
||||
|
||||
describe('nickname', () => {
|
||||
it("Edit a bot's nickname", async () => {
|
||||
const nick = 'lts20050703'
|
||||
const member = await rest.editBotMember(e2ecache.communityGuildId, {
|
||||
nick,
|
||||
})
|
||||
expect(member.nick).to.equal(nick)
|
||||
// fetch a single member by id
|
||||
it('Fetch a single member by id', async () => {
|
||||
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
|
||||
|
||||
// Change nickname back
|
||||
const member2 = await rest.editBotMember(e2ecache.communityGuildId, {
|
||||
nick: null,
|
||||
})
|
||||
expect(member2.nick).to.null
|
||||
})
|
||||
expect(member?.user.id).to.exist
|
||||
})
|
||||
|
||||
// waiting for channel
|
||||
describe.skip('DM', () => {
|
||||
it('[member] get dm channel and send a message', async () => {
|
||||
// Itoh Alt ID
|
||||
const channel = await rest.getDmChannel(750661528360845322n)
|
||||
expect(channel?.id).to.exist
|
||||
|
||||
const message = await rest.sendMessage(channel.id, {
|
||||
content: 'https://i.imgur.com/doG55NR.png',
|
||||
})
|
||||
expect(message?.content).to.exist
|
||||
it("Edit a bot's nickname", async () => {
|
||||
const nick = 'lts20050703'
|
||||
const member = await rest.editBotMember(e2ecache.communityGuildId, {
|
||||
nick,
|
||||
})
|
||||
expect(member.nick).to.equal(nick)
|
||||
|
||||
// Change nickname back
|
||||
const member2 = await rest.editBotMember(e2ecache.communityGuildId, {
|
||||
nick: null,
|
||||
})
|
||||
expect(member2.nick).to.null
|
||||
})
|
||||
|
||||
it('Send a direct message', async () => {
|
||||
// DM test only on dd unit testing bot
|
||||
if (rest.applicationId.toString() !== "770381961553510451") return;
|
||||
// Itoh Alt ID
|
||||
const channel = await rest.getDmChannel(750661528360845322n)
|
||||
expect(channel?.id).to.exist
|
||||
|
||||
const message = await rest.sendMessage(channel.id, {
|
||||
content: 'https://i.imgur.com/doG55NR.png',
|
||||
})
|
||||
expect(message?.content).to.exist
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { urlToBase64, processReactionString } from '@discordeno/utils'
|
||||
import { expect } from 'chai'
|
||||
import { describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
@@ -18,111 +19,136 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('[rest] Message related tests', () => {
|
||||
describe('Send a message', () => {
|
||||
it('With content', async () => {
|
||||
const message = await rest.sendMessage('1041029705790402611', { content: 'testing rate limit manager' })
|
||||
expect(message.content).to.be.equal('testing rate limit manager')
|
||||
})
|
||||
describe('Send a message', () => {
|
||||
it('With content', async () => {
|
||||
const message = await rest.sendMessage('1041029705790402611', { content: 'testing rate limit manager' })
|
||||
expect(message.content).to.be.equal('testing rate limit manager')
|
||||
|
||||
it('With an image', async () => {
|
||||
const image = await fetch('https://cdn.discordapp.com/avatars/270010330782892032/d031ea881688526d1ae235fd2843e53c.jpg?size=2048')
|
||||
.then(async (res) => await res.blob())
|
||||
.catch(() => undefined)
|
||||
expect(image).to.not.be.undefined
|
||||
if (!image) throw new Error('Was not able to fetch the image.')
|
||||
const edited = await rest.editMessage(message.channelId, message.id, { content: 'testing rate limit manager edited' })
|
||||
expect(message.content).to.be.not.equal(edited.content)
|
||||
|
||||
const message = await rest.sendMessage('1041029705790402611', { file: { blob: image, name: 'gamer' } })
|
||||
expect(message.attachments.length).to.be.greaterThan(0)
|
||||
const [attachment] = message.attachments
|
||||
|
||||
expect(attachment.filename).to.be.equal('gamer')
|
||||
})
|
||||
await rest.deleteMessage(message.channelId, message.id)
|
||||
})
|
||||
|
||||
describe('Managing reactions', async () => {
|
||||
it('Should add a unicode reaction', async () => {
|
||||
const message = await rest.sendMessage('1041029705790402611', { content: 'testing rate limit manager' })
|
||||
it('With an image', async () => {
|
||||
const image = await fetch('https://cdn.discordapp.com/avatars/270010330782892032/d031ea881688526d1ae235fd2843e53c.jpg?size=2048')
|
||||
.then(async (res) => await res.blob())
|
||||
.catch(() => undefined)
|
||||
expect(image).to.not.be.undefined
|
||||
if (!image) throw new Error('Was not able to fetch the image.')
|
||||
|
||||
await rest.addReaction(message.channelId, message.id, '📙')
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
const message = await rest.sendMessage('1041029705790402611', { file: { blob: image, name: 'gamer' } })
|
||||
expect(message.attachments.length).to.be.greaterThan(0)
|
||||
const [attachment] = message.attachments
|
||||
|
||||
it('Should delete a unicode reaction', async () => {
|
||||
await rest.deleteOwnReaction(message.channelId, message.id, '📙')
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.equal(0)
|
||||
})
|
||||
expect(attachment.filename).to.be.equal('gamer')
|
||||
})
|
||||
})
|
||||
|
||||
describe('Manage reactions', async () => {
|
||||
it('Add and delete a unicode reaction', async () => {
|
||||
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
|
||||
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
|
||||
|
||||
await rest.addReaction(message.channelId, message.id, '📙')
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
|
||||
await rest.deleteOwnReaction(message.channelId, message.id, '📙')
|
||||
const unreacted = await rest.getMessage(message.channelId, message.id)
|
||||
// Use boolean comparison because when its 0 length discord sends undefined
|
||||
expect(!!unreacted.reactions?.length).to.be.equal(false)
|
||||
})
|
||||
|
||||
it('Add and delete a custom reaction', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'discordeno',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
|
||||
})
|
||||
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
|
||||
|
||||
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
|
||||
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
|
||||
|
||||
// it('Should add a custom reaction', async () => {
|
||||
// const message = await rest.sendMessage('1041029705790402611', { content: 'testing rate limit manager' })
|
||||
await rest.addReaction(message.channelId, message.id, emojiCode)
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
|
||||
// await rest.addReaction(message.channelId, message.id, '<:discordeno:785403373817823272>')
|
||||
// const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
// expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
const reactions = await rest.getReactions(reactionChannel.id, message.id, processReactionString(emojiCode))
|
||||
expect(reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
|
||||
// it('Should delete a custom reaction', async () => {
|
||||
// await rest.deleteOwnReaction(message.channelId, message.id, '<:discordeno:785403373817823272>')
|
||||
// const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
// expect(reacted.reactions?.length).to.be.equal(0)
|
||||
// })
|
||||
// })
|
||||
await rest.deleteOwnReaction(message.channelId, message.id, emojiCode)
|
||||
const unreacted = await rest.getMessage(message.channelId, message.id)
|
||||
// Use boolean comparison because when its 0 length discord sends undefined
|
||||
expect(!!unreacted.reactions?.length).to.be.equal(false)
|
||||
})
|
||||
|
||||
describe('Rate limit manager testing', () => {
|
||||
it('Send 10 messages to 1 channel', async () => {
|
||||
await Promise.all(
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(async (i) => {
|
||||
await rest.sendMessage('1041029705790402611', { content: `10 messages to 1 channel testing rate limit manager ${i}` })
|
||||
}),
|
||||
)
|
||||
it('Add several reactions with random order and delete all of them', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'discordeno',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
|
||||
})
|
||||
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
|
||||
|
||||
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
|
||||
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
|
||||
|
||||
await rest.addReactions(message.channelId, message.id, [emojiCode, '📙'])
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
|
||||
await rest.deleteReactionsAll(message.channelId, message.id)
|
||||
const unreacted = await rest.getMessage(message.channelId, message.id)
|
||||
// Use boolean comparison because when its 0 length discord sends undefined
|
||||
expect(!!unreacted.reactions?.length).to.equal(false)
|
||||
})
|
||||
|
||||
// TODO: Make this dynamic when we can create channels
|
||||
const spamChannelIds = [
|
||||
'1041029705790402611',
|
||||
'1041029706838966393',
|
||||
'1041029707459731586',
|
||||
'1041029708004995199',
|
||||
'1041029708453789766',
|
||||
'1041029709049385010',
|
||||
'1041029709632377003',
|
||||
'1041029710227976313',
|
||||
'1041029710764834856',
|
||||
'1041029711414956202',
|
||||
'1041029712153149524',
|
||||
'1041029712933306459',
|
||||
'1041029713566646313',
|
||||
'1041029714254508042',
|
||||
'1041029714921406555',
|
||||
'1041029716334870629',
|
||||
'1041029717127614636',
|
||||
'1041029717689647114',
|
||||
'1041029718603997214',
|
||||
'1041029719925215302',
|
||||
'1041029721179308082',
|
||||
'1041029721988812860',
|
||||
'1041029722466943037',
|
||||
'1041029723217743964',
|
||||
'1041029723872034826',
|
||||
'1041029724492804156',
|
||||
'1041029725117743144',
|
||||
'1041029725818212474',
|
||||
'1041029726531227741',
|
||||
'1041029727231684638',
|
||||
]
|
||||
|
||||
it('Send 10 messages to 10 channels', async () => {
|
||||
await Promise.all(
|
||||
spamChannelIds.map(async (channelId) => {
|
||||
await Promise.all(
|
||||
[...Array(10).keys()].map(async (_, index) => {
|
||||
await rest.sendMessage(channelId, { content: `testing rate limit manager ${index}` })
|
||||
}),
|
||||
)
|
||||
}),
|
||||
)
|
||||
it('Add several reactions in an order and delete emoji reaction', async () => {
|
||||
const emoji = await rest.createEmoji(e2ecache.guild.id, {
|
||||
name: 'discordeno',
|
||||
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
|
||||
})
|
||||
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
|
||||
|
||||
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
|
||||
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
|
||||
|
||||
await rest.addReactions(message.channelId, message.id, [emojiCode, '📙'], true)
|
||||
const reacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(reacted.reactions?.length).to.be.greaterThanOrEqual(1)
|
||||
|
||||
await rest.deleteReactionsEmoji(message.channelId, message.id, emojiCode)
|
||||
const unreacted = await rest.getMessage(message.channelId, message.id)
|
||||
expect(unreacted.reactions?.length).to.greaterThanOrEqual(1)
|
||||
|
||||
await rest.deleteUserReaction(message.channelId, message.id, rest.applicationId.toString(), '📙')
|
||||
const noreacted = await rest.getMessage(message.channelId, message.id)
|
||||
// Use boolean comparison because when its 0 length discord sends undefined
|
||||
expect(!!noreacted.reactions?.length).to.equal(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('Rate limit manager testing', () => {
|
||||
it('Send 10 messages to 1 channel', async () => {
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'rate-limit-1' })
|
||||
await Promise.all(
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(async (i) => {
|
||||
await rest.sendMessage(channel.id, { content: `10 messages to 1 channel testing rate limit manager ${i}` })
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it('Send 10 messages to 10 channels', async () => {
|
||||
await Promise.all(
|
||||
[...Array(10).keys()].map(async () => {
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'rate-limit-x' })
|
||||
|
||||
await Promise.all(
|
||||
[...Array(10).keys()].map(async (_, index) => {
|
||||
await rest.sendMessage(channel.id, { content: `testing rate limit manager ${index}` })
|
||||
}),
|
||||
)
|
||||
}),
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { Camelize, DiscordRole } from '@discordeno/types'
|
||||
import { calculateBits } from '@discordeno/utils'
|
||||
import { expect } from 'chai'
|
||||
import { afterEach, before, beforeEach, describe, it } from 'mocha'
|
||||
import { before, describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
|
||||
before(async () => {
|
||||
@@ -19,7 +18,7 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('[role] Role tests', async () => {
|
||||
describe('Role tests', async () => {
|
||||
// Create a role with a reason
|
||||
it('Create a role with a reason', async () => {
|
||||
const role = await rest.createRole(
|
||||
@@ -29,10 +28,7 @@ describe('[role] Role tests', async () => {
|
||||
},
|
||||
'test reason',
|
||||
)
|
||||
|
||||
expect(role.id).to.exist
|
||||
|
||||
await rest.deleteRole(e2ecache.guild.id, role.id)
|
||||
})
|
||||
|
||||
// Create a role without a reason
|
||||
@@ -40,10 +36,7 @@ describe('[role] Role tests', async () => {
|
||||
const role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
|
||||
expect(role.id).to.exist
|
||||
|
||||
await rest.deleteRole(e2ecache.guild.id, role.id)
|
||||
})
|
||||
|
||||
// Delete a role
|
||||
@@ -57,136 +50,57 @@ describe('[role] Role tests', async () => {
|
||||
})
|
||||
|
||||
// Edit a role
|
||||
describe('Edit a role', async () => {
|
||||
let role: Camelize<DiscordRole>
|
||||
|
||||
beforeEach(async () => {
|
||||
role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
it('Edit a role', async () => {
|
||||
const role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await rest.deleteRole(e2ecache.guild.id, role.id)
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
name: 'test role 4',
|
||||
color: 0x0000ff,
|
||||
hoist: true,
|
||||
mentionable: true,
|
||||
permissions: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
|
||||
})
|
||||
expect(edited.name).to.equal('test role 4')
|
||||
expect(edited.color).to.equal(0x0000ff)
|
||||
expect(edited.hoist).to.equal(true)
|
||||
expect(edited.mentionable).to.equal(true)
|
||||
expect(edited.permissions.toString()).to.equal(calculateBits(['SEND_MESSAGES', 'VIEW_CHANNEL']))
|
||||
|
||||
// Edit the roles name
|
||||
it('Edit the roles name', async () => {
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
name: 'test role 4',
|
||||
})
|
||||
expect(edited.name).to.equal('test role 4')
|
||||
await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
hoist: false,
|
||||
mentionable: false,
|
||||
})
|
||||
const roles = await rest.getRoles(e2ecache.guild.id)
|
||||
const unedited = roles.find((r) => r.id === role.id)
|
||||
|
||||
// Edit the roles color
|
||||
it('Edit the roles color', async () => {
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
color: 0x0000ff,
|
||||
})
|
||||
expect(edited.color).to.equal(0x0000ff)
|
||||
})
|
||||
|
||||
// Edit the roles hoist
|
||||
it('Edit the roles hoist', async () => {
|
||||
expect(role.hoist).to.equal(false)
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
hoist: true,
|
||||
})
|
||||
expect(edited.hoist).to.equal(true)
|
||||
})
|
||||
|
||||
// Make hoist false
|
||||
it('Make hoist false', async () => {
|
||||
await rest.editRole(e2ecache.guild.id, role.id, { hoist: true })
|
||||
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
hoist: false,
|
||||
})
|
||||
expect(edited.hoist).to.equal(false)
|
||||
})
|
||||
|
||||
// Edit the roles mentionable
|
||||
it('Edit the roles mentionable', async () => {
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
mentionable: true,
|
||||
})
|
||||
expect(edited.mentionable).to.equal(true)
|
||||
})
|
||||
|
||||
// Make mentionable false
|
||||
it('Make mentionable false', async () => {
|
||||
await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
mentionable: true,
|
||||
})
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
mentionable: false,
|
||||
})
|
||||
expect(edited.mentionable).to.equal(false)
|
||||
})
|
||||
|
||||
// Edit the roles permissions
|
||||
it('Edit the roles permissions', async () => {
|
||||
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
|
||||
permissions: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
|
||||
})
|
||||
expect(edited.permissions.toString()).to.equal(calculateBits(['SEND_MESSAGES', 'VIEW_CHANNEL']))
|
||||
})
|
||||
expect(unedited?.hoist).to.equal(false)
|
||||
expect(unedited?.mentionable).to.equal(false)
|
||||
})
|
||||
|
||||
describe('Remove a role from a user', async () => {
|
||||
let role: Camelize<DiscordRole>
|
||||
|
||||
beforeEach(async () => {
|
||||
role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
it('Add and remove role from user', async () => {
|
||||
const role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
|
||||
// afterEach(async () => {
|
||||
// await rest.deleteRole(e2ecache.guild.id, role.id)
|
||||
// })
|
||||
// Assign the role to the user
|
||||
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member?.roles.includes(role.id)).to.equal(true)
|
||||
|
||||
it('without a reason', async () => {
|
||||
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
// console.log('member', member.errors.userId.Errors)
|
||||
expect(member?.roles.includes(role.id)).to.equal(false)
|
||||
})
|
||||
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
const removed = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
// console.log('member', member.errors.userId.Errors)
|
||||
expect(removed?.roles.includes(role.id)).to.equal(false)
|
||||
|
||||
it('with a reason', async () => {
|
||||
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
|
||||
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member?.roles.includes(role.id)).to.equal(false)
|
||||
})
|
||||
})
|
||||
// With a reason
|
||||
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
|
||||
const member2 = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member2?.roles.includes(role.id)).to.equal(true)
|
||||
|
||||
describe('Assign a role to a user', async () => {
|
||||
let role: Camelize<DiscordRole>
|
||||
|
||||
beforeEach(async () => {
|
||||
role = await rest.createRole(e2ecache.guild.id, {
|
||||
name: `test role ${Date.now()}`,
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
await rest.deleteRole(e2ecache.guild.id, role.id)
|
||||
})
|
||||
|
||||
it('Without a reason.', async () => {
|
||||
// Assign the role to the user
|
||||
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id)
|
||||
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member?.roles.includes(role.id)).to.equal(true)
|
||||
})
|
||||
|
||||
// Add the role to the user with a reason
|
||||
it('With a reason', async () => {
|
||||
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
|
||||
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member?.roles.includes(role.id)).to.equal(true)
|
||||
})
|
||||
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
|
||||
const member3 = await rest.getMember(e2ecache.guild.id, rest.applicationId)
|
||||
expect(member3?.roles.includes(role.id)).to.equal(false)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import type { Camelize, DiscordSticker } from '@discordeno/types'
|
||||
import { StickerFormatTypes } from '@discordeno/types'
|
||||
import chai, { expect } from 'chai'
|
||||
import chaiAsPromised from 'chai-as-promised'
|
||||
import { afterEach, beforeEach, describe, it } from 'mocha'
|
||||
import { describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
chai.use(chaiAsPromised)
|
||||
|
||||
@@ -23,113 +22,67 @@ after(async () => {
|
||||
})
|
||||
|
||||
// waiting for channel
|
||||
describe('[stickers] Sticker helpers', async () => {
|
||||
describe('Sticker tests', async () => {
|
||||
it('Can get a sticker', async () => {
|
||||
const sticker = await rest.getSticker(749054660769218631n)
|
||||
expect(sticker.name).to.equal('Wave')
|
||||
})
|
||||
|
||||
describe('Guild sticker helpers', () => {
|
||||
describe('Create and delete guild sticker helpers', () => {
|
||||
it('Can create a sticker', async () => {
|
||||
const sticker = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
|
||||
expect(sticker.name).to.equal('sticker name')
|
||||
expect(sticker.description).to.equal('sticker description')
|
||||
expect(sticker.tags).to.equal('sticker tags')
|
||||
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
})
|
||||
const message = await rest.sendMessage(channel.id, {
|
||||
stickerIds: [sticker.id],
|
||||
})
|
||||
|
||||
expect(message.stickerItems?.[0].formatType).to.equal(StickerFormatTypes.Png)
|
||||
expect(message.stickerItems?.[0].id).to.equal(sticker.id)
|
||||
expect(message.stickerItems?.[0].name).to.equal(sticker.name)
|
||||
|
||||
await rest.deleteGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
await rest.deleteChannel(channel.id)
|
||||
})
|
||||
|
||||
it('Can delete a sticker', async () => {
|
||||
const sticker = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
await rest.deleteGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
await expect(rest.getGuildSticker(e2ecache.guild.id, sticker.id)).to.eventually.rejected
|
||||
})
|
||||
it('Create, edit, get, and delete guild sticker', async () => {
|
||||
const sticker = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
|
||||
describe('Get and edit guild sticker helpers', () => {
|
||||
let sticker: Camelize<DiscordSticker>
|
||||
expect(sticker.name).to.equal('sticker name')
|
||||
expect(sticker.description).to.equal('sticker description')
|
||||
expect(sticker.tags).to.equal('sticker tags')
|
||||
|
||||
beforeEach(async () => {
|
||||
sticker = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await rest.deleteGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
})
|
||||
|
||||
it('Can get a sticker', async () => {
|
||||
const getSticker = await rest.getGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
|
||||
expect(getSticker.name).to.equal('sticker name')
|
||||
expect(getSticker.description).to.equal('sticker description')
|
||||
expect(getSticker.tags).to.equal('sticker tags')
|
||||
})
|
||||
|
||||
it('Can get stickers', async () => {
|
||||
const sticker2 = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker 2',
|
||||
description: 'sticker 2',
|
||||
tags: 'sticker tags 2',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
const stickers = await rest.getGuildStickers(e2ecache.guild.id)
|
||||
await rest.deleteGuildSticker(e2ecache.guild.id, sticker2.id)
|
||||
|
||||
expect(stickers.length).to.greaterThan(1)
|
||||
})
|
||||
|
||||
it('Can edit sticker', async () => {
|
||||
const editSticker = await rest.editGuildSticker(e2ecache.guild.id, sticker.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
})
|
||||
|
||||
expect(editSticker.name).to.equal('sticker name')
|
||||
expect(editSticker.description).to.equal('sticker description')
|
||||
expect(editSticker.tags).to.equal('sticker tags')
|
||||
})
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'test',
|
||||
})
|
||||
const message = await rest.sendMessage(channel.id, {
|
||||
stickerIds: [sticker.id],
|
||||
})
|
||||
|
||||
expect(message.stickerItems?.[0].formatType).to.equal(StickerFormatTypes.Png)
|
||||
expect(message.stickerItems?.[0].id).to.equal(sticker.id)
|
||||
expect(message.stickerItems?.[0].name).to.equal(sticker.name)
|
||||
|
||||
const getSticker = await rest.getGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
|
||||
expect(getSticker.name).to.equal('sticker name')
|
||||
expect(getSticker.description).to.equal('sticker description')
|
||||
expect(getSticker.tags).to.equal('sticker tags')
|
||||
|
||||
const editSticker = await rest.editGuildSticker(e2ecache.guild.id, sticker.id, {
|
||||
name: 'sticker name',
|
||||
description: 'sticker description',
|
||||
tags: 'sticker tags',
|
||||
})
|
||||
|
||||
expect(editSticker.name).to.equal('sticker name')
|
||||
expect(editSticker.description).to.equal('sticker description')
|
||||
expect(editSticker.tags).to.equal('sticker tags')
|
||||
|
||||
const sticker2 = await rest.createGuildSticker(e2ecache.guild.id, {
|
||||
name: 'sticker 2',
|
||||
description: 'sticker 2',
|
||||
tags: 'sticker tags 2',
|
||||
file: {
|
||||
blob: await (await fetch('https://i.imgur.com/ejqd6Ro.png')).blob(),
|
||||
name: 'ddlogo.png',
|
||||
},
|
||||
})
|
||||
const stickers = await rest.getGuildStickers(e2ecache.guild.id)
|
||||
expect(stickers.length).to.greaterThan(1)
|
||||
|
||||
await rest.deleteGuildSticker(e2ecache.guild.id, sticker.id)
|
||||
await expect(rest.getGuildSticker(e2ecache.guild.id, sticker.id)).to.eventually.rejected
|
||||
})
|
||||
})
|
||||
|
||||
@@ -19,35 +19,33 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('[rest] User related tests', () => {
|
||||
describe('Get a user from the api', () => {
|
||||
it('With a valid user id', async () => {
|
||||
const user = await rest.getUser('130136895395987456')
|
||||
describe('Get a user from the api', () => {
|
||||
it('With a valid user id', async () => {
|
||||
const user = await rest.getUser('130136895395987456')
|
||||
|
||||
describe('User has correct shape and form', () => {
|
||||
it('Has correct id', () => {
|
||||
expect(user.id).to.be.equal('130136895395987456')
|
||||
})
|
||||
describe('User has correct shape and form', () => {
|
||||
it('Has correct id', () => {
|
||||
expect(user.id).to.be.equal('130136895395987456')
|
||||
})
|
||||
|
||||
it('Has a valid username', () => {
|
||||
expect(user.username.length).to.be.greaterThanOrEqual(1)
|
||||
})
|
||||
it('Has a valid username', () => {
|
||||
expect(user.username.length).to.be.greaterThanOrEqual(1)
|
||||
})
|
||||
|
||||
it('Has a valid discriminator', () => {
|
||||
expect(user.discriminator.length).to.be.equal(4)
|
||||
})
|
||||
it('Has a valid discriminator', () => {
|
||||
expect(user.discriminator.length).to.be.equal(4)
|
||||
})
|
||||
|
||||
it('Has been camelized', () => {
|
||||
const keys = Object.keys(user)
|
||||
it('Has been camelized', () => {
|
||||
const keys = Object.keys(user)
|
||||
|
||||
expect(keys.includes('public_flags')).to.be.false
|
||||
expect(keys.includes('publicFlags')).to.be.true
|
||||
})
|
||||
expect(keys.includes('public_flags')).to.be.false
|
||||
expect(keys.includes('publicFlags')).to.be.true
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it('With an invalid user id', async () => {
|
||||
await expect(rest.getUser('123')).eventually.throws
|
||||
})
|
||||
it('With an invalid user id', async () => {
|
||||
await expect(rest.getUser('123')).eventually.throws
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { Camelize, DiscordMessage } from '@discordeno/types'
|
||||
import chai, { expect } from 'chai'
|
||||
import chaiAsPromised from 'chai-as-promised'
|
||||
import { beforeEach, describe, it } from 'mocha'
|
||||
import { describe, it } from 'mocha'
|
||||
import { e2ecache, rest } from './utils.js'
|
||||
chai.use(chaiAsPromised)
|
||||
|
||||
@@ -21,137 +20,92 @@ after(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
// waiting for channel
|
||||
describe('[webhooks] Webhook helpers', async () => {
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'wbhook',
|
||||
describe('Webhook helpers', async () => {
|
||||
it('Manage webhooks', async () => {
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'wbhook',
|
||||
})
|
||||
|
||||
const webhook = await rest.createWebhook(channel.id, {
|
||||
name: 'idk',
|
||||
})
|
||||
|
||||
expect(webhook).to.exist
|
||||
expect(webhook.name).to.equal('idk')
|
||||
expect(webhook.token).to.exist
|
||||
|
||||
const fetched = await rest.getWebhook(webhook.id)
|
||||
expect(fetched).to.exist
|
||||
expect(webhook.id).to.equal(fetched.id)
|
||||
|
||||
const fetched2 = await rest.getWebhookWithToken(webhook.id, webhook.token!)
|
||||
expect(webhook.id).to.equal(fetched2.id)
|
||||
|
||||
const edited = await rest.editWebhook(webhook.id, {
|
||||
name: 'edited',
|
||||
})
|
||||
|
||||
expect(webhook.name).to.not.equal(edited.name)
|
||||
|
||||
const edited2 = await rest.editWebhookWithToken(webhook.id, webhook.token!, {
|
||||
name: 'editedtoken',
|
||||
})
|
||||
|
||||
expect(edited.name).to.not.equal(edited2.name)
|
||||
|
||||
await rest.createWebhook(channel.id, { name: 'idkk' })
|
||||
const hooks = await rest.getChannelWebhooks(channel.id)
|
||||
expect(hooks.length).to.greaterThan(1)
|
||||
|
||||
const guildHooks = await rest.getGuildWebhooks(channel.guildId!)
|
||||
expect(guildHooks.length).to.greaterThan(1)
|
||||
|
||||
await rest.deleteWebhook(webhook.id)
|
||||
// Fetch the webhook to validate it was deleted
|
||||
await expect(rest.getWebhook(webhook.id)).to.eventually.rejected
|
||||
|
||||
const hookToDelete = await rest.createWebhook(channel.id, {
|
||||
name: 'delme',
|
||||
})
|
||||
expect(hookToDelete?.id).to.exist
|
||||
expect(hookToDelete.token).to.exist
|
||||
|
||||
await rest.deleteWebhookWithToken(hookToDelete.id, hookToDelete.token!)
|
||||
|
||||
// Fetch the webhook to validate it was deleted
|
||||
await expect(rest.getWebhook(hookToDelete.id)).to.eventually.rejected
|
||||
})
|
||||
|
||||
const webhook = await rest.createWebhook(channel.id, {
|
||||
name: 'idk',
|
||||
})
|
||||
it('Manage webhook messages', async () => {
|
||||
const channel = await rest.createChannel(e2ecache.guild.id, {
|
||||
name: 'wbhook',
|
||||
})
|
||||
const webhook = await rest.createWebhook(channel.id, {
|
||||
name: 'idk',
|
||||
})
|
||||
expect(webhook).to.exist
|
||||
|
||||
describe('General webhook helpers', () => {
|
||||
it('Can create a webhook', async () => {
|
||||
expect(webhook).to.exist
|
||||
expect(webhook.name).to.equal('idk')
|
||||
const message = await rest.executeWebhook(webhook.id, webhook.token!, {
|
||||
content: 'discordeno is best lib',
|
||||
wait: true,
|
||||
})
|
||||
expect(message?.id).to.exist
|
||||
|
||||
const message2 = await rest.getWebhookMessage(webhook.id, webhook.token!, message!.id)
|
||||
|
||||
expect(message2).to.exist
|
||||
expect(message2.content).to.equal(message?.content)
|
||||
|
||||
const edited3 = await rest.editWebhookMessage(webhook.id, webhook.token!, message.id, {
|
||||
content: 'different',
|
||||
})
|
||||
|
||||
it('Can delete a webhook', async () => {
|
||||
const hookToDelete = await rest.createWebhook(channel.id, {
|
||||
name: 'delme',
|
||||
})
|
||||
await rest.deleteWebhook(hookToDelete.id)
|
||||
expect(edited3).to.exist
|
||||
expect(edited3.content).to.not.equal(message2.content)
|
||||
|
||||
// Fetch the webhook to validate it was deleted
|
||||
await expect(rest.getWebhook(hookToDelete.id)).to.eventually.rejected
|
||||
})
|
||||
|
||||
it('Can delete a webhook with token', async () => {
|
||||
const hookToDelete = await rest.createWebhook(channel.id, {
|
||||
name: 'delme',
|
||||
})
|
||||
expect(hookToDelete?.id).to.exist
|
||||
expect(hookToDelete.token).to.exist
|
||||
|
||||
await rest.deleteWebhookWithToken(hookToDelete.id, hookToDelete.token!)
|
||||
|
||||
// Fetch the webhook to validate it was deleted
|
||||
await expect(rest.getWebhook(hookToDelete.id)).to.eventually.rejected
|
||||
})
|
||||
})
|
||||
|
||||
describe('Guild webhook helpers', async () => {
|
||||
it('Can edit a guild webhook', async () => {
|
||||
const edited = await rest.editWebhook(webhook.id, {
|
||||
name: 'edited',
|
||||
})
|
||||
|
||||
expect(webhook.name).to.not.equal(edited.name)
|
||||
})
|
||||
|
||||
it('Can edit a guild webhook with token', async () => {
|
||||
const edited = await rest.editWebhookWithToken(webhook.id, webhook.token!, {
|
||||
name: 'editedtoken',
|
||||
})
|
||||
|
||||
expect(webhook.name).to.not.equal(edited.name)
|
||||
})
|
||||
|
||||
it('Can get a guild webhook', async () => {
|
||||
const fetched = await rest.getWebhook(webhook.id)
|
||||
expect(fetched).to.exist
|
||||
expect(webhook.id).to.equal(fetched.id)
|
||||
})
|
||||
|
||||
it('Can get a guild webhook with a token', async () => {
|
||||
expect(webhook.token).to.exist
|
||||
const fetched = await rest.getWebhookWithToken(webhook.id, webhook.token!)
|
||||
expect(webhook.id).to.equal(fetched.id)
|
||||
})
|
||||
})
|
||||
|
||||
describe('Guild channel webhook helpers', async () => {
|
||||
// console.log('in guild channel webhook helper', 1)
|
||||
await rest.createWebhook(channel.id, {
|
||||
name: 'idkk',
|
||||
})
|
||||
// console.log('in guild channel webhook helper', 2)
|
||||
|
||||
it('Can create guild channel webhooks', async () => {
|
||||
// console.log('in guild channel webhook helper', 3)
|
||||
// console.log('in guild channel webhook helper', 4)
|
||||
const fetched = await rest.getChannelWebhooks(channel.id)
|
||||
// console.log('in guild channel webhook helper', 1)
|
||||
expect(fetched.length).to.greaterThan(1)
|
||||
// console.log('in guild channel webhook helper', 6)
|
||||
})
|
||||
|
||||
// console.log('in guild channel webhook helper', 7)
|
||||
it('Can get a guild channel webhooks', async () => {
|
||||
// console.log('in guild channel webhook helper', 8)
|
||||
const guildWebhooks = await rest.getGuildWebhooks(channel.guildId!)
|
||||
// console.log('in guild channel webhook helper', 9)
|
||||
expect(guildWebhooks.length).to.greaterThan(1)
|
||||
// console.log('in guild channel webhook helper', 10)
|
||||
})
|
||||
})
|
||||
|
||||
describe('Webhook Message helpers', async () => {
|
||||
let message: Camelize<DiscordMessage>
|
||||
|
||||
beforeEach(async () => {
|
||||
const msg = await rest.executeWebhook(webhook.id, webhook.token!, {
|
||||
content: 'discordeno is best lib',
|
||||
wait: true,
|
||||
})
|
||||
if (!msg) throw new Error('message not send')
|
||||
message = msg
|
||||
})
|
||||
|
||||
it('Can send message with webhook', async () => {
|
||||
expect(message?.id).to.exist
|
||||
})
|
||||
|
||||
it('Can delete a message with webhook', async () => {
|
||||
await rest.deleteWebhookMessage(webhook.id, webhook.token!, message.id)
|
||||
await expect(rest.getWebhookMessage(webhook.id, webhook.token!, message.id)).to.eventually.rejected
|
||||
})
|
||||
|
||||
it('Can get a message with webhook', async () => {
|
||||
const fetched = await rest.getWebhookMessage(webhook.id, webhook.token!, message.id)
|
||||
|
||||
expect(fetched).to.exist
|
||||
expect(fetched.content).to.equal(message.content)
|
||||
})
|
||||
|
||||
it('Can edit a message with webhook', async () => {
|
||||
const edited = await rest.editWebhookMessage(webhook.id, webhook.token!, message.id, {
|
||||
content: 'different',
|
||||
})
|
||||
|
||||
expect(edited).to.exist
|
||||
expect(edited.content).to.not.equal(message.content)
|
||||
})
|
||||
await rest.deleteWebhookMessage(webhook.id, webhook.token!, message!.id)
|
||||
await expect(rest.getWebhookMessage(webhook.id, webhook.token!, message!.id)).to.eventually.rejected
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user