Browse Source

Merge remote-tracking branch 'upstream/dev' into docs/faq-n-patches-offline

pull/1161/head
Still Hsu 7 years ago
parent
commit
f4fb027ea9
No known key found for this signature in database GPG Key ID: 8601A145FDA95209
15 changed files with 120 additions and 89 deletions
  1. +0
    -0
      experiment/Discord.Net.Rpc/Entities/Channels/RpcCategoryChannel.cs
  2. +1
    -0
      src/Discord.Net.Core/DiscordConfig.cs
  3. +4
    -4
      src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs
  4. +0
    -5
      src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
  5. +3
    -3
      src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs
  6. +10
    -0
      src/Discord.Net.WebSocket/API/Voice/HelloEvent.cs
  7. +3
    -1
      src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs
  8. +12
    -4
      src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs
  9. +9
    -3
      src/Discord.Net.WebSocket/Audio/AudioClient.cs
  10. +3
    -1
      src/Discord.Net.WebSocket/DiscordSocketClient.cs
  11. +1
    -1
      src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs
  12. +23
    -22
      test/Discord.Net.Tests/Tests.ChannelPermissions.cs
  13. +2
    -2
      test/Discord.Net.Tests/Tests.Channels.cs
  14. +34
    -29
      test/Discord.Net.Tests/Tests.GuildPermissions.cs
  15. +15
    -14
      test/Discord.Net.Tests/Tests.Permissions.cs

src/Discord.Net.Rpc/Entities/Channels/RpcCategoryChannel.cs → experiment/Discord.Net.Rpc/Entities/Channels/RpcCategoryChannel.cs View File


+ 1
- 0
src/Discord.Net.Core/DiscordConfig.cs View File

@@ -17,6 +17,7 @@ namespace Discord
/// .</para>
/// </returns>
public const int APIVersion = 6;
public const int VoiceAPIVersion = 3;
/// <summary>
/// Gets the Discord.Net version, including the build number.
/// </summary>


+ 4
- 4
src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs View File

@@ -138,7 +138,7 @@ namespace Discord
PermValue createInstantInvite = PermValue.Inherit,
PermValue manageChannel = PermValue.Inherit,
PermValue addReactions = PermValue.Inherit,
PermValue readMessages = PermValue.Inherit,
PermValue viewChannel = PermValue.Inherit,
PermValue sendMessages = PermValue.Inherit,
PermValue sendTTSMessages = PermValue.Inherit,
PermValue manageMessages = PermValue.Inherit,
@@ -155,7 +155,7 @@ namespace Discord
PermValue useVoiceActivation = PermValue.Inherit,
PermValue manageRoles = PermValue.Inherit,
PermValue manageWebhooks = PermValue.Inherit)
: this(0, 0, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages,
: this(0, 0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages,
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers,
moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { }

@@ -167,7 +167,7 @@ namespace Discord
PermValue? createInstantInvite = null,
PermValue? manageChannel = null,
PermValue? addReactions = null,
PermValue? readMessages = null,
PermValue? viewChannel = null,
PermValue? sendMessages = null,
PermValue? sendTTSMessages = null,
PermValue? manageMessages = null,
@@ -184,7 +184,7 @@ namespace Discord
PermValue? useVoiceActivation = null,
PermValue? manageRoles = null,
PermValue? manageWebhooks = null)
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages,
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages,
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers,
moveMembers, useVoiceActivation, manageRoles, manageWebhooks);



+ 0
- 5
src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs View File

@@ -358,10 +358,5 @@ namespace Discord.Rest
author = RestUser.Create(client, guild, model, webhookId);
return author;
}

public static bool IsNsfw(IChannel channel)
=> IsNsfw(channel.Name);
public static bool IsNsfw(string channelName) =>
channelName == "nsfw" || channelName.StartsWith("nsfw-");
}
}

+ 3
- 3
src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Rest

private bool _nsfw;
/// <inheritdoc />
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this);
public bool IsNsfw => _nsfw;

internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id)
: base(discord, guild, id)
@@ -135,7 +135,7 @@ namespace Discord.Rest
=> ChannelHelper.GetWebhookAsync(this, Discord, id, options);
public Task<IReadOnlyCollection<RestWebhook>> GetWebhooksAsync(RequestOptions options = null)
=> ChannelHelper.GetWebhooksAsync(this, Discord, options);
public Task<ICategoryChannel> GetCategoryAsync(RequestOptions options = null)
=> ChannelHelper.GetCategoryAsync(this, Discord, options);

@@ -169,7 +169,7 @@ namespace Discord.Rest
else
return AsyncEnumerable.Empty<IReadOnlyCollection<IMessage>>();
}
/// <inheritdoc />
IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options)
{


+ 10
- 0
src/Discord.Net.WebSocket/API/Voice/HelloEvent.cs View File

@@ -0,0 +1,10 @@
using Newtonsoft.Json;

namespace Discord.API.Voice
{
internal class HelloEvent
{
[JsonProperty("heartbeat_interval")]
public int HeartbeatInterval { get; set; }
}
}

+ 3
- 1
src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs View File

@@ -1,5 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;

namespace Discord.API.Voice
{
@@ -14,6 +15,7 @@ namespace Discord.API.Voice
[JsonProperty("modes")]
public string[] Modes { get; set; }
[JsonProperty("heartbeat_interval")]
[Obsolete("This field is errorneous and should not be used", true)]
public int HeartbeatInterval { get; set; }
}
}

+ 12
- 4
src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs View File

@@ -1,4 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable CS1591
namespace Discord.API.Voice
{
internal enum VoiceOpCode : byte
@@ -11,11 +11,19 @@ namespace Discord.API.Voice
Ready = 2,
/// <summary> C→S - Used to keep the connection alive and measure latency. </summary>
Heartbeat = 3,
/// <summary> C←S - Used to reply to a client's heartbeat. </summary>
HeartbeatAck = 3,
/// <summary> C←S - Used to provide an encryption key to the client. </summary>
SessionDescription = 4,
/// <summary> C↔S - Used to inform that a certain user is speaking. </summary>
Speaking = 5
Speaking = 5,
/// <summary> C←S - Used to reply to a client's heartbeat. </summary>
HeartbeatAck = 6,
/// <summary> C→S - Used to resume a connection. </summary>
Resume = 7,
/// <summary> C←S - Used to inform the client the heartbeat interval. </summary>
Hello = 8,
/// <summary> C←S - Used to acknowledge a resumed connection. </summary>
Resumed = 9,
/// <summary> C←S - Used to notify that a client has disconnected. </summary>
ClientDisconnect = 13,
}
}

+ 9
- 3
src/Discord.Net.WebSocket/Audio/AudioClient.cs View File

