Unify picture configuration and options registration
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Musify.Application.Configuration;
|
||||
using Xunit;
|
||||
|
||||
namespace Musify.Application.Tests.Configuration;
|
||||
|
||||
public sealed class PicturesConfigurationTests
|
||||
{
|
||||
[Fact]
|
||||
public void AlbumRoutes_BuildTheSameKeysAsBefore()
|
||||
{
|
||||
var routes = new AlbumConfiguration().Routes;
|
||||
|
||||
Assert.Equal("Albums/SmallPictures/a.webp", routes.BuildPicturePath(PictureSize.Small, "a.webp"));
|
||||
Assert.Equal("Albums/MediumPictures/a.webp", routes.BuildPicturePath(PictureSize.Medium, "a.webp"));
|
||||
Assert.Equal("Albums/LargePictures/a.webp", routes.BuildPicturePath(PictureSize.Large, "a.webp"));
|
||||
Assert.Equal("uploads/7/Albums/OriginalPictures/a.webp", routes.BuildOriginalPicturePath(7, "a.webp"));
|
||||
Assert.Equal("temp/7/Albums/obj.webp", routes.BuildTempPath("temp", 7, "obj.webp"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TrackRoutes_KeepTheTrackFolderLayout()
|
||||
{
|
||||
var routes = new TrackConfiguration().Routes;
|
||||
|
||||
Assert.Equal("Tracks/ProcessedAudios/folder", routes.BuildProcessedAudioPath("folder"));
|
||||
Assert.Equal("uploads/7/Tracks/OriginalAudios/song.mp3", routes.BuildOriginalAudioPath(7, "song.mp3"));
|
||||
Assert.Equal("Tracks/PresetSmallPicture.webp", routes.PresetSmallPicturePath);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ToImageSizes_UsesTheRoutesFolders()
|
||||
{
|
||||
var configuration = new PlayListConfiguration();
|
||||
|
||||
var sizes = configuration.PicturesSizes.ToImageSizes(configuration.Routes);
|
||||
|
||||
Assert.Equal("PlayLists/SmallPictures", sizes.Small.SavePath);
|
||||
Assert.Equal(128, sizes.Small.Width);
|
||||
Assert.Equal(512, sizes.Large.Width);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("small", PictureSize.Small)]
|
||||
[InlineData("LARGE", PictureSize.Large)]
|
||||
[InlineData("medium", PictureSize.Medium)]
|
||||
[InlineData("whatever", PictureSize.Medium)]
|
||||
[InlineData(null, PictureSize.Medium)]
|
||||
public void PictureSizeParser_DefaultsToMedium(string? value, PictureSize expected) =>
|
||||
Assert.Equal(expected, PictureSizeParser.Parse(value));
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.IdentityModel.JsonWebTokens;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Musify.StreamingGateway.Authentication;
|
||||
@@ -25,12 +24,12 @@ public sealed class TicketValidatorTests : IDisposable
|
||||
File.Delete(publicKeyPath);
|
||||
}
|
||||
|
||||
private TicketValidator CreateValidator() => new(Options.Create(new StreamTicketValidationOptions
|
||||
private TicketValidator CreateValidator() => new(new StreamTicketValidationConfiguration
|
||||
{
|
||||
PublicKeyPath = publicKeyPath,
|
||||
Audience = Audience,
|
||||
Issuer = Issuer
|
||||
}));
|
||||
});
|
||||
|
||||
private string IssueToken(string prefix = "Tracks/ProcessedAudios/abc/", string issuer = Issuer, string audience = Audience,
|
||||
DateTime? expires = null, DateTime? notBefore = null, long? maxBytes = null)
|
||||
|
||||
+4
-5
@@ -1,7 +1,6 @@
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.IdentityModel.JsonWebTokens;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Musify.StreamingGateway.Authentication;
|
||||
@@ -17,12 +16,12 @@ public sealed class TicketValidationMiddlewareTests : IDisposable
|
||||
|
||||
private readonly string publicKeyPath = Path.GetTempFileName();
|
||||
private readonly RSA rsa = RSA.Create(2048);
|
||||
private readonly StreamTicketValidationOptions options;
|
||||
private readonly StreamTicketValidationConfiguration options;
|
||||
|
||||
public TicketValidationMiddlewareTests()
|
||||
{
|
||||
File.WriteAllText(publicKeyPath, rsa.ExportSubjectPublicKeyInfoPem());
|
||||
options = new StreamTicketValidationOptions
|
||||
options = new StreamTicketValidationConfiguration
|
||||
{
|
||||
PublicKeyPath = publicKeyPath,
|
||||
Audience = "media-gateway",
|
||||
@@ -57,8 +56,8 @@ public sealed class TicketValidationMiddlewareTests : IDisposable
|
||||
{
|
||||
var nextCalled = false;
|
||||
RequestDelegate next = _ => { nextCalled = true; return Task.CompletedTask; };
|
||||
var validator = new TicketValidator(Options.Create(options));
|
||||
var middleware = new TicketValidationMiddleware(next, validator, Options.Create(options), NullLogger<TicketValidationMiddleware>.Instance);
|
||||
var validator = new TicketValidator(options);
|
||||
var middleware = new TicketValidationMiddleware(next, validator, options, NullLogger<TicketValidationMiddleware>.Instance);
|
||||
return (middleware, () => nextCalled);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user