mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
Radicade Public Code
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using RadicadeServer.Discord.Webhooks;
|
||||
using RadicadeServer.Radicade.Discord;
|
||||
using Xunit;
|
||||
|
||||
namespace RadicadeServer.Tests;
|
||||
|
||||
public sealed class DiscordWebhookTests
|
||||
{
|
||||
[Fact]
|
||||
public void WebhookConfig_LoadsLocalFileAndLetsConfigurationOverrideIt()
|
||||
{
|
||||
var root = Path.Combine(AppContext.BaseDirectory, $"webhook-config-test-{Guid.NewGuid():N}");
|
||||
var webhookDirectory = Path.Combine(root, "Discord", "Webhooks");
|
||||
Directory.CreateDirectory(webhookDirectory);
|
||||
|
||||
try
|
||||
{
|
||||
File.WriteAllText(Path.Combine(webhookDirectory, "webhooks.json"), """
|
||||
{
|
||||
"BanAppeals": "https://discord.com/api/webhooks/123/appeal",
|
||||
"Reports": "https://discord.com/api/webhooks/123/file-report"
|
||||
}
|
||||
""");
|
||||
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
["Radicade:Discord:Webhooks:Reports"] = "https://discord.com/api/webhooks/456/config-report"
|
||||
})
|
||||
.Build();
|
||||
|
||||
WebhookConfig.Load(configuration, root);
|
||||
|
||||
Assert.Equal("https://discord.com/api/webhooks/123/appeal", WebhookConfig.BanAppealsUrl);
|
||||
Assert.Equal("https://discord.com/api/webhooks/456/config-report", WebhookConfig.ReportsUrl);
|
||||
}
|
||||
finally
|
||||
{
|
||||
WebhookConfig.Load(new ConfigurationBuilder().Build(), Path.Combine(root, "missing"));
|
||||
Directory.Delete(root, recursive: true);
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("Club", "https://cdn.radicade.app/ClubReport.png")]
|
||||
[InlineData("Player", "https://cdn.radicade.app/PlayerReport.png")]
|
||||
[InlineData("Room", "https://cdn.radicade.app/RoomReport.png")]
|
||||
[InlineData("Event", "https://cdn.radicade.app/EventReport.png")]
|
||||
[InlineData("Invention", "https://cdn.radicade.app/InventionReport.png")]
|
||||
public void ReportImage_MatchesReportCategory(string reportType, string expectedUrl)
|
||||
=> Assert.Equal(expectedUrl, WebhookImages.ForReport(reportType));
|
||||
|
||||
[Fact]
|
||||
public void ReportImage_IsNotAssignedToUnspecifiedCategories()
|
||||
=> Assert.Null(WebhookImages.ForReport("Board"));
|
||||
|
||||
[Fact]
|
||||
public void CategoryArtwork_IsSerializedAsThumbnailRatherThanLargeImage()
|
||||
{
|
||||
var payload = new DiscordPayload
|
||||
{
|
||||
Title = "Bug report",
|
||||
ThumbnailUrl = WebhookImages.BugReport
|
||||
};
|
||||
|
||||
using var document = JsonDocument.Parse(DiscordPayloadJson.Build(payload));
|
||||
var embed = document.RootElement.GetProperty("embeds")[0];
|
||||
|
||||
Assert.Equal(WebhookImages.BugReport, embed.GetProperty("thumbnail").GetProperty("url").GetString());
|
||||
Assert.False(embed.TryGetProperty("image", out _));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UploadedBugScreenshot_RemainsTheLargeImageAlongsideCategoryThumbnail()
|
||||
{
|
||||
var payload = new DiscordPayload
|
||||
{
|
||||
Title = "Bug report",
|
||||
ThumbnailUrl = WebhookImages.BugReport
|
||||
};
|
||||
|
||||
using var document = JsonDocument.Parse(DiscordPayloadJson.Build(payload, embedImageUrl: "attachment://screenshot.png"));
|
||||
var embed = document.RootElement.GetProperty("embeds")[0];
|
||||
|
||||
Assert.Equal("attachment://screenshot.png", embed.GetProperty("image").GetProperty("url").GetString());
|
||||
Assert.Equal(WebhookImages.BugReport, embed.GetProperty("thumbnail").GetProperty("url").GetString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user