@@ -107,7 +107,7 @@ namespace Discord.Audio
private async Task OnConnectingAsync()
{
await _audioLogger.DebugAsync("Connecting ApiClient").ConfigureAwait(false);
await ApiClient.ConnectAsync("wss://" + _url).ConfigureAwait(false);
await ApiClient.ConnectAsync("wss://" + _url + "?v=" + DiscordConfig.VoiceAPIVersion).ConfigureAwait(false);
await _audioLogger.DebugAsync("Listening on port " + ApiClient.UdpPort).ConfigureAwait(false);
await _audioLogger.DebugAsync("Sending Identity").ConfigureAwait(false);
await ApiClient.SendIdentityAsync(_userId, _sessionId, _token).ConfigureAwait(false);
@@ -216,6 +216,14 @@ namespace Discord.Audio
{
switch (opCode)
{
case VoiceOpCode.Hello:
{
await _audioLogger.DebugAsync("Received Hello").ConfigureAwait(false);
var data = (payload as JToken).ToObject<HelloEvent>(_serializer);

_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken);
}
break;
case VoiceOpCode.Ready:
{
await _audioLogger.DebugAsync("Received Ready").ConfigureAwait(false);
@@ -225,8 +233,6 @@ namespace Discord.Audio

if (!data.Modes.Contains(DiscordVoiceAPIClient.Mode))
throw new InvalidOperationException($"Discord does not support {DiscordVoiceAPIClient.Mode}");

_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken);
ApiClient.SetUdpEndpoint(data.Ip, data.Port);
await ApiClient.SendDiscoveryAsync(_ssrc).ConfigureAwait(false);


+ 3
- 1
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -1442,7 +1442,9 @@ namespace Discord.WebSocket
after = SocketVoiceState.Create(null, data);
}

user = guild.GetUser(data.UserId) ?? guild.AddOrUpdateUser(data.Member.Value); //per g250k, this is always sent
// per g250k, this should always be sent, but apparently not always
user = guild.GetUser(data.UserId)
?? (data.Member.IsSpecified ? guild.AddOrUpdateUser(data.Member.Value) : null);
if (user == null)
{
await UnknownGuildUserAsync(type, data.UserId, guild.Id).ConfigureAwait(false);


+ 1
- 1
src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs View File

@@ -26,7 +26,7 @@ namespace Discord.WebSocket

private bool _nsfw;
/// <inheritdoc />
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this);
public bool IsNsfw => _nsfw;

/// <inheritdoc />
public string Mention => MentionUtils.MentionChannel(Id);


+ 23
- 22
test/Discord.Net.Tests/Tests.ChannelPermissions.cs View File

@@ -68,6 +68,7 @@ namespace Discord
ulong voiceChannel = (ulong)(
ChannelPermission.CreateInstantInvite
| ChannelPermission.ManageChannels
| ChannelPermission.ViewChannel
| ChannelPermission.Connect
| ChannelPermission.Speak
| ChannelPermission.MuteMembers
@@ -82,7 +83,7 @@ namespace Discord
ulong dmChannel = (ulong)(
ChannelPermission.ViewChannel
| ChannelPermission.SendMessages
| ChannelPermission.EmbedLinks
| ChannelPermission.EmbedLinks
| ChannelPermission.AttachFiles
| ChannelPermission.ReadMessageHistory
| ChannelPermission.UseExternalEmojis
@@ -118,7 +119,7 @@ namespace Discord
// ensure that when modified it works
perm = perm.Modify(createInstantInvite: true);
Assert.True(perm.CreateInstantInvite);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.CreateInstantInvite);
Assert.Equal((ulong)ChannelPermission.CreateInstantInvite, perm.RawValue);

// set false again, move on to next permission
perm = perm.Modify(createInstantInvite: false);
@@ -130,7 +131,7 @@ namespace Discord

perm = perm.Modify(manageChannel: true);
Assert.True(perm.ManageChannel);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageChannels);
Assert.Equal((ulong)ChannelPermission.ManageChannels, perm.RawValue);

perm = perm.Modify(manageChannel: false);
Assert.False(perm.ManageChannel);
@@ -141,7 +142,7 @@ namespace Discord

perm = perm.Modify(addReactions: true);
Assert.True(perm.AddReactions);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AddReactions);
Assert.Equal((ulong)ChannelPermission.AddReactions, perm.RawValue);

perm = perm.Modify(addReactions: false);
Assert.False(perm.AddReactions);
@@ -152,7 +153,7 @@ namespace Discord

perm = perm.Modify(viewChannel: true);
Assert.True(perm.ViewChannel);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ViewChannel);
Assert.Equal((ulong)ChannelPermission.ViewChannel, perm.RawValue);

perm = perm.Modify(viewChannel: false);
Assert.False(perm.ViewChannel);
@@ -163,7 +164,7 @@ namespace Discord

perm = perm.Modify(sendMessages: true);
Assert.True(perm.SendMessages);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendMessages);
Assert.Equal((ulong)ChannelPermission.SendMessages, perm.RawValue);

perm = perm.Modify(sendMessages: false);
Assert.False(perm.SendMessages);
@@ -174,7 +175,7 @@ namespace Discord

perm = perm.Modify(sendTTSMessages: true);
Assert.True(perm.SendTTSMessages);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendTTSMessages);
Assert.Equal((ulong)ChannelPermission.SendTTSMessages, perm.RawValue);

perm = perm.Modify(sendTTSMessages: false);
Assert.False(perm.SendTTSMessages);
@@ -185,7 +186,7 @@ namespace Discord

perm = perm.Modify(manageMessages: true);
Assert.True(perm.ManageMessages);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageMessages);
Assert.Equal((ulong)ChannelPermission.ManageMessages, perm.RawValue);

perm = perm.Modify(manageMessages: false);
Assert.False(perm.ManageMessages);
@@ -196,7 +197,7 @@ namespace Discord

