You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Tests.DiscordWebhookClient.cs 2.9 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Discord.Webhook;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using Xunit;
  6. namespace Discord
  7. {
  8. /// <summary>
  9. /// Tests the <see cref="DiscordWebhookClient.ParseWebhookUrl(string, out ulong, out string)"/> function.
  10. /// </summary>
  11. public class DiscordWebhookClientTests
  12. {
  13. [Theory]
  14. [InlineData("https://discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK",
  15. 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  16. // ptb, canary, etc will have slightly different urls
  17. [InlineData("https://ptb.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK",
  18. 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  19. [InlineData("https://canary.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK",
  20. 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  21. // don't care about https
  22. [InlineData("http://canary.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK",
  23. 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  24. // this is the minimum that the regex cares about
  25. [InlineData("discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK",
  26. 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  27. public void TestWebhook_Valid(string webhookurl, ulong expectedId, string expectedToken)
  28. {
  29. DiscordWebhookClient.ParseWebhookUrl(webhookurl, out ulong id, out string token);
  30. Assert.Equal(expectedId, id);
  31. Assert.Equal(expectedToken, token);
  32. }
  33. [Theory]
  34. [InlineData("")]
  35. [InlineData(" ")]
  36. [InlineData(null)]
  37. public void TestWebhook_Null(string webhookurl)
  38. {
  39. Assert.Throws<ArgumentNullException>(() =>
  40. {
  41. DiscordWebhookClient.ParseWebhookUrl(webhookurl, out ulong id, out string token);
  42. });
  43. }
  44. [Theory]
  45. [InlineData("123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")]
  46. // trailing slash
  47. [InlineData("https://discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK/")]
  48. public void TestWebhook_Invalid(string webhookurl)
  49. {
  50. Assert.Throws<ArgumentException>(() =>
  51. {
  52. DiscordWebhookClient.ParseWebhookUrl(webhookurl, out ulong id, out string token);
  53. });
  54. }
  55. }
  56. }