DashboardControllerTests.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System.IO;
  2. using System.Net;
  3. using System.Net.Http.Json;
  4. using System.Net.Mime;
  5. using System.Text;
  6. using System.Text.Json;
  7. using System.Threading.Tasks;
  8. using Jellyfin.Api.Models;
  9. using Jellyfin.Extensions.Json;
  10. using Xunit;
  11. namespace Jellyfin.Server.Integration.Tests.Controllers
  12. {
  13. public sealed class DashboardControllerTests : IClassFixture<JellyfinApplicationFactory>
  14. {
  15. private readonly JellyfinApplicationFactory _factory;
  16. private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
  17. private static string? _accessToken;
  18. public DashboardControllerTests(JellyfinApplicationFactory factory)
  19. {
  20. _factory = factory;
  21. }
  22. [Fact]
  23. public async Task GetDashboardConfigurationPage_NonExistingPage_NotFound()
  24. {
  25. var client = _factory.CreateClient();
  26. var response = await client.GetAsync("web/ConfigurationPage?name=ThisPageDoesntExists");
  27. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  28. }
  29. [Fact]
  30. public async Task GetDashboardConfigurationPage_ExistingPage_CorrectPage()
  31. {
  32. var client = _factory.CreateClient();
  33. var response = await client.GetAsync("/web/ConfigurationPage?name=TestPlugin");
  34. Assert.Equal(HttpStatusCode.OK, response.StatusCode);
  35. Assert.Equal(MediaTypeNames.Text.Html, response.Content.Headers.ContentType?.MediaType);
  36. StreamReader reader = new StreamReader(typeof(TestPlugin).Assembly.GetManifestResourceStream("Jellyfin.Server.Integration.Tests.TestPage.html")!);
  37. Assert.Equal(await response.Content.ReadAsStringAsync(), await reader.ReadToEndAsync());
  38. }
  39. [Fact]
  40. public async Task GetDashboardConfigurationPage_BrokenPage_NotFound()
  41. {
  42. var client = _factory.CreateClient();
  43. var response = await client.GetAsync("/web/ConfigurationPage?name=BrokenPage");
  44. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  45. }
  46. [Fact]
  47. public async Task GetConfigurationPages_NoParams_AllConfigurationPages()
  48. {
  49. var client = _factory.CreateClient();
  50. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
  51. var response = await client.GetAsync("/web/ConfigurationPages");
  52. Assert.Equal(HttpStatusCode.OK, response.StatusCode);
  53. _ = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOptions);
  54. // TODO: check content
  55. }
  56. [Fact]
  57. public async Task GetConfigurationPages_True_MainMenuConfigurationPages()
  58. {
  59. var client = _factory.CreateClient();
  60. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
  61. var response = await client.GetAsync("/web/ConfigurationPages?enableInMainMenu=true");
  62. Assert.Equal(HttpStatusCode.OK, response.StatusCode);
  63. Assert.Equal(MediaTypeNames.Application.Json, response.Content.Headers.ContentType?.MediaType);
  64. Assert.Equal(Encoding.UTF8.BodyName, response.Content.Headers.ContentType?.CharSet);
  65. var data = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOptions);
  66. Assert.NotNull(data);
  67. Assert.Empty(data);
  68. }
  69. }
  70. }