perm = perm.Modify(embedLinks: true);
Assert.True(perm.EmbedLinks);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.EmbedLinks);
Assert.Equal((ulong)ChannelPermission.EmbedLinks, perm.RawValue);

perm = perm.Modify(embedLinks: false);
Assert.False(perm.EmbedLinks);
@@ -207,7 +208,7 @@ namespace Discord

perm = perm.Modify(attachFiles: true);
Assert.True(perm.AttachFiles);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AttachFiles);
Assert.Equal((ulong)ChannelPermission.AttachFiles, perm.RawValue);

perm = perm.Modify(attachFiles: false);
Assert.False(perm.AttachFiles);
@@ -218,7 +219,7 @@ namespace Discord

perm = perm.Modify(readMessageHistory: true);
Assert.True(perm.ReadMessageHistory);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ReadMessageHistory);
Assert.Equal((ulong)ChannelPermission.ReadMessageHistory, perm.RawValue);

perm = perm.Modify(readMessageHistory: false);
Assert.False(perm.ReadMessageHistory);
@@ -229,7 +230,7 @@ namespace Discord

perm = perm.Modify(mentionEveryone: true);
Assert.True(perm.MentionEveryone);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MentionEveryone);
Assert.Equal((ulong)ChannelPermission.MentionEveryone, perm.RawValue);

perm = perm.Modify(mentionEveryone: false);
Assert.False(perm.MentionEveryone);
@@ -240,7 +241,7 @@ namespace Discord

perm = perm.Modify(useExternalEmojis: true);
Assert.True(perm.UseExternalEmojis);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseExternalEmojis);
Assert.Equal((ulong)ChannelPermission.UseExternalEmojis, perm.RawValue);

perm = perm.Modify(useExternalEmojis: false);
Assert.False(perm.UseExternalEmojis);
@@ -251,18 +252,18 @@ namespace Discord

perm = perm.Modify(connect: true);
Assert.True(perm.Connect);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Connect);
Assert.Equal((ulong)ChannelPermission.Connect, perm.RawValue);

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)ChannelPermission.Speak);
Assert.Equal((ulong)ChannelPermission.Speak, perm.RawValue);

perm = perm.Modify(speak: false);
Assert.False(perm.Speak);
@@ -273,7 +274,7 @@ namespace Discord

perm = perm.Modify(muteMembers: true);
Assert.True(perm.MuteMembers);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MuteMembers);
Assert.Equal((ulong)ChannelPermission.MuteMembers, perm.RawValue);

perm = perm.Modify(muteMembers: false);
Assert.False(perm.MuteMembers);
@@ -284,7 +285,7 @@ namespace Discord

perm = perm.Modify(deafenMembers: true);
Assert.True(perm.DeafenMembers);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.DeafenMembers);
Assert.Equal((ulong)ChannelPermission.DeafenMembers, perm.RawValue);

perm = perm.Modify(deafenMembers: false);
Assert.False(perm.DeafenMembers);
@@ -295,7 +296,7 @@ namespace Discord

perm = perm.Modify(moveMembers: true);
Assert.True(perm.MoveMembers);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MoveMembers);
Assert.Equal((ulong)ChannelPermission.MoveMembers, perm.RawValue);

perm = perm.Modify(moveMembers: false);
Assert.False(perm.MoveMembers);
@@ -306,7 +307,7 @@ namespace Discord

perm = perm.Modify(useVoiceActivation: true);
Assert.True(perm.UseVAD);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseVAD);
Assert.Equal((ulong)ChannelPermission.UseVAD, perm.RawValue);

perm = perm.Modify(useVoiceActivation: false);
Assert.False(perm.UseVAD);
@@ -317,7 +318,7 @@ namespace Discord

perm = perm.Modify(manageRoles: true);
Assert.True(perm.ManageRoles);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageRoles);
Assert.Equal((ulong)ChannelPermission.ManageRoles, perm.RawValue);

perm = perm.Modify(manageRoles: false);
Assert.False(perm.ManageRoles);
@@ -328,7 +329,7 @@ namespace Discord

perm = perm.Modify(manageWebhooks: true);
Assert.True(perm.ManageWebhooks);
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageWebhooks);
Assert.Equal((ulong)ChannelPermission.ManageWebhooks, perm.RawValue);

