mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |