Change editor rule
This commit is contained in:
@@ -3,83 +3,84 @@ using Musify.Api.Validators;
|
||||
using Musify.Api.Validators.Albums;
|
||||
using Xunit;
|
||||
|
||||
namespace Musify.Api.Tests.Validators;
|
||||
|
||||
public sealed class CreateAlbumRequestValidatorTests
|
||||
namespace Musify.Api.Tests.Validators
|
||||
{
|
||||
private readonly CreateAlbumRequestValidator validator = new();
|
||||
|
||||
[Fact]
|
||||
public void Validate_ValidRequest_Passes()
|
||||
public sealed class CreateAlbumRequestValidatorTests
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("My Album", "A short description", 2024, Guid.NewGuid()));
|
||||
private readonly CreateAlbumRequestValidator validator = new();
|
||||
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ValidRequest_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("My Album", "A short description", 2024, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_ValidRequestWithoutOptionalFields_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("My Album", null, null, Guid.NewGuid()));
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ValidRequestWithoutOptionalFields_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("My Album", null, null, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_BlankTitle_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("", null, null, Guid.NewGuid()));
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Contains(result.Errors, e => e.PropertyName == nameof(CreateAlbumRequest.Title));
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_BlankTitle_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("", null, null, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_TitleOverMaxLength_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest(new string('a', 201), null, null, Guid.NewGuid()));
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Contains(result.Errors, e => e.PropertyName == nameof(CreateAlbumRequest.Title));
|
||||
}
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_TitleOverMaxLength_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest(new string('a', 201), null, null, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearBeforeTheEarliestBoundary_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.EarliestReleaseYear - 1, Guid.NewGuid()));
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearBeforeTheEarliestBoundary_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.EarliestReleaseYear - 1, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearAtTheEarliestBoundary_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.EarliestReleaseYear, Guid.NewGuid()));
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearAtTheEarliestBoundary_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.EarliestReleaseYear, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearAtTheLatestBoundary_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.LatestReleaseYear, Guid.NewGuid()));
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearAtTheLatestBoundary_Passes()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.LatestReleaseYear, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearPastTheLatestBoundary_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.LatestReleaseYear + 1, Guid.NewGuid()));
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
[Fact]
|
||||
public void Validate_ReleaseYearPastTheLatestBoundary_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, Limits.LatestReleaseYear + 1, Guid.NewGuid()));
|
||||
|
||||
[Fact]
|
||||
public void Validate_EmptyPictureIntentId_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, null, Guid.Empty));
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Contains(result.Errors, e => e.PropertyName == nameof(CreateAlbumRequest.PictureIntentId));
|
||||
[Fact]
|
||||
public void Validate_EmptyPictureIntentId_Fails()
|
||||
{
|
||||
var result = validator.Validate(new CreateAlbumRequest("Title", null, null, Guid.Empty));
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Contains(result.Errors, e => e.PropertyName == nameof(CreateAlbumRequest.PictureIntentId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,46 +3,47 @@ using Musify.Api.Validators.Tracks;
|
||||
using Musify.Domain.ValueObjects;
|
||||
using Xunit;
|
||||
|
||||
namespace Musify.Api.Tests.Validators;
|
||||
|
||||
public sealed class TrackRequestValidatorTests
|
||||
namespace Musify.Api.Tests.Validators
|
||||
{
|
||||
[Fact]
|
||||
public void CreateTrack_ValidRequest_Passes()
|
||||
public sealed class TrackRequestValidatorTests
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Pop, Genre.Rock]);
|
||||
[Fact]
|
||||
public void CreateTrack_ValidRequest_Passes()
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Pop, Genre.Rock]);
|
||||
|
||||
Assert.True(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
Assert.True(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateTrack_NoTags_Fails()
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), []);
|
||||
[Fact]
|
||||
public void CreateTrack_NoTags_Fails()
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), []);
|
||||
|
||||
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateTrack_IncompatibleTags_Fails()
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Classical, Genre.Metal]);
|
||||
[Fact]
|
||||
public void CreateTrack_IncompatibleTags_Fails()
|
||||
{
|
||||
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Classical, Genre.Metal]);
|
||||
|
||||
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(-1)]
|
||||
[InlineData(double.NaN)]
|
||||
[InlineData(double.PositiveInfinity)]
|
||||
public void RecordListeningProgress_InvalidSeconds_Fails(double seconds)
|
||||
{
|
||||
Assert.False(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(seconds)).IsValid);
|
||||
}
|
||||
[Theory]
|
||||
[InlineData(-1)]
|
||||
[InlineData(double.NaN)]
|
||||
[InlineData(double.PositiveInfinity)]
|
||||
public void RecordListeningProgress_InvalidSeconds_Fails(double seconds)
|
||||
{
|
||||
Assert.False(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(seconds)).IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RecordListeningProgress_ZeroSeconds_Passes()
|
||||
{
|
||||
Assert.True(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(0)).IsValid);
|
||||
[Fact]
|
||||
public void RecordListeningProgress_ZeroSeconds_Passes()
|
||||
{
|
||||
Assert.True(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(0)).IsValid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,45 +5,46 @@ using Musify.Api.Validators.Tracks;
|
||||
using Musify.Application.Configuration;
|
||||
using Xunit;
|
||||
|
||||
namespace Musify.Api.Tests.Validators;
|
||||
|
||||
public sealed class UploadRequestValidatorTests
|
||||
namespace Musify.Api.Tests.Validators
|
||||
{
|
||||
private readonly UploadIntentConfiguration configuration = new() { MaxUploadBytes = 1_000 };
|
||||
|
||||
[Fact]
|
||||
public void PictureUpload_ValidRequest_Passes()
|
||||
public sealed class UploadRequestValidatorTests
|
||||
{
|
||||
var validator = new PictureUploadRequestValidator(configuration);
|
||||
private readonly UploadIntentConfiguration configuration = new() { MaxUploadBytes = 1_000 };
|
||||
|
||||
var result = validator.Validate(new PictureUploadRequest("webp", "image/webp", 500));
|
||||
[Fact]
|
||||
public void PictureUpload_ValidRequest_Passes()
|
||||
{
|
||||
var validator = new PictureUploadRequestValidator(configuration);
|
||||
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
var result = validator.Validate(new PictureUploadRequest("webp", "image/webp", 500));
|
||||
|
||||
[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);
|
||||
Assert.True(result.IsValid);
|
||||
}
|
||||
|
||||
var result = validator.Validate(new PictureUploadRequest(fileType, contentType, size));
|
||||
[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);
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
var result = validator.Validate(new PictureUploadRequest(fileType, contentType, size));
|
||||
|
||||
[Fact]
|
||||
public void TrackUpload_AudioTypesAreCheckedAgainstTheAudioAllowList()
|
||||
{
|
||||
var validator = new RequestTrackUploadUrlsRequestValidator(configuration);
|
||||
Assert.False(result.IsValid);
|
||||
}
|
||||
|
||||
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);
|
||||
[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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user