perm = perm.Modify(manageWebhooks: false);
Assert.False(perm.ManageWebhooks);


+ 2
- 2
test/Discord.Net.Tests/Tests.Channels.cs View File

@@ -169,7 +169,7 @@ namespace Discord
private async Task CheckChannelCategories(RestCategoryChannel[] categories, RestGuildChannel[] allChannels)
{
// 2 categories
Assert.Equal(categories.Length, 2);
Assert.Equal(2, categories.Length);

var cat1 = categories.Where(x => x.Name == "cat1").FirstOrDefault();
var cat2 = categories.Where(x => x.Name == "cat2").FirstOrDefault();
@@ -202,7 +202,7 @@ namespace Discord

Assert.NotNull(voice1);
Assert.NotNull(voice3);
Assert.Equal(voice1.CategoryId, cat2.Id);
var voice1Cat = await voice1.GetCategoryAsync();
Assert.Equal(voice1Cat.Id, cat2.Id);


+ 34
- 29
test/Discord.Net.Tests/Tests.GuildPermissions.cs View File

@@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Xunit;

@@ -38,9 +39,13 @@ namespace Discord
copy = GuildPermissions.Webhook.Modify();
Assert.Equal(GuildPermissions.Webhook.RawValue, copy.RawValue);

// Get all distinct values (ReadMessages = ViewChannel)
var enumValues = (Enum.GetValues(typeof(GuildPermission)) as GuildPermission[])
.Distinct()
.ToArray();
// test GuildPermissions.All
ulong sumOfAllGuildPermissions = 0;
foreach(var v in Enum.GetValues(typeof(GuildPermission)))
foreach(var v in enumValues)
{
sumOfAllGuildPermissions |= (ulong)v;
}
@@ -49,9 +54,9 @@ namespace Discord
Assert.Equal(sumOfAllGuildPermissions, GuildPermissions.All.RawValue);
Assert.Equal((ulong)0, GuildPermissions.None.RawValue);

// assert that GuildPermissions.All contains the same number of permissions as the
// assert that GuildPermissions.All contains the same number of permissions as the
// GuildPermissions enum
Assert.Equal(Enum.GetValues(typeof(GuildPermission)).Length, GuildPermissions.All.ToList().Count);
Assert.Equal(enumValues.Length, GuildPermissions.All.ToList().Count);

// assert that webhook has the same raw value
ulong webHookPermissions = (ulong)(
@@ -76,7 +81,7 @@ namespace Discord
// ensure that when we modify it the parameter works
perm = perm.Modify(createInstantInvite: true);
Assert.True(perm.CreateInstantInvite);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite);
Assert.Equal((ulong)GuildPermission.CreateInstantInvite, perm.RawValue);

// set it false again, then move on to the next permission
perm = perm.Modify(createInstantInvite: false);
@@ -86,7 +91,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(kickMembers: true);
Assert.True(perm.KickMembers);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.KickMembers);
Assert.Equal((ulong)GuildPermission.KickMembers, perm.RawValue);

perm = perm.Modify(kickMembers: false);
Assert.False(perm.KickMembers);
@@ -95,7 +100,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(banMembers: true);
Assert.True(perm.BanMembers);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.BanMembers);
Assert.Equal((ulong)GuildPermission.BanMembers, perm.RawValue);

perm = perm.Modify(banMembers: false);
Assert.False(perm.BanMembers);
@@ -104,7 +109,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(administrator: true);
Assert.True(perm.Administrator);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Administrator);
Assert.Equal((ulong)GuildPermission.Administrator, perm.RawValue);

perm = perm.Modify(administrator: false);
Assert.False(perm.Administrator);
@@ -113,7 +118,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageChannels: true);
Assert.True(perm.ManageChannels);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels);
Assert.Equal((ulong)GuildPermission.ManageChannels, perm.RawValue);

perm = perm.Modify(manageChannels: false);
Assert.False(perm.ManageChannels);
@@ -122,7 +127,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageGuild: true);
Assert.True(perm.ManageGuild);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageGuild);
Assert.Equal((ulong)GuildPermission.ManageGuild, perm.RawValue);

