12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Net;
- using System.Security.Claims;
- using Jellyfin.Api.Constants;
- using Jellyfin.Data;
- using Jellyfin.Database.Implementations.Entities;
- using Jellyfin.Database.Implementations.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.Database.Implementations.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 is not 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);
- }
- }
- }
|