Add GuildPermissions and ChannelPermissions Unit Tests (#873)
* initial commit * Add GuildPermission tests for constructor and modify parameters * Fixed GuildPermission All value. Previous value had an additional digit that would still resolve to correct permission flags, but raw value would be incorrect. This matches the result of the sum of all GuildPermission flags * Added raw value check to guild permission modify tests * Add ChannelPermissions tests
This commit is contained in:
committed by
Christopher F
parent
9979a027d5
commit
cf8de42b62
324
test/Discord.Net.Tests/Tests.ChannelPermissions.cs
Normal file
324
test/Discord.Net.Tests/Tests.ChannelPermissions.cs
Normal file
@@ -0,0 +1,324 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace Discord
|
||||
{
|
||||
public partial class Tests
|
||||
{
|
||||
[Fact]
|
||||
public async Task TestChannelPermission()
|
||||
{
|
||||
var perm = new ChannelPermissions();
|
||||
|
||||
// check initial values
|
||||
Assert.Equal((ulong)0, perm.RawValue);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// permissions list empty by default
|
||||
Assert.Empty(perm.ToList());
|
||||
|
||||
// test modify with no parameters
|
||||
var copy = perm.Modify();
|
||||
Assert.Equal((ulong)0, copy.RawValue);
|
||||
|
||||
// test the values that are returned by ChannelPermission.All
|
||||
Assert.Equal((ulong)0, ChannelPermissions.None.RawValue);
|
||||
|
||||
// for text channels
|
||||
ulong textChannel = (ulong)( ChannelPermission.CreateInstantInvite
|
||||
| ChannelPermission.ManageChannels
|
||||
| ChannelPermission.AddReactions
|
||||
| ChannelPermission.ReadMessages
|
||||
| ChannelPermission.SendMessages
|
||||
| ChannelPermission.SendTTSMessages
|
||||
| ChannelPermission.ManageMessages
|
||||
| ChannelPermission.EmbedLinks
|
||||
| ChannelPermission.AttachFiles
|
||||
| ChannelPermission.ReadMessageHistory
|
||||
| ChannelPermission.MentionEveryone
|
||||
| ChannelPermission.UseExternalEmojis
|
||||
| ChannelPermission.ManageRoles
|
||||
| ChannelPermission.ManageWebhooks);
|
||||
|
||||
Assert.Equal(textChannel, ChannelPermissions.Text.RawValue);
|
||||
|
||||
// voice channels
|
||||
ulong voiceChannel = (ulong)(
|
||||
ChannelPermission.CreateInstantInvite
|
||||
| ChannelPermission.ManageChannels
|
||||
| ChannelPermission.Connect
|
||||
| ChannelPermission.Speak
|
||||
| ChannelPermission.MuteMembers
|
||||
| ChannelPermission.DeafenMembers
|
||||
| ChannelPermission.MoveMembers
|
||||
| ChannelPermission.UseVAD
|
||||
| ChannelPermission.ManageRoles);
|
||||
|
||||
Assert.Equal(voiceChannel, ChannelPermissions.Voice.RawValue);
|
||||
|
||||
// DM Channels
|
||||
ulong dmChannel = (ulong)(
|
||||
ChannelPermission.ReadMessages
|
||||
| ChannelPermission.SendMessages
|
||||
| ChannelPermission.EmbedLinks
|
||||
| ChannelPermission.AttachFiles
|
||||
| ChannelPermission.ReadMessageHistory
|
||||
| ChannelPermission.UseExternalEmojis
|
||||
| ChannelPermission.Connect
|
||||
| ChannelPermission.Speak
|
||||
| ChannelPermission.UseVAD
|
||||
);
|
||||
Assert.Equal(dmChannel, ChannelPermissions.DM.RawValue);
|
||||
|
||||
// group channel
|
||||
ulong groupChannel = (ulong)(
|
||||
ChannelPermission.SendMessages
|
||||
| ChannelPermission.EmbedLinks
|
||||
| ChannelPermission.AttachFiles
|
||||
| ChannelPermission.SendTTSMessages
|
||||
| ChannelPermission.Connect
|
||||
| ChannelPermission.Speak
|
||||
| ChannelPermission.UseVAD
|
||||
);
|
||||
Assert.Equal(groupChannel, ChannelPermissions.Group.RawValue);
|
||||
}
|
||||
|
||||
public async Task TestChannelPermissionModify()
|
||||
{
|
||||
// test channel permission modify
|
||||
|
||||
var perm = new ChannelPermissions();
|
||||
|
||||
// ensure that the permission is initially false
|
||||
Assert.False(perm.CreateInstantInvite);
|
||||
|
||||
// ensure that when modified it works
|
||||
perm = perm.Modify(createInstantInvite: true);
|
||||
Assert.True(perm.CreateInstantInvite);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite);
|
||||
|
||||
// set false again, move on to next permission
|
||||
perm = perm.Modify(createInstantInvite: false);
|
||||
Assert.False(perm.CreateInstantInvite);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ManageChannel);
|
||||
|
||||
perm = perm.Modify(manageChannel: true);
|
||||
Assert.True(perm.ManageChannel);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels);
|
||||
|
||||
perm = perm.Modify(manageChannel: false);
|
||||
Assert.False(perm.ManageChannel);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.AddReactions);
|
||||
|
||||
perm = perm.Modify(addReactions: true);
|
||||
Assert.True(perm.AddReactions);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions);
|
||||
|
||||
perm = perm.Modify(addReactions: false);
|
||||
Assert.False(perm.AddReactions);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ReadMessages);
|
||||
|
||||
perm = perm.Modify(readMessages: true);
|
||||
Assert.True(perm.ReadMessages);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessages);
|
||||
|
||||
perm = perm.Modify(readMessages: false);
|
||||
Assert.False(perm.ReadMessages);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.SendMessages);
|
||||
|
||||
perm = perm.Modify(sendMessages: true);
|
||||
Assert.True(perm.SendMessages);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages);
|
||||
|
||||
perm = perm.Modify(sendMessages: false);
|
||||
Assert.False(perm.SendMessages);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.SendTTSMessages);
|
||||
|
||||
perm = perm.Modify(sendTTSMessages: true);
|
||||
Assert.True(perm.SendTTSMessages);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendTTSMessages);
|
||||
|
||||
perm = perm.Modify(sendTTSMessages: false);
|
||||
Assert.False(perm.SendTTSMessages);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ManageMessages);
|
||||
|
||||
perm = perm.Modify(manageMessages: true);
|
||||
Assert.True(perm.ManageMessages);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageMessages);
|
||||
|
||||
perm = perm.Modify(manageMessages: false);
|
||||
Assert.False(perm.ManageMessages);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.EmbedLinks);
|
||||
|
||||
perm = perm.Modify(embedLinks: true);
|
||||
Assert.True(perm.EmbedLinks);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks);
|
||||
|
||||
perm = perm.Modify(embedLinks: false);
|
||||
Assert.False(perm.EmbedLinks);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.AttachFiles);
|
||||
|
||||
perm = perm.Modify(attachFiles: true);
|
||||
Assert.True(perm.AttachFiles);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles);
|
||||
|
||||
perm = perm.Modify(attachFiles: false);
|
||||
Assert.False(perm.AttachFiles);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ReadMessageHistory);
|
||||
|
||||
perm = perm.Modify(readMessageHistory: true);
|
||||
Assert.True(perm.ReadMessageHistory);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory);
|
||||
|
||||
perm = perm.Modify(readMessageHistory: false);
|
||||
Assert.False(perm.ReadMessageHistory);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.MentionEveryone);
|
||||
|
||||
perm = perm.Modify(mentionEveryone: true);
|
||||
Assert.True(perm.MentionEveryone);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone);
|
||||
|
||||
perm = perm.Modify(mentionEveryone: false);
|
||||
Assert.False(perm.MentionEveryone);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.UseExternalEmojis);
|
||||
|
||||
perm = perm.Modify(useExternalEmojis: true);
|
||||
Assert.True(perm.UseExternalEmojis);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis);
|
||||
|
||||
perm = perm.Modify(useExternalEmojis: false);
|
||||
Assert.False(perm.UseExternalEmojis);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.Connect);
|
||||
|
||||
perm = perm.Modify(connect: true);
|
||||
Assert.True(perm.Connect);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect);
|
||||
|
||||
perm = perm.Modify(connect: false);
|
||||
Assert.False(perm.Connect);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.Speak);
|
||||
|
||||
perm = perm.Modify(speak: true);
|
||||
Assert.True(perm.Speak);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak);
|
||||
|
||||
perm = perm.Modify(speak: false);
|
||||
Assert.False(perm.Speak);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.MuteMembers);
|
||||
|
||||
perm = perm.Modify(muteMembers: true);
|
||||
Assert.True(perm.MuteMembers);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers);
|
||||
|
||||
perm = perm.Modify(muteMembers: false);
|
||||
Assert.False(perm.MuteMembers);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.DeafenMembers);
|
||||
|
||||
perm = perm.Modify(deafenMembers: true);
|
||||
Assert.True(perm.DeafenMembers);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers);
|
||||
|
||||
perm = perm.Modify(deafenMembers: false);
|
||||
Assert.False(perm.DeafenMembers);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.MoveMembers);
|
||||
|
||||
perm = perm.Modify(moveMembers: true);
|
||||
Assert.True(perm.MoveMembers);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers);
|
||||
|
||||
perm = perm.Modify(moveMembers: false);
|
||||
Assert.False(perm.MoveMembers);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.UseVAD);
|
||||
|
||||
perm = perm.Modify(useVoiceActivation: true);
|
||||
Assert.True(perm.UseVAD);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD);
|
||||
|
||||
perm = perm.Modify(useVoiceActivation: false);
|
||||
Assert.False(perm.UseVAD);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ManageRoles);
|
||||
|
||||
perm = perm.Modify(manageRoles: true);
|
||||
Assert.True(perm.ManageRoles);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles);
|
||||
|
||||
perm = perm.Modify(manageRoles: false);
|
||||
Assert.False(perm.ManageRoles);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
|
||||
// individual permission test
|
||||
Assert.False(perm.ManageWebhooks);
|
||||
|
||||
perm = perm.Modify(manageWebhooks: true);
|
||||
Assert.True(perm.ManageWebhooks);
|
||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks);
|
||||
|
||||
perm = perm.Modify(manageWebhooks: false);
|
||||
Assert.False(perm.ManageWebhooks);
|
||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task TestChannelTypeResolution()
|
||||
{
|
||||
ITextChannel someChannel = null;
|
||||
// null channels will throw exception
|
||||
Assert.Throws<ArgumentException>(() => ChannelPermissions.All(someChannel));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user