MediaStructureControllerTests.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Net;
  2. using System.Net.Http;
  3. using System.Net.Http.Headers;
  4. using System.Net.Mime;
  5. using System.Text.Json;
  6. using System.Threading.Tasks;
  7. using Jellyfin.Api.Models.LibraryStructureDto;
  8. using Jellyfin.Extensions.Json;
  9. using Xunit;
  10. namespace Jellyfin.Server.Integration.Tests.Controllers
  11. {
  12. public sealed class MediaStructureControllerTests : IClassFixture<JellyfinApplicationFactory>
  13. {
  14. private readonly JellyfinApplicationFactory _factory;
  15. private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
  16. private static string? _accessToken;
  17. public MediaStructureControllerTests(JellyfinApplicationFactory factory)
  18. {
  19. _factory = factory;
  20. }
  21. [Fact]
  22. public async Task AddMediaPath_PathDoesntExist_ReturnsNotFound()
  23. {
  24. var client = _factory.CreateClient();
  25. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  26. var data = new MediaPathDto()
  27. {
  28. Name = "Test",
  29. Path = "/this/path/doesnt/exist"
  30. };
  31. using var postContent = new ByteArrayContent(JsonSerializer.SerializeToUtf8Bytes(data, _jsonOptions));
  32. postContent.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Json);
  33. var response = await client.PostAsync("Library/VirtualFolders/Paths", postContent).ConfigureAwait(false);
  34. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  35. }
  36. [Fact]
  37. public async Task UpdateMediaPath_EmptyName_ReturnsBadRequest()
  38. {
  39. var client = _factory.CreateClient();
  40. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  41. var data = new UpdateMediaPathRequestDto()
  42. {
  43. Name = string.Empty,
  44. };
  45. using var postContent = new ByteArrayContent(JsonSerializer.SerializeToUtf8Bytes(data, _jsonOptions));
  46. postContent.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Json);
  47. var response = await client.PostAsync("Library/VirtualFolders/Paths/Update", postContent).ConfigureAwait(false);
  48. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  49. }
  50. [Fact]
  51. public async Task RemoveMediaPath_EmptyName_ReturnsBadRequest()
  52. {
  53. var client = _factory.CreateClient();
  54. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  55. var response = await client.DeleteAsync("Library/VirtualFolders/Paths?name=").ConfigureAwait(false);
  56. Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
  57. }
  58. [Fact]
  59. public async Task RemoveMediaPath_PathDoesntExist_ReturnsNotFound()
  60. {
  61. var client = _factory.CreateClient();
  62. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  63. var response = await client.DeleteAsync("Library/VirtualFolders/Paths?name=none&path=%2Fthis%2Fpath%2Fdoesnt%2Fexist").ConfigureAwait(false);
  64. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  65. }
  66. }
  67. }