StartupControllerTests.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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.StartupDtos;
  8. using MediaBrowser.Common.Json;
  9. using Xunit;
  10. using Xunit.Priority;
  11. namespace Jellyfin.Server.Integration.Tests.Controllers
  12. {
  13. public sealed class StartupControllerTests : IClassFixture<JellyfinApplicationFactory>
  14. {
  15. private readonly JellyfinApplicationFactory _factory;
  16. private readonly JsonSerializerOptions _jsonOpions = JsonDefaults.Options;
  17. public StartupControllerTests(JellyfinApplicationFactory factory)
  18. {
  19. _factory = factory;
  20. }
  21. [Fact]
  22. [Priority(0)]
  23. public async Task GetStartupConfiguration_EditConfig_Success()
  24. {
  25. var client = _factory.CreateClient();
  26. using var res0 = await client.GetAsync("/Startup/Configuration").ConfigureAwait(false);
  27. Assert.Equal(HttpStatusCode.OK, res0.StatusCode);
  28. Assert.Equal(MediaTypeNames.Application.Json, res0.Content.Headers.ContentType?.MediaType);
  29. var content0 = await res0.Content.ReadAsStreamAsync().ConfigureAwait(false);
  30. _ = await JsonSerializer.DeserializeAsync<StartupConfigurationDto>(content0, _jsonOpions).ConfigureAwait(false);
  31. var newConfig = new StartupConfigurationDto()
  32. {
  33. UICulture = "NewCulture",
  34. MetadataCountryCode = "be",
  35. PreferredMetadataLanguage = "nl"
  36. };
  37. var req1 = JsonSerializer.SerializeToUtf8Bytes(newConfig, _jsonOpions);
  38. using var reqContent1 = new ByteArrayContent(req1);
  39. reqContent1.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Json);
  40. var res1 = await client.PostAsync("/Startup/Configuration", reqContent1).ConfigureAwait(false);
  41. Assert.Equal(HttpStatusCode.NoContent, res1.StatusCode);
  42. var res2 = await client.GetAsync("/Startup/Configuration").ConfigureAwait(false);
  43. Assert.Equal(HttpStatusCode.OK, res2.StatusCode);
  44. Assert.Equal(MediaTypeNames.Application.Json, res2.Content.Headers.ContentType?.MediaType);
  45. var content2 = await res2.Content.ReadAsStreamAsync().ConfigureAwait(false);
  46. var config2 = await JsonSerializer.DeserializeAsync<StartupConfigurationDto>(content2, _jsonOpions).ConfigureAwait(false);
  47. Assert.Equal(newConfig.UICulture, config2!.UICulture);
  48. Assert.Equal(newConfig.MetadataCountryCode, config2.MetadataCountryCode);
  49. Assert.Equal(newConfig.PreferredMetadataLanguage, config2.PreferredMetadataLanguage);
  50. }
  51. }
  52. }