123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Security.Claims;
- using Jellyfin.Api.Constants;
- using Jellyfin.Api.Helpers;
- using Jellyfin.Data.Enums;
- using Jellyfin.Database.Implementations.Enums;
- using MediaBrowser.Controller.Net;
- using Xunit;
- namespace Jellyfin.Api.Tests.Helpers
- {
- public static class RequestHelpersTests
- {
- [Theory]
- [MemberData(nameof(GetOrderBy_Success_TestData))]
- public static void GetOrderBy_Success(IReadOnlyList<ItemSortBy> sortBy, IReadOnlyList<SortOrder> requestedSortOrder, (ItemSortBy, SortOrder)[] expected)
- {
- Assert.Equal(expected, RequestHelpers.GetOrderBy(sortBy, requestedSortOrder));
- }
- [Fact]
- public static void GetUserId_IsAdmin()
- {
- Guid? requestUserId = Guid.NewGuid();
- Guid? authUserId = Guid.NewGuid();
- var claims = new[]
- {
- new Claim(InternalClaimTypes.UserId, authUserId.Value.ToString("N", CultureInfo.InvariantCulture)),
- new Claim(InternalClaimTypes.IsApiKey, bool.FalseString),
- new Claim(ClaimTypes.Role, UserRoles.Administrator)
- };
- var identity = new ClaimsIdentity(claims, string.Empty);
- var principal = new ClaimsPrincipal(identity);
- var userId = RequestHelpers.GetUserId(principal, requestUserId);
- Assert.Equal(requestUserId, userId);
- }
- [Fact]
- public static void GetUserId_IsApiKey_EmptyGuid()
- {
- Guid? requestUserId = Guid.Empty;
- var claims = new[]
- {
- new Claim(InternalClaimTypes.IsApiKey, bool.TrueString)
- };
- var identity = new ClaimsIdentity(claims, string.Empty);
- var principal = new ClaimsPrincipal(identity);
- var userId = RequestHelpers.GetUserId(principal, requestUserId);
- Assert.Equal(Guid.Empty, userId);
- }
- [Fact]
- public static void GetUserId_IsApiKey_Null()
- {
- Guid? requestUserId = null;
- var claims = new[]
- {
- new Claim(InternalClaimTypes.IsApiKey, bool.TrueString)
- };
- var identity = new ClaimsIdentity(claims, string.Empty);
- var principal = new ClaimsPrincipal(identity);
- var userId = RequestHelpers.GetUserId(principal, requestUserId);
- Assert.Equal(Guid.Empty, userId);
- }
- [Fact]
- public static void GetUserId_IsUser()
- {
- Guid? requestUserId = Guid.NewGuid();
- Guid? authUserId = Guid.NewGuid();
- var claims = new[]
- {
- new Claim(InternalClaimTypes.UserId, authUserId.Value.ToString("N", CultureInfo.InvariantCulture)),
- new Claim(InternalClaimTypes.IsApiKey, bool.FalseString),
- new Claim(ClaimTypes.Role, UserRoles.User)
- };
- var identity = new ClaimsIdentity(claims, string.Empty);
- var principal = new ClaimsPrincipal(identity);
- Assert.Throws<SecurityException>(() => RequestHelpers.GetUserId(principal, requestUserId));
- }
- public static TheoryData<IReadOnlyList<ItemSortBy>, IReadOnlyList<SortOrder>, (ItemSortBy, SortOrder)[]> GetOrderBy_Success_TestData()
- {
- var data = new TheoryData<IReadOnlyList<ItemSortBy>, IReadOnlyList<SortOrder>, (ItemSortBy, SortOrder)[]>();
- data.Add(
- Array.Empty<ItemSortBy>(),
- Array.Empty<SortOrder>(),
- Array.Empty<(ItemSortBy, SortOrder)>());
- data.Add(
- new[]
- {
- ItemSortBy.IsFavoriteOrLiked,
- ItemSortBy.Random
- },
- Array.Empty<SortOrder>(),
- new (ItemSortBy, SortOrder)[]
- {
- (ItemSortBy.IsFavoriteOrLiked, SortOrder.Ascending),
- (ItemSortBy.Random, SortOrder.Ascending),
- });
- data.Add(
- new[]
- {
- ItemSortBy.SortName,
- ItemSortBy.ProductionYear
- },
- new[]
- {
- SortOrder.Descending
- },
- new (ItemSortBy, SortOrder)[]
- {
- (ItemSortBy.SortName, SortOrder.Descending),
- (ItemSortBy.ProductionYear, SortOrder.Descending),
- });
- return data;
- }
- }
- }
|