ItemsControllerTests.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Globalization;
  3. using System.Net;
  4. using System.Text.Json;
  5. using System.Threading.Tasks;
  6. using Jellyfin.Extensions.Json;
  7. using MediaBrowser.Model.Dto;
  8. using MediaBrowser.Model.Querying;
  9. using Xunit;
  10. namespace Jellyfin.Server.Integration.Tests.Controllers;
  11. public sealed class ItemsControllerTests : IClassFixture<JellyfinApplicationFactory>
  12. {
  13. private readonly JellyfinApplicationFactory _factory;
  14. private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
  15. private static string? _accessToken;
  16. public ItemsControllerTests(JellyfinApplicationFactory factory)
  17. {
  18. _factory = factory;
  19. }
  20. [Fact]
  21. public async Task GetItems_NoApiKeyOrUserId_Success()
  22. {
  23. var client = _factory.CreateClient();
  24. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  25. var response = await client.GetAsync("Items").ConfigureAwait(false);
  26. Assert.Equal(HttpStatusCode.OK, response.StatusCode);
  27. }
  28. [Theory]
  29. [InlineData("Users/{0}/Items")]
  30. [InlineData("Users/{0}/Items/Resume")]
  31. public async Task GetUserItems_NonExistentUserId_NotFound(string format)
  32. {
  33. var client = _factory.CreateClient();
  34. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  35. var response = await client.GetAsync(string.Format(CultureInfo.InvariantCulture, format, Guid.NewGuid())).ConfigureAwait(false);
  36. Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
  37. }
  38. [Theory]
  39. [InlineData("Items?userId={0}")]
  40. [InlineData("Users/{0}/Items")]
  41. [InlineData("Users/{0}/Items/Resume")]
  42. public async Task GetItems_UserId_Ok(string format)
  43. {
  44. var client = _factory.CreateClient();
  45. client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client).ConfigureAwait(false));
  46. var userDto = await AuthHelper.GetUserDtoAsync(client).ConfigureAwait(false);
  47. var response = await client.GetAsync(string.Format(CultureInfo.InvariantCulture, format, userDto.Id)).ConfigureAwait(false);
  48. Assert.Equal(HttpStatusCode.OK, response.StatusCode);
  49. var items = await JsonSerializer.DeserializeAsync<QueryResult<BaseItemDto>>(
  50. await response.Content.ReadAsStreamAsync().ConfigureAwait(false),
  51. _jsonOptions).ConfigureAwait(false);
  52. Assert.NotNull(items);
  53. }
  54. }