perm = perm.Modify(manageGuild: false);
Assert.False(perm.ManageGuild);
@@ -132,7 +137,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(addReactions: true);
Assert.True(perm.AddReactions);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions);
Assert.Equal((ulong)GuildPermission.AddReactions, perm.RawValue);

perm = perm.Modify(addReactions: false);
Assert.False(perm.AddReactions);
@@ -142,7 +147,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(viewAuditLog: true);
Assert.True(perm.ViewAuditLog);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewAuditLog);
Assert.Equal((ulong)GuildPermission.ViewAuditLog, perm.RawValue);

perm = perm.Modify(viewAuditLog: false);
Assert.False(perm.ViewAuditLog);
@@ -152,7 +157,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(viewChannel: true);
Assert.True(perm.ViewChannel);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewChannel);
Assert.Equal((ulong)GuildPermission.ViewChannel, perm.RawValue);

perm = perm.Modify(viewChannel: false);
Assert.False(perm.ViewChannel);
@@ -162,7 +167,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(sendMessages: true);
Assert.True(perm.SendMessages);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages);
Assert.Equal((ulong)GuildPermission.SendMessages, perm.RawValue);

perm = perm.Modify(sendMessages: false);
Assert.False(perm.SendMessages);
@@ -171,7 +176,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(embedLinks: true);
Assert.True(perm.EmbedLinks);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks);
Assert.Equal((ulong)GuildPermission.EmbedLinks, perm.RawValue);

perm = perm.Modify(embedLinks: false);
Assert.False(perm.EmbedLinks);
@@ -180,7 +185,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(attachFiles: true);
Assert.True(perm.AttachFiles);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles);
Assert.Equal((ulong)GuildPermission.AttachFiles, perm.RawValue);

perm = perm.Modify(attachFiles: false);
Assert.False(perm.AttachFiles);
@@ -189,7 +194,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(readMessageHistory: true);
Assert.True(perm.ReadMessageHistory);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory);
Assert.Equal((ulong)GuildPermission.ReadMessageHistory, perm.RawValue);

perm = perm.Modify(readMessageHistory: false);
Assert.False(perm.ReadMessageHistory);
@@ -198,7 +203,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(mentionEveryone: true);
Assert.True(perm.MentionEveryone);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone);
Assert.Equal((ulong)GuildPermission.MentionEveryone, perm.RawValue);

perm = perm.Modify(mentionEveryone: false);
Assert.False(perm.MentionEveryone);
@@ -207,7 +212,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(useExternalEmojis: true);
Assert.True(perm.UseExternalEmojis);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis);
Assert.Equal((ulong)GuildPermission.UseExternalEmojis, perm.RawValue);

perm = perm.Modify(useExternalEmojis: false);
Assert.False(perm.UseExternalEmojis);
@@ -216,7 +221,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(connect: true);
Assert.True(perm.Connect);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect);
Assert.Equal((ulong)GuildPermission.Connect, perm.RawValue);

perm = perm.Modify(connect: false);
Assert.False(perm.Connect);
@@ -225,7 +230,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(speak: true);
Assert.True(perm.Speak);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak);
Assert.Equal((ulong)GuildPermission.Speak, perm.RawValue);

perm = perm.Modify(speak: false);
Assert.False(perm.Speak);
@@ -234,7 +239,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(muteMembers: true);
Assert.True(perm.MuteMembers);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers);
Assert.Equal((ulong)GuildPermission.MuteMembers, perm.RawValue);

perm = perm.Modify(muteMembers: false);
Assert.False(perm.MuteMembers);
@@ -243,7 +248,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(deafenMembers: true);
Assert.True(perm.DeafenMembers);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers);
Assert.Equal((ulong)GuildPermission.DeafenMembers, perm.RawValue);

perm = perm.Modify(deafenMembers: false);
Assert.False(perm.DeafenMembers);
@@ -252,7 +257,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(moveMembers: true);
Assert.True(perm.MoveMembers);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers);
Assert.Equal((ulong)GuildPermission.MoveMembers, perm.RawValue);

perm = perm.Modify(moveMembers: false);
Assert.False(perm.MoveMembers);
@@ -261,7 +266,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(useVoiceActivation: true);
Assert.True(perm.UseVAD);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD);
Assert.Equal((ulong)GuildPermission.UseVAD, perm.RawValue);

