ItemsControllerTests.cs 2.3 KB

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