diff --git a/test/Discord.Net.Tests/Discord.Net.Tests.csproj b/test/Discord.Net.Tests/Discord.Net.Tests.csproj index bf2457187..46c9f42c1 100644 --- a/test/Discord.Net.Tests/Discord.Net.Tests.csproj +++ b/test/Discord.Net.Tests/Discord.Net.Tests.csproj @@ -10,6 +10,9 @@ PreserveNewest + + + @@ -24,4 +27,7 @@ + + + diff --git a/test/Discord.Net.Tests/Tests.Permissions.cs b/test/Discord.Net.Tests/Tests.Permissions.cs new file mode 100644 index 000000000..ad1d1f769 --- /dev/null +++ b/test/Discord.Net.Tests/Tests.Permissions.cs @@ -0,0 +1,192 @@ +using System; +using System.Threading.Tasks; +using Xunit; + +namespace Discord +{ + public partial class Tests + { + + /// + /// Tests for the class. + /// + /// Tests that text channel permissions get the right value + /// from the Has method. + /// + /// + [Fact] + public Task TestPermissionsHasChannelPermissionText() + { + var value = ChannelPermissions.Text; + // 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)); + + return Task.CompletedTask; + } + + /// + /// Tests for the class. + /// + /// Tests that no channel permissions get the right value + /// from the Has method. + /// + /// + public Task TestPermissionsHasChannelPermissionNone() + { + // check that none will fail all + 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)); + + return Task.CompletedTask; + } + + /// + /// Tests for the class. + /// + /// Tests that the dm channel permissions get the right value + /// from the Has method. + /// + /// + public Task TestPermissionsHasChannelPermissionDM() + { + // check that none will fail all + 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)); + + return Task.CompletedTask; + } + + /// + /// Tests for the class. + /// + /// Tests that the group channel permissions get the right value + /// from the Has method. + /// + /// + public Task TestPermissionsHasChannelPermissionGroup() + { + 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)); + + return Task.CompletedTask; + } + + + /// + /// Tests for the class. + /// + /// Tests that the voice channel permissions get the right value + /// from the Has method. + /// + /// + [Fact] + public Task TestPermissionsHasChannelPermissionVoice() + { + // make a flag with all possible values for Voice channel permissions + 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)); + + return Task.CompletedTask; + } + } +}