perm = perm.Modify(useVoiceActivation: false);
Assert.False(perm.UseVAD);
@@ -270,7 +275,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(changeNickname: true);
Assert.True(perm.ChangeNickname);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ChangeNickname);
Assert.Equal((ulong)GuildPermission.ChangeNickname, perm.RawValue);

perm = perm.Modify(changeNickname: false);
Assert.False(perm.ChangeNickname);
@@ -279,7 +284,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageNicknames: true);
Assert.True(perm.ManageNicknames);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageNicknames);
Assert.Equal((ulong)GuildPermission.ManageNicknames, perm.RawValue);

perm = perm.Modify(manageNicknames: false);
Assert.False(perm.ManageNicknames);
@@ -288,7 +293,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageRoles: true);
Assert.True(perm.ManageRoles);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles);
Assert.Equal((ulong)GuildPermission.ManageRoles, perm.RawValue);

perm = perm.Modify(manageRoles: false);
Assert.False(perm.ManageRoles);
@@ -297,7 +302,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageWebhooks: true);
Assert.True(perm.ManageWebhooks);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks);
Assert.Equal((ulong)GuildPermission.ManageWebhooks, perm.RawValue);

perm = perm.Modify(manageWebhooks: false);
Assert.False(perm.ManageWebhooks);
@@ -306,7 +311,7 @@ namespace Discord
// individual permission test
perm = perm.Modify(manageEmojis: true);
Assert.True(perm.ManageEmojis);
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageEmojis);
Assert.Equal((ulong)GuildPermission.ManageEmojis, perm.RawValue);

perm = perm.Modify(manageEmojis: false);
Assert.False(perm.ManageEmojis);


+ 15
- 14
test/Discord.Net.Tests/Tests.Permissions.cs View File

@@ -77,7 +77,7 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
///
/// Tests that text channel permissions get the right value
/// from the Has method.
/// </summary>
@@ -114,7 +114,7 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
///
/// Tests that no channel permissions get the right value
/// from the Has method.
/// </summary>
@@ -151,7 +151,7 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
///
/// Tests that the dm channel permissions get the right value
/// from the Has method.
/// </summary>
@@ -188,7 +188,7 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
///
/// Tests that the group channel permissions get the right value
/// from the Has method.
/// </summary>
@@ -225,7 +225,7 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
///
/// Tests that the voice channel permissions get the right value
/// from the Has method.
/// </summary>
@@ -239,7 +239,7 @@ namespace Discord
TestHelper(value, ChannelPermission.CreateInstantInvite, true);
TestHelper(value, ChannelPermission.ManageChannels, true);
TestHelper(value, ChannelPermission.AddReactions, false);
TestHelper(value, ChannelPermission.ViewChannel, false);
TestHelper(value, ChannelPermission.ViewChannel, true);
TestHelper(value, ChannelPermission.SendMessages, false);
TestHelper(value, ChannelPermission.SendTTSMessages, false);
TestHelper(value, ChannelPermission.ManageMessages, false);
@@ -262,8 +262,8 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
/// returns the correct value when no permissions are set.
/// </summary>
/// <returns></returns>
@@ -305,8 +305,8 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
/// returns the correct value when all permissions are set.
/// </summary>
/// <returns></returns>
@@ -349,8 +349,8 @@ namespace Discord

/// <summary>
/// Tests for the <see cref="Discord.Permissions"/> class.
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
///
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/>
/// returns the correct value when webhook permissions are set.
/// </summary>
/// <returns></returns>
@@ -659,7 +659,7 @@ namespace Discord
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Allow);
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Allow);
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit);
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit);
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Allow);
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit);
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit);
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit);
@@ -682,7 +682,7 @@ namespace Discord
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Deny);
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Deny);
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit);
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit);
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Deny);
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit);
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit);
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit);
@@ -709,6 +709,7 @@ namespace Discord
/// of the OverwritePermissions.
/// </summary>
/// <returns></returns>
[Fact]
public Task TestOverwritePermissionModifyNoParam()
{
// test for all Text allowed, none denied


Loading…
Cancel
Save