Browse Source

Add more in-depth covering of permissions methods

pull/967/head
Chris Johnston 7 years ago
parent
commit
8e2fdfa668
1 changed files with 210 additions and 102 deletions
  1. +210
    -102
      test/Discord.Net.Tests/Tests.Permissions.cs

+ 210
- 102
test/Discord.Net.Tests/Tests.Permissions.cs View File

@@ -7,6 +7,29 @@ namespace Discord
public partial class Tests public partial class Tests
{ {


private void TestHelper(ChannelPermissions value, ChannelPermission permission, bool expected = false)
=> TestHelper(value.RawValue, (ulong)permission, expected);

private void TestHelper(GuildPermissions value, GuildPermission permission, bool expected = false)
=> TestHelper(value.RawValue, (ulong)permission, expected);

private void TestHelper(ulong rawValue, ulong flagValue, bool expected)
{
Assert.Equal(expected, Permissions.GetValue(rawValue, flagValue));

// check that toggling the bit works
Permissions.UnsetFlag(ref rawValue, flagValue);
Assert.Equal(false, Permissions.GetValue(rawValue, flagValue));
Permissions.SetFlag(ref rawValue, flagValue);
Assert.Equal(true, Permissions.GetValue(rawValue, flagValue));

// do the same, but with the SetValue method
Permissions.SetValue(ref rawValue, true, flagValue);
Assert.Equal(true, Permissions.GetValue(rawValue, flagValue));
Permissions.SetValue(ref rawValue, false, flagValue);
Assert.Equal(false, Permissions.GetValue(rawValue, flagValue));
}

/// <summary> /// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class. /// Tests for the <see cref="Discord.Permissions"/> class.
/// ///
@@ -19,27 +42,27 @@ namespace Discord
{ {
var value = ChannelPermissions.Text; var value = ChannelPermissions.Text;
// check that the result of GetValue matches for all properties of text channel // check that the result of GetValue matches for all properties of text channel
Assert.True(value.Has(ChannelPermission.CreateInstantInvite));
Assert.True(value.Has(ChannelPermission.ManageChannels));
Assert.True(value.Has(ChannelPermission.AddReactions));
Assert.True(value.Has(ChannelPermission.ViewChannel));
Assert.True(value.Has(ChannelPermission.SendMessages));
Assert.True(value.Has(ChannelPermission.SendTTSMessages));
Assert.True(value.Has(ChannelPermission.ManageMessages));
Assert.True(value.Has(ChannelPermission.EmbedLinks));
Assert.True(value.Has(ChannelPermission.AttachFiles));
Assert.True(value.Has(ChannelPermission.ReadMessageHistory));
Assert.True(value.Has(ChannelPermission.MentionEveryone));
Assert.True(value.Has(ChannelPermission.UseExternalEmojis));
Assert.True(value.Has(ChannelPermission.ManageRoles));
Assert.True(value.Has(ChannelPermission.ManageWebhooks));
Assert.False(value.Has(ChannelPermission.Connect));
Assert.False(value.Has(ChannelPermission.Speak));
Assert.False(value.Has(ChannelPermission.MuteMembers));
Assert.False(value.Has(ChannelPermission.DeafenMembers));
Assert.False(value.Has(ChannelPermission.MoveMembers));
Assert.False(value.Has(ChannelPermission.UseVAD));
TestHelper(value, ChannelPermission.CreateInstantInvite, true);
TestHelper(value, ChannelPermission.ManageChannels, true);
TestHelper(value, ChannelPermission.AddReactions, true);
TestHelper(value, ChannelPermission.ViewChannel, true);
TestHelper(value, ChannelPermission.SendMessages, true);
TestHelper(value, ChannelPermission.SendTTSMessages, true);
TestHelper(value, ChannelPermission.ManageMessages, true);
TestHelper(value, ChannelPermission.EmbedLinks, true);
TestHelper(value, ChannelPermission.AttachFiles, true);
TestHelper(value, ChannelPermission.ReadMessageHistory, true);
TestHelper(value, ChannelPermission.MentionEveryone, true);
TestHelper(value, ChannelPermission.UseExternalEmojis, true);
TestHelper(value, ChannelPermission.ManageRoles, true);
TestHelper(value, ChannelPermission.ManageWebhooks, true);
TestHelper(value, ChannelPermission.Connect, false);
TestHelper(value, ChannelPermission.Speak, false);
TestHelper(value, ChannelPermission.MuteMembers, false);
TestHelper(value, ChannelPermission.DeafenMembers, false);
TestHelper(value, ChannelPermission.MoveMembers, false);
TestHelper(value, ChannelPermission.UseVAD, false);


return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -56,26 +79,26 @@ namespace Discord
// check that none will fail all // check that none will fail all
var value = ChannelPermissions.None; var value = ChannelPermissions.None;


Assert.False(value.Has(ChannelPermission.CreateInstantInvite));
Assert.False(value.Has(ChannelPermission.ManageChannels));
Assert.False(value.Has(ChannelPermission.AddReactions));
Assert.False(value.Has(ChannelPermission.ViewChannel));
Assert.False(value.Has(ChannelPermission.SendMessages));
Assert.False(value.Has(ChannelPermission.SendTTSMessages));
Assert.False(value.Has(ChannelPermission.ManageMessages));
Assert.False(value.Has(ChannelPermission.EmbedLinks));
Assert.False(value.Has(ChannelPermission.AttachFiles));
Assert.False(value.Has(ChannelPermission.ReadMessageHistory));
Assert.False(value.Has(ChannelPermission.MentionEveryone));
Assert.False(value.Has(ChannelPermission.UseExternalEmojis));
Assert.False(value.Has(ChannelPermission.ManageRoles));
Assert.False(value.Has(ChannelPermission.ManageWebhooks));
Assert.False(value.Has(ChannelPermission.Connect));
Assert.False(value.Has(ChannelPermission.Speak));
Assert.False(value.Has(ChannelPermission.MuteMembers));
Assert.False(value.Has(ChannelPermission.DeafenMembers));
Assert.False(value.Has(ChannelPermission.MoveMembers));
Assert.False(value.Has(ChannelPermission.UseVAD));
TestHelper(value, ChannelPermission.CreateInstantInvite, false);
TestHelper(value, ChannelPermission.ManageChannels, false);
TestHelper(value, ChannelPermission.AddReactions, false);
TestHelper(value, ChannelPermission.ViewChannel, false);
TestHelper(value, ChannelPermission.SendMessages, false);
TestHelper(value, ChannelPermission.SendTTSMessages, false);
TestHelper(value, ChannelPermission.ManageMessages, false);
TestHelper(value, ChannelPermission.EmbedLinks, false);
TestHelper(value, ChannelPermission.AttachFiles, false);
TestHelper(value, ChannelPermission.ReadMessageHistory, false);
TestHelper(value, ChannelPermission.MentionEveryone, false);
TestHelper(value, ChannelPermission.UseExternalEmojis, false);
TestHelper(value, ChannelPermission.ManageRoles, false);
TestHelper(value, ChannelPermission.ManageWebhooks, false);
TestHelper(value, ChannelPermission.Connect, false);
TestHelper(value, ChannelPermission.Speak, false);
TestHelper(value, ChannelPermission.MuteMembers, false);
TestHelper(value, ChannelPermission.DeafenMembers, false);
TestHelper(value, ChannelPermission.MoveMembers, false);
TestHelper(value, ChannelPermission.UseVAD, false);


return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -92,26 +115,26 @@ namespace Discord
// check that none will fail all // check that none will fail all
var value = ChannelPermissions.DM; var value = ChannelPermissions.DM;


Assert.False(value.Has(ChannelPermission.CreateInstantInvite));
Assert.False(value.Has(ChannelPermission.ManageChannels));
Assert.False(value.Has(ChannelPermission.AddReactions));
Assert.True(value.Has(ChannelPermission.ViewChannel));
Assert.True(value.Has(ChannelPermission.SendMessages));
Assert.False(value.Has(ChannelPermission.SendTTSMessages));
Assert.False(value.Has(ChannelPermission.ManageMessages));
Assert.True(value.Has(ChannelPermission.EmbedLinks));
Assert.True(value.Has(ChannelPermission.AttachFiles));
Assert.True(value.Has(ChannelPermission.ReadMessageHistory));
Assert.False(value.Has(ChannelPermission.MentionEveryone));
Assert.True(value.Has(ChannelPermission.UseExternalEmojis));
Assert.False(value.Has(ChannelPermission.ManageRoles));
Assert.False(value.Has(ChannelPermission.ManageWebhooks));
Assert.True(value.Has(ChannelPermission.Connect));
Assert.True(value.Has(ChannelPermission.Speak));
Assert.False(value.Has(ChannelPermission.MuteMembers));
Assert.False(value.Has(ChannelPermission.DeafenMembers));
Assert.False(value.Has(ChannelPermission.MoveMembers));
Assert.True(value.Has(ChannelPermission.UseVAD));
TestHelper(value, ChannelPermission.CreateInstantInvite, false);
TestHelper(value, ChannelPermission.ManageChannels, false);
TestHelper(value, ChannelPermission.AddReactions, false);
TestHelper(value, ChannelPermission.ViewChannel, true);
TestHelper(value, ChannelPermission.SendMessages, true);
TestHelper(value, ChannelPermission.SendTTSMessages, false);
TestHelper(value, ChannelPermission.ManageMessages, false);
TestHelper(value, ChannelPermission.EmbedLinks, true);
TestHelper(value, ChannelPermission.AttachFiles, true);
TestHelper(value, ChannelPermission.ReadMessageHistory, true);
TestHelper(value, ChannelPermission.MentionEveryone, false);
TestHelper(value, ChannelPermission.UseExternalEmojis, true);
TestHelper(value, ChannelPermission.ManageRoles, false);
TestHelper(value, ChannelPermission.ManageWebhooks, false);
TestHelper(value, ChannelPermission.Connect, true);
TestHelper(value, ChannelPermission.Speak, true);
TestHelper(value, ChannelPermission.MuteMembers, false);
TestHelper(value, ChannelPermission.DeafenMembers, false);
TestHelper(value, ChannelPermission.MoveMembers, false);
TestHelper(value, ChannelPermission.UseVAD, true);


return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -127,26 +150,26 @@ namespace Discord
{ {
var value = ChannelPermissions.Group; var value = ChannelPermissions.Group;


Assert.False(value.Has(ChannelPermission.CreateInstantInvite));
Assert.False(value.Has(ChannelPermission.ManageChannels));
Assert.False(value.Has(ChannelPermission.AddReactions));
Assert.False(value.Has(ChannelPermission.ViewChannel));
Assert.True(value.Has(ChannelPermission.SendMessages));
Assert.True(value.Has(ChannelPermission.SendTTSMessages));
Assert.False(value.Has(ChannelPermission.ManageMessages));
Assert.True(value.Has(ChannelPermission.EmbedLinks));
Assert.True(value.Has(ChannelPermission.AttachFiles));
Assert.False(value.Has(ChannelPermission.ReadMessageHistory));
Assert.False(value.Has(ChannelPermission.MentionEveryone));
Assert.False(value.Has(ChannelPermission.UseExternalEmojis));
Assert.False(value.Has(ChannelPermission.ManageRoles));
Assert.False(value.Has(ChannelPermission.ManageWebhooks));
Assert.True(value.Has(ChannelPermission.Connect));
Assert.True(value.Has(ChannelPermission.Speak));
Assert.False(value.Has(ChannelPermission.MuteMembers));
Assert.False(value.Has(ChannelPermission.DeafenMembers));
Assert.False(value.Has(ChannelPermission.MoveMembers));
Assert.True(value.Has(ChannelPermission.UseVAD));
TestHelper(value, ChannelPermission.CreateInstantInvite, false);
TestHelper(value, ChannelPermission.ManageChannels, false);
TestHelper(value, ChannelPermission.AddReactions, false);
TestHelper(value, ChannelPermission.ViewChannel, false);
TestHelper(value, ChannelPermission.SendMessages, true);
TestHelper(value, ChannelPermission.SendTTSMessages, true);
TestHelper(value, ChannelPermission.ManageMessages, false);
TestHelper(value, ChannelPermission.EmbedLinks, true);
TestHelper(value, ChannelPermission.AttachFiles, true);
TestHelper(value, ChannelPermission.ReadMessageHistory, false);
TestHelper(value, ChannelPermission.MentionEveryone, false);
TestHelper(value, ChannelPermission.UseExternalEmojis, false);
TestHelper(value, ChannelPermission.ManageRoles, false);
TestHelper(value, ChannelPermission.ManageWebhooks, false);
TestHelper(value, ChannelPermission.Connect, true);
TestHelper(value, ChannelPermission.Speak, true);
TestHelper(value, ChannelPermission.MuteMembers, false);
TestHelper(value, ChannelPermission.DeafenMembers, false);
TestHelper(value, ChannelPermission.MoveMembers, false);
TestHelper(value, ChannelPermission.UseVAD, true);


return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -165,26 +188,26 @@ namespace Discord
// make a flag with all possible values for Voice channel permissions // make a flag with all possible values for Voice channel permissions
var value = ChannelPermissions.Voice; var value = ChannelPermissions.Voice;
Assert.True(value.Has(ChannelPermission.CreateInstantInvite));
Assert.True(value.Has(ChannelPermission.ManageChannels));
Assert.False(value.Has(ChannelPermission.AddReactions));
Assert.False(value.Has(ChannelPermission.ViewChannel));
Assert.False(value.Has(ChannelPermission.SendMessages));
Assert.False(value.Has(ChannelPermission.SendTTSMessages));
Assert.False(value.Has(ChannelPermission.ManageMessages));
Assert.False(value.Has(ChannelPermission.EmbedLinks));
Assert.False(value.Has(ChannelPermission.AttachFiles));
Assert.False(value.Has(ChannelPermission.ReadMessageHistory));
Assert.False(value.Has(ChannelPermission.MentionEveryone));
Assert.False(value.Has(ChannelPermission.UseExternalEmojis));
Assert.True(value.Has(ChannelPermission.ManageRoles));
Assert.False(value.Has(ChannelPermission.ManageWebhooks));
Assert.True(value.Has(ChannelPermission.Connect));
Assert.True(value.Has(ChannelPermission.Speak));
Assert.True(value.Has(ChannelPermission.MuteMembers));
Assert.True(value.Has(ChannelPermission.DeafenMembers));
Assert.True(value.Has(ChannelPermission.MoveMembers));
Assert.True(value.Has(ChannelPermission.UseVAD));
TestHelper(value, ChannelPermission.CreateInstantInvite, true);
TestHelper(value, ChannelPermission.ManageChannels, true);
TestHelper(value, ChannelPermission.AddReactions, false);
TestHelper(value, ChannelPermission.ViewChannel, false);
TestHelper(value, ChannelPermission.SendMessages, false);
TestHelper(value, ChannelPermission.SendTTSMessages, false);
TestHelper(value, ChannelPermission.ManageMessages, false);
TestHelper(value, ChannelPermission.EmbedLinks, false);
TestHelper(value, ChannelPermission.AttachFiles, false);
TestHelper(value, ChannelPermission.ReadMessageHistory, false);
TestHelper(value, ChannelPermission.MentionEveryone, false);
TestHelper(value, ChannelPermission.UseExternalEmojis, false);
TestHelper(value, ChannelPermission.ManageRoles, true);
TestHelper(value, ChannelPermission.ManageWebhooks, false);
TestHelper(value, ChannelPermission.Connect, true);
TestHelper(value, ChannelPermission.Speak, true);
TestHelper(value, ChannelPermission.MuteMembers, true);
TestHelper(value, ChannelPermission.DeafenMembers, true);
TestHelper(value, ChannelPermission.MoveMembers, true);
TestHelper(value, ChannelPermission.UseVAD, true);


return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -201,6 +224,34 @@ namespace Discord
{ {
var value = GuildPermissions.None; var value = GuildPermissions.None;


TestHelper(value, GuildPermission.CreateInstantInvite, false);
TestHelper(value, GuildPermission.KickMembers, false);
TestHelper(value, GuildPermission.BanMembers, false);
TestHelper(value, GuildPermission.Administrator, false);
TestHelper(value, GuildPermission.ManageChannels, false);
TestHelper(value, GuildPermission.ManageGuild, false);
TestHelper(value, GuildPermission.AddReactions, false);
TestHelper(value, GuildPermission.ViewAuditLog, false);
TestHelper(value, GuildPermission.ReadMessages, false);
TestHelper(value, GuildPermission.SendMessages, false);
TestHelper(value, GuildPermission.SendTTSMessages, false);
TestHelper(value, GuildPermission.ManageMessages, false);
TestHelper(value, GuildPermission.EmbedLinks, false);
TestHelper(value, GuildPermission.AttachFiles, false);
TestHelper(value, GuildPermission.ReadMessageHistory, false);
TestHelper(value, GuildPermission.MentionEveryone, false);
TestHelper(value, GuildPermission.UseExternalEmojis, false);
TestHelper(value, GuildPermission.Connect, false);
TestHelper(value, GuildPermission.Speak, false);
TestHelper(value, GuildPermission.MuteMembers, false);
TestHelper(value, GuildPermission.MoveMembers, false);
TestHelper(value, GuildPermission.UseVAD, false);
TestHelper(value, GuildPermission.ChangeNickname, false);
TestHelper(value, GuildPermission.ManageNicknames, false);
TestHelper(value, GuildPermission.ManageRoles, false);
TestHelper(value, GuildPermission.ManageWebhooks, false);
TestHelper(value, GuildPermission.ManageEmojis, false);

return Task.CompletedTask; return Task.CompletedTask;
} }


@@ -216,6 +267,35 @@ namespace Discord
{ {
var value = GuildPermissions.All; var value = GuildPermissions.All;


TestHelper(value, GuildPermission.CreateInstantInvite, true);
TestHelper(value, GuildPermission.KickMembers, true);
TestHelper(value, GuildPermission.BanMembers, true);
TestHelper(value, GuildPermission.Administrator, true);
TestHelper(value, GuildPermission.ManageChannels, true);
TestHelper(value, GuildPermission.ManageGuild, true);
TestHelper(value, GuildPermission.AddReactions, true);
TestHelper(value, GuildPermission.ViewAuditLog, true);
TestHelper(value, GuildPermission.ReadMessages, true);
TestHelper(value, GuildPermission.SendMessages, true);
TestHelper(value, GuildPermission.SendTTSMessages, true);
TestHelper(value, GuildPermission.ManageMessages, true);
TestHelper(value, GuildPermission.EmbedLinks, true);
TestHelper(value, GuildPermission.AttachFiles, true);
TestHelper(value, GuildPermission.ReadMessageHistory, true);
TestHelper(value, GuildPermission.MentionEveryone, true);
TestHelper(value, GuildPermission.UseExternalEmojis, true);
TestHelper(value, GuildPermission.Connect, true);
TestHelper(value, GuildPermission.Speak, true);
TestHelper(value, GuildPermission.MuteMembers, true);
TestHelper(value, GuildPermission.MoveMembers, true);
TestHelper(value, GuildPermission.UseVAD, true);
TestHelper(value, GuildPermission.ChangeNickname, true);
TestHelper(value, GuildPermission.ManageNicknames, true);
TestHelper(value, GuildPermission.ManageRoles, true);
TestHelper(value, GuildPermission.ManageWebhooks, true);
TestHelper(value, GuildPermission.ManageEmojis, true);


return Task.CompletedTask; return Task.CompletedTask;
} }


@@ -229,7 +309,35 @@ namespace Discord
[Fact] [Fact]
public Task TestPermissionsHasGuildPermissionWebhook() public Task TestPermissionsHasGuildPermissionWebhook()
{ {
var value = GuildPermissions.All;
var value = GuildPermissions.Webhook;

TestHelper(value, GuildPermission.CreateInstantInvite, false);
TestHelper(value, GuildPermission.KickMembers, false);
TestHelper(value, GuildPermission.BanMembers, false);
TestHelper(value, GuildPermission.Administrator, false);
TestHelper(value, GuildPermission.ManageChannels, false);
TestHelper(value, GuildPermission.ManageGuild, false);
TestHelper(value, GuildPermission.AddReactions, false);
TestHelper(value, GuildPermission.ViewAuditLog, false);
TestHelper(value, GuildPermission.ReadMessages, false);
TestHelper(value, GuildPermission.SendMessages, true);
TestHelper(value, GuildPermission.SendTTSMessages, true);
TestHelper(value, GuildPermission.ManageMessages, false);
TestHelper(value, GuildPermission.EmbedLinks, true);
TestHelper(value, GuildPermission.AttachFiles, true);
TestHelper(value, GuildPermission.ReadMessageHistory, false);
TestHelper(value, GuildPermission.MentionEveryone, false);
TestHelper(value, GuildPermission.UseExternalEmojis, false);
TestHelper(value, GuildPermission.Connect, false);
TestHelper(value, GuildPermission.Speak, false);
TestHelper(value, GuildPermission.MuteMembers, false);
TestHelper(value, GuildPermission.MoveMembers, false);
TestHelper(value, GuildPermission.UseVAD, false);
TestHelper(value, GuildPermission.ChangeNickname, false);
TestHelper(value, GuildPermission.ManageNicknames, false);
TestHelper(value, GuildPermission.ManageRoles, false);
TestHelper(value, GuildPermission.ManageWebhooks, false);
TestHelper(value, GuildPermission.ManageEmojis, false);


return Task.CompletedTask; return Task.CompletedTask;
} }


Loading…
Cancel
Save