2
0

TestHelpers.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Net;
  5. using System.Security.Claims;
  6. using Jellyfin.Api.Constants;
  7. using Jellyfin.Data.Entities;
  8. using Jellyfin.Data.Enums;
  9. using Jellyfin.Server.Implementations.Users;
  10. using MediaBrowser.Common.Configuration;
  11. using MediaBrowser.Controller.Library;
  12. using MediaBrowser.Model.Configuration;
  13. using Microsoft.AspNetCore.Http;
  14. using Moq;
  15. using AccessSchedule = Jellyfin.Data.Entities.AccessSchedule;
  16. namespace Jellyfin.Api.Tests
  17. {
  18. public static class TestHelpers
  19. {
  20. public static ClaimsPrincipal SetupUser(
  21. Mock<IUserManager> userManagerMock,
  22. Mock<IHttpContextAccessor> httpContextAccessorMock,
  23. string role,
  24. IEnumerable<AccessSchedule>? accessSchedules = null)
  25. {
  26. var user = new User(
  27. "jellyfin",
  28. typeof(DefaultAuthenticationProvider).FullName,
  29. typeof(DefaultPasswordResetProvider).FullName);
  30. // Set administrator flag.
  31. user.SetPermission(PermissionKind.IsAdministrator, role.Equals(UserRoles.Administrator, StringComparison.OrdinalIgnoreCase));
  32. // Add access schedules if set.
  33. if (accessSchedules != null)
  34. {
  35. foreach (var accessSchedule in accessSchedules)
  36. {
  37. user.AccessSchedules.Add(accessSchedule);
  38. }
  39. }
  40. var claims = new[]
  41. {
  42. new Claim(ClaimTypes.Role, role),
  43. new Claim(ClaimTypes.Name, "jellyfin"),
  44. new Claim(InternalClaimTypes.UserId, Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)),
  45. new Claim(InternalClaimTypes.DeviceId, Guid.Empty.ToString("N", CultureInfo.InvariantCulture)),
  46. new Claim(InternalClaimTypes.Device, "test"),
  47. new Claim(InternalClaimTypes.Client, "test"),
  48. new Claim(InternalClaimTypes.Version, "test"),
  49. new Claim(InternalClaimTypes.Token, "test"),
  50. };
  51. var identity = new ClaimsIdentity(claims);
  52. userManagerMock
  53. .Setup(u => u.GetUserById(It.IsAny<Guid>()))
  54. .Returns(user);
  55. httpContextAccessorMock
  56. .Setup(h => h.HttpContext!.Connection.RemoteIpAddress)
  57. .Returns(new IPAddress(0));
  58. return new ClaimsPrincipal(identity);
  59. }
  60. public static void SetupConfigurationManager(in Mock<IConfigurationManager> configurationManagerMock, bool startupWizardCompleted)
  61. {
  62. var commonConfiguration = new BaseApplicationConfiguration
  63. {
  64. IsStartupWizardCompleted = startupWizardCompleted
  65. };
  66. configurationManagerMock
  67. .Setup(c => c.CommonConfiguration)
  68. .Returns(commonConfiguration);
  69. }
  70. }
  71. }