Discord.Net/test/Discord.Net.Tests.Integration/DiscordRestApiClientTests.cs
2024-06-13 17:51:33 +12:00

53 lines
1.7 KiB
C#

using Discord.API;
using Discord.API.Rest;
using Discord.Net;
using Discord.Rest;
using FluentAssertions;
using System;
using System.IO;
using System.Threading.Tasks;
using Xunit;
namespace Discord;
[CollectionDefinition(nameof(DiscordRestApiClientTests), DisableParallelization = true)]
public class DiscordRestApiClientTests : IClassFixture<RestGuildFixture>, IAsyncDisposable
{
private readonly DiscordRestApiClient _apiClient;
private readonly IGuild _guild;
private readonly ITextChannel _channel;
public DiscordRestApiClientTests(RestGuildFixture guildFixture)
{
_guild = guildFixture.Guild;
_apiClient = guildFixture.Client.ApiClient;
_channel = _guild.CreateTextChannelAsync("testChannel").Result;
}
public async ValueTask DisposeAsync()
{
await _channel.DeleteAsync();
}
[Fact]
public async Task UploadFile_WithMaximumSize_DontThrowsException()
{
var fileSize = GuildHelper.GetUploadLimit(_guild.PremiumTier);
using var stream = new MemoryStream(new byte[fileSize]);
await _apiClient.UploadFileAsync(_channel.Id, new UploadFileParams(new FileAttachment(stream, "filename")));
}
[Fact]
public async Task UploadFile_WithOverSize_ThrowsException()
{
var fileSize = GuildHelper.GetUploadLimit(_guild.PremiumTier) + 1;
using var stream = new MemoryStream(new byte[fileSize]);
Func<Task> upload = async () =>
await _apiClient.UploadFileAsync(_channel.Id, new UploadFileParams(new FileAttachment(stream, "filename")));
await upload.Should().ThrowExactlyAsync<HttpException>()
.Where(e => e.DiscordCode == DiscordErrorCode.RequestEntityTooLarge);
}
}