* Fix #854 Added ViewChannel enum and property to channel permissions * replaced usages of ChannelPermission#ReadMessages with ViewChannel * rename parameter of ChannelPermissions constructor * made OverwritePermissions#ReadMessages obsolete, use ViewChannel instead * Fix #854 Added ViewChannel enum and property to channel permissions replaced usages of ChannelPermission#ReadMessages with ViewChannel rename parameter of ChannelPermissions constructor made OverwritePermissions#ReadMessages obsolete, use ViewChannel instead * renamed readMessages parameter in ChannelPermissions constructor and Modify * fixed channel permission tests to use ChannelPermission enum instead of GuildPermission enum * replaced usages of readmessages in channel permission tests * resolve build warnings for permission teststags/2.0.0-beta
| @@ -11,7 +11,9 @@ namespace Discord | |||||
| // Text | // Text | ||||
| AddReactions = 0x00_00_00_40, | AddReactions = 0x00_00_00_40, | ||||
| ReadMessages = 0x00_00_04_00, | |||||
| [Obsolete("Use ViewChannel instead.")] | |||||
| ReadMessages = ViewChannel, | |||||
| ViewChannel = 0x00_00_04_00, | |||||
| SendMessages = 0x00_00_08_00, | SendMessages = 0x00_00_08_00, | ||||
| SendTTSMessages = 0x00_00_10_00, | SendTTSMessages = 0x00_00_10_00, | ||||
| ManageMessages = 0x00_00_20_00, | ManageMessages = 0x00_00_20_00, | ||||
| @@ -41,7 +41,11 @@ namespace Discord | |||||
| /// <summary> If true, a user may add reactions. </summary> | /// <summary> If true, a user may add reactions. </summary> | ||||
| public bool AddReactions => Permissions.GetValue(RawValue, ChannelPermission.AddReactions); | public bool AddReactions => Permissions.GetValue(RawValue, ChannelPermission.AddReactions); | ||||
| /// <summary> If True, a user may join channels. </summary> | /// <summary> If True, a user may join channels. </summary> | ||||
| public bool ReadMessages => Permissions.GetValue(RawValue, ChannelPermission.ReadMessages); | |||||
| [Obsolete("Use ViewChannel instead.")] | |||||
| public bool ReadMessages => ViewChannel; | |||||
| /// <summary> If True, a user may view channels. </summary> | |||||
| public bool ViewChannel => Permissions.GetValue(RawValue, ChannelPermission.ViewChannel); | |||||
| /// <summary> If True, a user may send messages. </summary> | /// <summary> If True, a user may send messages. </summary> | ||||
| public bool SendMessages => Permissions.GetValue(RawValue, ChannelPermission.SendMessages); | public bool SendMessages => Permissions.GetValue(RawValue, ChannelPermission.SendMessages); | ||||
| /// <summary> If True, a user may send text-to-speech messages. </summary> | /// <summary> If True, a user may send text-to-speech messages. </summary> | ||||
| @@ -82,7 +86,7 @@ namespace Discord | |||||
| private ChannelPermissions(ulong initialValue, bool? createInstantInvite = null, bool? manageChannel = null, | private ChannelPermissions(ulong initialValue, bool? createInstantInvite = null, bool? manageChannel = null, | ||||
| bool? addReactions = null, | bool? addReactions = null, | ||||
| bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null, | |||||
| bool? viewChannel = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null, | |||||
| bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null, | bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null, | ||||
| bool? useExternalEmojis = null, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null, | bool? useExternalEmojis = null, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null, | ||||
| bool? moveMembers = null, bool? useVoiceActivation = null, bool? manageRoles = null, bool? manageWebhooks = null) | bool? moveMembers = null, bool? useVoiceActivation = null, bool? manageRoles = null, bool? manageWebhooks = null) | ||||
| @@ -92,7 +96,7 @@ namespace Discord | |||||
| Permissions.SetValue(ref value, createInstantInvite, ChannelPermission.CreateInstantInvite); | Permissions.SetValue(ref value, createInstantInvite, ChannelPermission.CreateInstantInvite); | ||||
| Permissions.SetValue(ref value, manageChannel, ChannelPermission.ManageChannels); | Permissions.SetValue(ref value, manageChannel, ChannelPermission.ManageChannels); | ||||
| Permissions.SetValue(ref value, addReactions, ChannelPermission.AddReactions); | Permissions.SetValue(ref value, addReactions, ChannelPermission.AddReactions); | ||||
| Permissions.SetValue(ref value, readMessages, ChannelPermission.ReadMessages); | |||||
| Permissions.SetValue(ref value, viewChannel, ChannelPermission.ViewChannel); | |||||
| Permissions.SetValue(ref value, sendMessages, ChannelPermission.SendMessages); | Permissions.SetValue(ref value, sendMessages, ChannelPermission.SendMessages); | ||||
| Permissions.SetValue(ref value, sendTTSMessages, ChannelPermission.SendTTSMessages); | Permissions.SetValue(ref value, sendTTSMessages, ChannelPermission.SendTTSMessages); | ||||
| Permissions.SetValue(ref value, manageMessages, ChannelPermission.ManageMessages); | Permissions.SetValue(ref value, manageMessages, ChannelPermission.ManageMessages); | ||||
| @@ -116,11 +120,11 @@ namespace Discord | |||||
| /// <summary> Creates a new ChannelPermissions with the provided permissions. </summary> | /// <summary> Creates a new ChannelPermissions with the provided permissions. </summary> | ||||
| public ChannelPermissions(bool createInstantInvite = false, bool manageChannel = false, | public ChannelPermissions(bool createInstantInvite = false, bool manageChannel = false, | ||||
| bool addReactions = false, | bool addReactions = false, | ||||
| bool readMessages = false, bool sendMessages = false, bool sendTTSMessages = false, bool manageMessages = false, | |||||
| bool viewChannel = false, bool sendMessages = false, bool sendTTSMessages = false, bool manageMessages = false, | |||||
| bool embedLinks = false, bool attachFiles = false, bool readMessageHistory = false, bool mentionEveryone = false, | bool embedLinks = false, bool attachFiles = false, bool readMessageHistory = false, bool mentionEveryone = false, | ||||
| bool useExternalEmojis = false, bool connect = false, bool speak = false, bool muteMembers = false, bool deafenMembers = false, | bool useExternalEmojis = false, bool connect = false, bool speak = false, bool muteMembers = false, bool deafenMembers = false, | ||||
| bool moveMembers = false, bool useVoiceActivation = false, bool manageRoles = false, bool manageWebhooks = false) | bool moveMembers = false, bool useVoiceActivation = false, bool manageRoles = false, bool manageWebhooks = false) | ||||
| : this(0, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||||
| : this(0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||||
| embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, | embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, | ||||
| speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, manageRoles, manageWebhooks) | speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, manageRoles, manageWebhooks) | ||||
| { } | { } | ||||
| @@ -128,11 +132,11 @@ namespace Discord | |||||
| /// <summary> Creates a new ChannelPermissions from this one, changing the provided non-null permissions. </summary> | /// <summary> Creates a new ChannelPermissions from this one, changing the provided non-null permissions. </summary> | ||||
| public ChannelPermissions Modify(bool? createInstantInvite = null, bool? manageChannel = null, | public ChannelPermissions Modify(bool? createInstantInvite = null, bool? manageChannel = null, | ||||
| bool? addReactions = null, | bool? addReactions = null, | ||||
| bool? readMessages = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null, | |||||
| bool? viewChannel = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null, | |||||
| bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null, | bool? embedLinks = null, bool? attachFiles = null, bool? readMessageHistory = null, bool? mentionEveryone = null, | ||||
| bool useExternalEmojis = false, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null, | bool useExternalEmojis = false, bool? connect = null, bool? speak = null, bool? muteMembers = null, bool? deafenMembers = null, | ||||
| bool? moveMembers = null, bool? useVoiceActivation = null, bool? manageRoles = null, bool? manageWebhooks = null) | bool? moveMembers = null, bool? useVoiceActivation = null, bool? manageRoles = null, bool? manageWebhooks = null) | ||||
| => new ChannelPermissions(RawValue, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||||
| => new ChannelPermissions(RawValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||||
| embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, | embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, | ||||
| speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, manageRoles, manageWebhooks); | speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, manageRoles, manageWebhooks); | ||||
| @@ -1,4 +1,5 @@ | |||||
| using System.Collections.Generic; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Diagnostics; | using System.Diagnostics; | ||||
| namespace Discord | namespace Discord | ||||
| @@ -27,7 +28,10 @@ namespace Discord | |||||
| /// <summary> If Allowed, a user may add reactions. </summary> | /// <summary> If Allowed, a user may add reactions. </summary> | ||||
| public PermValue AddReactions => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.AddReactions); | public PermValue AddReactions => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.AddReactions); | ||||
| /// <summary> If Allowed, a user may join channels. </summary> | /// <summary> If Allowed, a user may join channels. </summary> | ||||
| public PermValue ReadMessages => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ReadMessages); | |||||
| [Obsolete("Use ViewChannel instead.")] | |||||
| public PermValue ReadMessages => ViewChannel; | |||||
| /// <summary> If Allowed, a user may join channels. </summary> | |||||
| public PermValue ViewChannel => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ViewChannel); | |||||
| /// <summary> If Allowed, a user may send messages. </summary> | /// <summary> If Allowed, a user may send messages. </summary> | ||||
| public PermValue SendMessages => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.SendMessages); | public PermValue SendMessages => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.SendMessages); | ||||
| /// <summary> If Allowed, a user may send text-to-speech messages. </summary> | /// <summary> If Allowed, a user may send text-to-speech messages. </summary> | ||||
| @@ -72,7 +76,7 @@ namespace Discord | |||||
| private OverwritePermissions(ulong allowValue, ulong denyValue, PermValue? createInstantInvite = null, PermValue? manageChannel = null, | private OverwritePermissions(ulong allowValue, ulong denyValue, PermValue? createInstantInvite = null, PermValue? manageChannel = null, | ||||
| PermValue? addReactions = null, | PermValue? addReactions = null, | ||||
| PermValue? readMessages = null, PermValue? sendMessages = null, PermValue? sendTTSMessages = null, PermValue? manageMessages = null, | |||||
| PermValue? viewChannel = null, PermValue? sendMessages = null, PermValue? sendTTSMessages = null, PermValue? manageMessages = null, | |||||
| PermValue? embedLinks = null, PermValue? attachFiles = null, PermValue? readMessageHistory = null, PermValue? mentionEveryone = null, | PermValue? embedLinks = null, PermValue? attachFiles = null, PermValue? readMessageHistory = null, PermValue? mentionEveryone = null, | ||||
| PermValue? useExternalEmojis = null, PermValue? connect = null, PermValue? speak = null, PermValue? muteMembers = null, | PermValue? useExternalEmojis = null, PermValue? connect = null, PermValue? speak = null, PermValue? muteMembers = null, | ||||
| PermValue? deafenMembers = null, PermValue? moveMembers = null, PermValue? useVoiceActivation = null, PermValue? manageRoles = null, | PermValue? deafenMembers = null, PermValue? moveMembers = null, PermValue? useVoiceActivation = null, PermValue? manageRoles = null, | ||||
| @@ -81,7 +85,7 @@ namespace Discord | |||||
| Permissions.SetValue(ref allowValue, ref denyValue, createInstantInvite, ChannelPermission.CreateInstantInvite); | Permissions.SetValue(ref allowValue, ref denyValue, createInstantInvite, ChannelPermission.CreateInstantInvite); | ||||
| Permissions.SetValue(ref allowValue, ref denyValue, manageChannel, ChannelPermission.ManageChannels); | Permissions.SetValue(ref allowValue, ref denyValue, manageChannel, ChannelPermission.ManageChannels); | ||||
| Permissions.SetValue(ref allowValue, ref denyValue, addReactions, ChannelPermission.AddReactions); | Permissions.SetValue(ref allowValue, ref denyValue, addReactions, ChannelPermission.AddReactions); | ||||
| Permissions.SetValue(ref allowValue, ref denyValue, readMessages, ChannelPermission.ReadMessages); | |||||
| Permissions.SetValue(ref allowValue, ref denyValue, viewChannel, ChannelPermission.ViewChannel); | |||||
| Permissions.SetValue(ref allowValue, ref denyValue, sendMessages, ChannelPermission.SendMessages); | Permissions.SetValue(ref allowValue, ref denyValue, sendMessages, ChannelPermission.SendMessages); | ||||
| Permissions.SetValue(ref allowValue, ref denyValue, sendTTSMessages, ChannelPermission.SendTTSMessages); | Permissions.SetValue(ref allowValue, ref denyValue, sendTTSMessages, ChannelPermission.SendTTSMessages); | ||||
| Permissions.SetValue(ref allowValue, ref denyValue, manageMessages, ChannelPermission.ManageMessages); | Permissions.SetValue(ref allowValue, ref denyValue, manageMessages, ChannelPermission.ManageMessages); | ||||
| @@ -152,7 +152,7 @@ namespace Discord | |||||
| if (channel is ITextChannel textChannel) | if (channel is ITextChannel textChannel) | ||||
| { | { | ||||
| if (!GetValue(resolvedPermissions, ChannelPermission.ReadMessages)) | |||||
| if (!GetValue(resolvedPermissions, ChannelPermission.ViewChannel)) | |||||
| { | { | ||||
| //No read permission on a text channel removes all other permissions | //No read permission on a text channel removes all other permissions | ||||
| resolvedPermissions = 0; | resolvedPermissions = 0; | ||||
| @@ -244,7 +244,7 @@ namespace Discord.Rest | |||||
| if (model == null) | if (model == null) | ||||
| return null; | return null; | ||||
| var user = RestGuildUser.Create(client, guild, model); | var user = RestGuildUser.Create(client, guild, model); | ||||
| if (!user.GetPermissions(channel).ReadMessages) | |||||
| if (!user.GetPermissions(channel).ViewChannel) | |||||
| return null; | return null; | ||||
| return user; | return user; | ||||
| @@ -265,7 +265,7 @@ namespace Discord.Rest | |||||
| var models = await client.ApiClient.GetGuildMembersAsync(guild.Id, args, options).ConfigureAwait(false); | var models = await client.ApiClient.GetGuildMembersAsync(guild.Id, args, options).ConfigureAwait(false); | ||||
| return models | return models | ||||
| .Select(x => RestGuildUser.Create(client, guild, x)) | .Select(x => RestGuildUser.Create(client, guild, x)) | ||||
| .Where(x => x.GetPermissions(channel).ReadMessages) | |||||
| .Where(x => x.GetPermissions(channel).ViewChannel) | |||||
| .ToImmutableArray(); | .ToImmutableArray(); | ||||
| }, | }, | ||||
| nextPage: (info, lastPage) => | nextPage: (info, lastPage) => | ||||
| @@ -197,7 +197,7 @@ namespace Discord.Rest | |||||
| var channels = await GetTextChannelsAsync(options).ConfigureAwait(false); | var channels = await GetTextChannelsAsync(options).ConfigureAwait(false); | ||||
| var user = await GetCurrentUserAsync(options).ConfigureAwait(false); | var user = await GetCurrentUserAsync(options).ConfigureAwait(false); | ||||
| return channels | return channels | ||||
| .Where(c => user.GetPermissions(c).ReadMessages) | |||||
| .Where(c => user.GetPermissions(c).ViewChannel) | |||||
| .OrderBy(c => c.Position) | .OrderBy(c => c.Position) | ||||
| .FirstOrDefault(); | .FirstOrDefault(); | ||||
| } | } | ||||
| @@ -25,7 +25,7 @@ namespace Discord.WebSocket | |||||
| public override IReadOnlyCollection<SocketGuildUser> Users | public override IReadOnlyCollection<SocketGuildUser> Users | ||||
| => Guild.Users.Where(x => Permissions.GetValue( | => Guild.Users.Where(x => Permissions.GetValue( | ||||
| Permissions.ResolveChannel(Guild, x, this, Permissions.ResolveGuild(Guild, x)), | Permissions.ResolveChannel(Guild, x, this, Permissions.ResolveGuild(Guild, x)), | ||||
| ChannelPermission.ReadMessages)).ToImmutableArray(); | |||||
| ChannelPermission.ViewChannel)).ToImmutableArray(); | |||||
| internal SocketTextChannel(DiscordSocketClient discord, ulong id, SocketGuild guild) | internal SocketTextChannel(DiscordSocketClient discord, ulong id, SocketGuild guild) | ||||
| : base(discord, id, guild) | : base(discord, id, guild) | ||||
| @@ -107,7 +107,7 @@ namespace Discord.WebSocket | |||||
| { | { | ||||
| var guildPerms = Permissions.ResolveGuild(Guild, user); | var guildPerms = Permissions.ResolveGuild(Guild, user); | ||||
| var channelPerms = Permissions.ResolveChannel(Guild, user, this, guildPerms); | var channelPerms = Permissions.ResolveChannel(Guild, user, this, guildPerms); | ||||
| if (Permissions.GetValue(channelPerms, ChannelPermission.ReadMessages)) | |||||
| if (Permissions.GetValue(channelPerms, ChannelPermission.ViewChannel)) | |||||
| return user; | return user; | ||||
| } | } | ||||
| return null; | return null; | ||||
| @@ -7,7 +7,7 @@ namespace Discord | |||||
| public partial class Tests | public partial class Tests | ||||
| { | { | ||||
| [Fact] | [Fact] | ||||
| public void TestChannelPermission() | |||||
| public Task TestChannelPermission() | |||||
| { | { | ||||
| var perm = new ChannelPermissions(); | var perm = new ChannelPermissions(); | ||||
| @@ -29,7 +29,7 @@ namespace Discord | |||||
| ulong textChannel = (ulong)( ChannelPermission.CreateInstantInvite | ulong textChannel = (ulong)( ChannelPermission.CreateInstantInvite | ||||
| | ChannelPermission.ManageChannels | | ChannelPermission.ManageChannels | ||||
| | ChannelPermission.AddReactions | | ChannelPermission.AddReactions | ||||
| | ChannelPermission.ReadMessages | |||||
| | ChannelPermission.ViewChannel | |||||
| | ChannelPermission.SendMessages | | ChannelPermission.SendMessages | ||||
| | ChannelPermission.SendTTSMessages | | ChannelPermission.SendTTSMessages | ||||
| | ChannelPermission.ManageMessages | | ChannelPermission.ManageMessages | ||||
| @@ -59,7 +59,7 @@ namespace Discord | |||||
| // DM Channels | // DM Channels | ||||
| ulong dmChannel = (ulong)( | ulong dmChannel = (ulong)( | ||||
| ChannelPermission.ReadMessages | |||||
| ChannelPermission.ViewChannel | |||||
| | ChannelPermission.SendMessages | | ChannelPermission.SendMessages | ||||
| | ChannelPermission.EmbedLinks | | ChannelPermission.EmbedLinks | ||||
| | ChannelPermission.AttachFiles | | ChannelPermission.AttachFiles | ||||
| @@ -82,9 +82,10 @@ namespace Discord | |||||
| | ChannelPermission.UseVAD | | ChannelPermission.UseVAD | ||||
| ); | ); | ||||
| Assert.Equal(groupChannel, ChannelPermissions.Group.RawValue); | Assert.Equal(groupChannel, ChannelPermissions.Group.RawValue); | ||||
| return Task.CompletedTask; | |||||
| } | } | ||||
| public void TestChannelPermissionModify() | |||||
| public Task TestChannelPermissionModify() | |||||
| { | { | ||||
| // test channel permission modify | // test channel permission modify | ||||
| @@ -96,7 +97,7 @@ namespace Discord | |||||
| // ensure that when modified it works | // ensure that when modified it works | ||||
| perm = perm.Modify(createInstantInvite: true); | perm = perm.Modify(createInstantInvite: true); | ||||
| Assert.True(perm.CreateInstantInvite); | Assert.True(perm.CreateInstantInvite); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.CreateInstantInvite); | |||||
| // set false again, move on to next permission | // set false again, move on to next permission | ||||
| perm = perm.Modify(createInstantInvite: false); | perm = perm.Modify(createInstantInvite: false); | ||||
| @@ -108,7 +109,7 @@ namespace Discord | |||||
| perm = perm.Modify(manageChannel: true); | perm = perm.Modify(manageChannel: true); | ||||
| Assert.True(perm.ManageChannel); | Assert.True(perm.ManageChannel); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageChannels); | |||||
| perm = perm.Modify(manageChannel: false); | perm = perm.Modify(manageChannel: false); | ||||
| Assert.False(perm.ManageChannel); | Assert.False(perm.ManageChannel); | ||||
| @@ -119,21 +120,21 @@ namespace Discord | |||||
| perm = perm.Modify(addReactions: true); | perm = perm.Modify(addReactions: true); | ||||
| Assert.True(perm.AddReactions); | Assert.True(perm.AddReactions); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AddReactions); | |||||
| perm = perm.Modify(addReactions: false); | perm = perm.Modify(addReactions: false); | ||||
| Assert.False(perm.AddReactions); | Assert.False(perm.AddReactions); | ||||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | ||||
| // individual permission test | // individual permission test | ||||
| Assert.False(perm.ReadMessages); | |||||
| Assert.False(perm.ViewChannel); | |||||
| perm = perm.Modify(readMessages: true); | |||||
| Assert.True(perm.ReadMessages); | |||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessages); | |||||
| perm = perm.Modify(viewChannel: true); | |||||
| Assert.True(perm.ViewChannel); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ViewChannel); | |||||
| perm = perm.Modify(readMessages: false); | |||||
| Assert.False(perm.ReadMessages); | |||||
| perm = perm.Modify(viewChannel: false); | |||||
| Assert.False(perm.ViewChannel); | |||||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | ||||
| // individual permission test | // individual permission test | ||||
| @@ -141,7 +142,7 @@ namespace Discord | |||||
| perm = perm.Modify(sendMessages: true); | perm = perm.Modify(sendMessages: true); | ||||
| Assert.True(perm.SendMessages); | Assert.True(perm.SendMessages); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendMessages); | |||||
| perm = perm.Modify(sendMessages: false); | perm = perm.Modify(sendMessages: false); | ||||
| Assert.False(perm.SendMessages); | Assert.False(perm.SendMessages); | ||||
| @@ -152,7 +153,7 @@ namespace Discord | |||||
| perm = perm.Modify(sendTTSMessages: true); | perm = perm.Modify(sendTTSMessages: true); | ||||
| Assert.True(perm.SendTTSMessages); | Assert.True(perm.SendTTSMessages); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendTTSMessages); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendTTSMessages); | |||||
| perm = perm.Modify(sendTTSMessages: false); | perm = perm.Modify(sendTTSMessages: false); | ||||
| Assert.False(perm.SendTTSMessages); | Assert.False(perm.SendTTSMessages); | ||||
| @@ -163,7 +164,7 @@ namespace Discord | |||||
| perm = perm.Modify(manageMessages: true); | perm = perm.Modify(manageMessages: true); | ||||
| Assert.True(perm.ManageMessages); | Assert.True(perm.ManageMessages); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageMessages); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageMessages); | |||||
| perm = perm.Modify(manageMessages: false); | perm = perm.Modify(manageMessages: false); | ||||
| Assert.False(perm.ManageMessages); | Assert.False(perm.ManageMessages); | ||||
| @@ -174,7 +175,7 @@ namespace Discord | |||||
| perm = perm.Modify(embedLinks: true); | perm = perm.Modify(embedLinks: true); | ||||
| Assert.True(perm.EmbedLinks); | Assert.True(perm.EmbedLinks); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.EmbedLinks); | |||||
| perm = perm.Modify(embedLinks: false); | perm = perm.Modify(embedLinks: false); | ||||
| Assert.False(perm.EmbedLinks); | Assert.False(perm.EmbedLinks); | ||||
| @@ -185,7 +186,7 @@ namespace Discord | |||||
| perm = perm.Modify(attachFiles: true); | perm = perm.Modify(attachFiles: true); | ||||
| Assert.True(perm.AttachFiles); | Assert.True(perm.AttachFiles); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AttachFiles); | |||||
| perm = perm.Modify(attachFiles: false); | perm = perm.Modify(attachFiles: false); | ||||
| Assert.False(perm.AttachFiles); | Assert.False(perm.AttachFiles); | ||||
| @@ -196,7 +197,7 @@ namespace Discord | |||||
| perm = perm.Modify(readMessageHistory: true); | perm = perm.Modify(readMessageHistory: true); | ||||
| Assert.True(perm.ReadMessageHistory); | Assert.True(perm.ReadMessageHistory); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ReadMessageHistory); | |||||
| perm = perm.Modify(readMessageHistory: false); | perm = perm.Modify(readMessageHistory: false); | ||||
| Assert.False(perm.ReadMessageHistory); | Assert.False(perm.ReadMessageHistory); | ||||
| @@ -207,7 +208,7 @@ namespace Discord | |||||
| perm = perm.Modify(mentionEveryone: true); | perm = perm.Modify(mentionEveryone: true); | ||||
| Assert.True(perm.MentionEveryone); | Assert.True(perm.MentionEveryone); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MentionEveryone); | |||||
| perm = perm.Modify(mentionEveryone: false); | perm = perm.Modify(mentionEveryone: false); | ||||
| Assert.False(perm.MentionEveryone); | Assert.False(perm.MentionEveryone); | ||||
| @@ -218,7 +219,7 @@ namespace Discord | |||||
| perm = perm.Modify(useExternalEmojis: true); | perm = perm.Modify(useExternalEmojis: true); | ||||
| Assert.True(perm.UseExternalEmojis); | Assert.True(perm.UseExternalEmojis); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseExternalEmojis); | |||||
| perm = perm.Modify(useExternalEmojis: false); | perm = perm.Modify(useExternalEmojis: false); | ||||
| Assert.False(perm.UseExternalEmojis); | Assert.False(perm.UseExternalEmojis); | ||||
| @@ -229,7 +230,7 @@ namespace Discord | |||||
| perm = perm.Modify(connect: true); | perm = perm.Modify(connect: true); | ||||
| Assert.True(perm.Connect); | Assert.True(perm.Connect); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Connect); | |||||
| perm = perm.Modify(connect: false); | perm = perm.Modify(connect: false); | ||||
| Assert.False(perm.Connect); | Assert.False(perm.Connect); | ||||
| @@ -240,7 +241,7 @@ namespace Discord | |||||
| perm = perm.Modify(speak: true); | perm = perm.Modify(speak: true); | ||||
| Assert.True(perm.Speak); | Assert.True(perm.Speak); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Speak); | |||||
| perm = perm.Modify(speak: false); | perm = perm.Modify(speak: false); | ||||
| Assert.False(perm.Speak); | Assert.False(perm.Speak); | ||||
| @@ -251,7 +252,7 @@ namespace Discord | |||||
| perm = perm.Modify(muteMembers: true); | perm = perm.Modify(muteMembers: true); | ||||
| Assert.True(perm.MuteMembers); | Assert.True(perm.MuteMembers); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MuteMembers); | |||||
| perm = perm.Modify(muteMembers: false); | perm = perm.Modify(muteMembers: false); | ||||
| Assert.False(perm.MuteMembers); | Assert.False(perm.MuteMembers); | ||||
| @@ -262,7 +263,7 @@ namespace Discord | |||||
| perm = perm.Modify(deafenMembers: true); | perm = perm.Modify(deafenMembers: true); | ||||
| Assert.True(perm.DeafenMembers); | Assert.True(perm.DeafenMembers); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.DeafenMembers); | |||||
| perm = perm.Modify(deafenMembers: false); | perm = perm.Modify(deafenMembers: false); | ||||
| Assert.False(perm.DeafenMembers); | Assert.False(perm.DeafenMembers); | ||||
| @@ -273,7 +274,7 @@ namespace Discord | |||||
| perm = perm.Modify(moveMembers: true); | perm = perm.Modify(moveMembers: true); | ||||
| Assert.True(perm.MoveMembers); | Assert.True(perm.MoveMembers); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MoveMembers); | |||||
| perm = perm.Modify(moveMembers: false); | perm = perm.Modify(moveMembers: false); | ||||
| Assert.False(perm.MoveMembers); | Assert.False(perm.MoveMembers); | ||||
| @@ -284,7 +285,7 @@ namespace Discord | |||||
| perm = perm.Modify(useVoiceActivation: true); | perm = perm.Modify(useVoiceActivation: true); | ||||
| Assert.True(perm.UseVAD); | Assert.True(perm.UseVAD); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseVAD); | |||||
| perm = perm.Modify(useVoiceActivation: false); | perm = perm.Modify(useVoiceActivation: false); | ||||
| Assert.False(perm.UseVAD); | Assert.False(perm.UseVAD); | ||||
| @@ -295,7 +296,7 @@ namespace Discord | |||||
| perm = perm.Modify(manageRoles: true); | perm = perm.Modify(manageRoles: true); | ||||
| Assert.True(perm.ManageRoles); | Assert.True(perm.ManageRoles); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageRoles); | |||||
| perm = perm.Modify(manageRoles: false); | perm = perm.Modify(manageRoles: false); | ||||
| Assert.False(perm.ManageRoles); | Assert.False(perm.ManageRoles); | ||||
| @@ -306,19 +307,21 @@ namespace Discord | |||||
| perm = perm.Modify(manageWebhooks: true); | perm = perm.Modify(manageWebhooks: true); | ||||
| Assert.True(perm.ManageWebhooks); | Assert.True(perm.ManageWebhooks); | ||||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks); | |||||
| Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageWebhooks); | |||||
| perm = perm.Modify(manageWebhooks: false); | perm = perm.Modify(manageWebhooks: false); | ||||
| Assert.False(perm.ManageWebhooks); | Assert.False(perm.ManageWebhooks); | ||||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | ||||
| return Task.CompletedTask; | |||||
| } | } | ||||
| [Fact] | [Fact] | ||||
| public void TestChannelTypeResolution() | |||||
| public Task TestChannelTypeResolution() | |||||
| { | { | ||||
| ITextChannel someChannel = null; | ITextChannel someChannel = null; | ||||
| // null channels will throw exception | // null channels will throw exception | ||||
| Assert.Throws<ArgumentException>(() => ChannelPermissions.All(someChannel)); | Assert.Throws<ArgumentException>(() => ChannelPermissions.All(someChannel)); | ||||
| return Task.CompletedTask; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -7,7 +7,7 @@ namespace Discord | |||||
| public partial class Tests | public partial class Tests | ||||
| { | { | ||||
| [Fact] | [Fact] | ||||
| public void TestGuildPermission() | |||||
| public Task TestGuildPermission() | |||||
| { | { | ||||
| // Test Guild Permission Constructors | // Test Guild Permission Constructors | ||||
| var perm = new GuildPermissions(); | var perm = new GuildPermissions(); | ||||
| @@ -46,10 +46,12 @@ namespace Discord | |||||
| GuildPermission.SendMessages | GuildPermission.SendTTSMessages | GuildPermission.EmbedLinks | | GuildPermission.SendMessages | GuildPermission.SendTTSMessages | GuildPermission.EmbedLinks | | ||||
| GuildPermission.AttachFiles); | GuildPermission.AttachFiles); | ||||
| Assert.Equal(webHookPermissions, GuildPermissions.Webhook.RawValue); | Assert.Equal(webHookPermissions, GuildPermissions.Webhook.RawValue); | ||||
| return Task.CompletedTask; | |||||
| } | } | ||||
| [Fact] | [Fact] | ||||
| public void TestGuildPermissionModify() | |||||
| public Task TestGuildPermissionModify() | |||||
| { | { | ||||
| var perm = new GuildPermissions(); | var perm = new GuildPermissions(); | ||||
| @@ -298,6 +300,7 @@ namespace Discord | |||||
| Assert.False(perm.ManageEmojis); | Assert.False(perm.ManageEmojis); | ||||
| Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); | Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); | ||||
| return Task.CompletedTask; | |||||
| } | } | ||||
| } | } | ||||