123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Net;
- using System.Security.Claims;
- using Jellyfin.Api.Constants;
- using Jellyfin.Data.Entities;
- using Jellyfin.Data.Enums;
- using Jellyfin.Server.Implementations.Users;
- using MediaBrowser.Common.Configuration;
- using MediaBrowser.Controller.Library;
- using MediaBrowser.Model.Configuration;
- using Microsoft.AspNetCore.Http;
- using Moq;
- using AccessSchedule = Jellyfin.Data.Entities.AccessSchedule;
- namespace Jellyfin.Api.Tests
- {
- public static class TestHelpers
- {
- public static ClaimsPrincipal SetupUser(
- Mock<IUserManager> userManagerMock,
- Mock<IHttpContextAccessor> httpContextAccessorMock,
- string role,
- IEnumerable<AccessSchedule>? accessSchedules = null)
- {
- var user = new User(
- "jellyfin",
- typeof(DefaultAuthenticationProvider).FullName!,
- typeof(DefaultPasswordResetProvider).FullName!);
- user.AddDefaultPermissions();
- user.AddDefaultPreferences();
- // Set administrator flag.
- user.SetPermission(PermissionKind.IsAdministrator, role.Equals(UserRoles.Administrator, StringComparison.OrdinalIgnoreCase));
- // Add access schedules if set.
- if (accessSchedules != null)
- {
- foreach (var accessSchedule in accessSchedules)
- {
- user.AccessSchedules.Add(accessSchedule);
- }
- }
- var claims = new[]
- {
- new Claim(ClaimTypes.Role, role),
- new Claim(ClaimTypes.Name, "jellyfin"),
- new Claim(InternalClaimTypes.UserId, Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)),
- new Claim(InternalClaimTypes.DeviceId, Guid.Empty.ToString("N", CultureInfo.InvariantCulture)),
- new Claim(InternalClaimTypes.Device, "test"),
- new Claim(InternalClaimTypes.Client, "test"),
- new Claim(InternalClaimTypes.Version, "test"),
- new Claim(InternalClaimTypes.Token, "test"),
- };
- var identity = new ClaimsIdentity(claims);
- userManagerMock
- .Setup(u => u.GetUserById(It.IsAny<Guid>()))
- .Returns(user);
- httpContextAccessorMock
- .Setup(h => h.HttpContext!.Connection.RemoteIpAddress)
- .Returns(new IPAddress(0));
- return new ClaimsPrincipal(identity);
- }
- public static void SetupConfigurationManager(in Mock<IConfigurationManager> configurationManagerMock, bool startupWizardCompleted)
- {
- var commonConfiguration = new BaseApplicationConfiguration
- {
- IsStartupWizardCompleted = startupWizardCompleted
- };
- configurationManagerMock
- .Setup(c => c.CommonConfiguration)
- .Returns(commonConfiguration);
- }
- }
- }
|