MediaStructureControllerTests.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System;
  2. using System.Net;
  3. using System.Net.Http;
  4. using System.Net.Http.Json;
  5. using System.Net.Http.Headers;
  6. using System.Net.Mime;
  7. using System.Text.Json;
  8. using System.Threading.Tasks;
  9. using Jellyfin.Api.Models.LibraryStructureDto;
  10. using Jellyfin.Extensions.Json;
  11. using MediaBrowser.Model.Configuration;
  12. using Xunit;
  13. namespace Jellyfin.Server.Integration.Tests.Controllers
  14. {
  15. public sealed class MediaStructureControllerTests : IClassFixture<JellyfinApplicationFactory>
  16. {
  17. private readonly JellyfinApplicationFactory _factory;
  18. private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
  19. private static string? _accessToken;
  20. public MediaStructureControllerTests(JellyfinApplicationFactory factory)
  21. {
  22. _factory = factory;
  23. }
  24. [Fact]
  25. public async Task RenameVirtualFolder_WhiteSpaceName_ReturnsBadRequest()
  26. {
  27. var client = _factory.CreateClient();
  28. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  29. using var postContent = new ByteArrayContent(Array.Empty<byte>());
  30. var response = await client.PostAsync("Library/VirtualFolders/Name?name=+&newName=test", postContent).ConfigureAwait(false);
  31. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  32. }
  33. [Fact]
  34. public async Task RenameVirtualFolder_WhiteSpaceNewName_ReturnsBadRequest()
  35. {
  36. var client = _factory.CreateClient();
  37. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  38. using var postContent = new ByteArrayContent(Array.Empty<byte>());
  39. var response = await client.PostAsync("Library/VirtualFolders/Name?name=test&newName=+", postContent).ConfigureAwait(false);
  40. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  41. }
  42. [Fact]
  43. public async Task RenameVirtualFolder_NameDoesntExist_ReturnsNotFound()
  44. {
  45. var client = _factory.CreateClient();
  46. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  47. using var postContent = new ByteArrayContent(Array.Empty<byte>());
  48. var response = await client.PostAsync("Library/VirtualFolders/Name?name=doesnt+exist&newName=test", postContent).ConfigureAwait(false);
  49. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  50. }
  51. [Fact]
  52. public async Task AddMediaPath_PathDoesntExist_ReturnsNotFound()
  53. {
  54. var client = _factory.CreateClient();
  55. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  56. var data = new MediaPathDto()
  57. {
  58. Name = "Test",
  59. Path = "/this/path/doesnt/exist"
  60. };
  61. var response = await client.PostAsJsonAsync("Library/VirtualFolders/Paths", data, _jsonOptions).ConfigureAwait(false);
  62. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  63. }
  64. [Fact]
  65. public async Task UpdateMediaPath_WhiteSpaceName_ReturnsBadRequest()
  66. {
  67. var client = _factory.CreateClient();
  68. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  69. var data = new UpdateMediaPathRequestDto()
  70. {
  71. Name = " ",
  72. PathInfo = new MediaPathInfo("test")
  73. };
  74. var response = await client.PostAsJsonAsync("Library/VirtualFolders/Paths/Update", data, _jsonOptions).ConfigureAwait(false);
  75. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  76. }
  77. [Fact]
  78. public async Task RemoveMediaPath_WhiteSpaceName_ReturnsBadRequest()
  79. {
  80. var client = _factory.CreateClient();
  81. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  82. var response = await client.DeleteAsync("Library/VirtualFolders/Paths?name=+").ConfigureAwait(false);
  83. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  84. }
  85. [Fact]
  86. public async Task RemoveMediaPath_PathDoesntExist_ReturnsNotFound()
  87. {
  88. var client = _factory.CreateClient();
  89. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  90. var response = await client.DeleteAsync("Library/VirtualFolders/Paths?name=none&path=%2Fthis%2Fpath%2Fdoesnt%2Fexist").ConfigureAwait(false);
  91. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  92. }
  93. }
  94. }