Files
Musify/backend/Tests/Musify.Api.Tests/Validators/UploadRequestValidatorTests.cs
T
Admin fcf3093ad8 Unify API route parameters, return IResult everywhere, merge picture upload DTOs and centralize validation limits
Guid and long route constraints, id/trackId parameter names, Update*Request without the New prefix,
sentence-case operation summaries, shared security scheme id and a single Limits class.
2026-09-24 12:36:48 +02:00

50 lines
1.8 KiB
C#

using Musify.Api.DataTransferObjects;
using Musify.Api.DataTransferObjects.Tracks;
using Musify.Api.Validators;
using Musify.Api.Validators.Tracks;
using Musify.Application.Configuration;
using Xunit;
namespace Musify.Api.Tests.Validators;
public sealed class UploadRequestValidatorTests
{
private readonly UploadIntentConfiguration configuration = new() { MaxUploadBytes = 1_000 };
[Fact]
public void PictureUpload_ValidRequest_Passes()
{
var validator = new PictureUploadRequestValidator(configuration);
var result = validator.Validate(new PictureUploadRequest("webp", "image/webp", 500));
Assert.True(result.IsValid);
}
[Theory]
[InlineData("exe", "image/webp", 500L)]
[InlineData("averyveryveryloongextension", "image/webp", 500L)]
[InlineData("we bp", "image/webp", 500L)]
[InlineData("webp", "text/html", 500L)]
[InlineData("webp", "image/webp", 0L)]
[InlineData("webp", "image/webp", 1_001L)]
public void PictureUpload_InvalidRequest_Fails(string fileType, string contentType, long size)
{
var validator = new PictureUploadRequestValidator(configuration);
var result = validator.Validate(new PictureUploadRequest(fileType, contentType, size));
Assert.False(result.IsValid);
}
[Fact]
public void TrackUpload_AudioTypesAreCheckedAgainstTheAudioAllowList()
{
var validator = new RequestTrackUploadUrlsRequestValidator(configuration);
Assert.True(validator.Validate(new RequestTrackUploadUrlsRequest("png", "image/png", "mp3", "audio/mpeg", 10, 900)).IsValid);
Assert.False(validator.Validate(new RequestTrackUploadUrlsRequest("png", "image/png", "png", "image/png")).IsValid);
Assert.False(validator.Validate(new RequestTrackUploadUrlsRequest("mp3", "audio/mpeg", "mp3", "audio/mpeg")).IsValid);
}
}