Skip to content

Commit

Permalink
IFormFile tests
Browse files Browse the repository at this point in the history
  • Loading branch information
icnocop authored and petriashev committed May 1, 2023
1 parent da32d12 commit a6f6c78
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
45 changes: 45 additions & 0 deletions samples/SampleNSwagWebApi/Controllers/FilesController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using FluentValidation;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace SampleNSwagWebApi.Controllers
{
[Route("api/[controller]")]
public class FilesController : Controller
{
[HttpPost("[action]")]
public IActionResult UploadFile([FromForm] UploadFileRequest request)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

return Ok();
}
}

#region Model

public class UploadFileRequest
{
[FromForm(Name = "File")]
public IFormFile File { get; set; }
}

#endregion

#region Validation

public class UploadFileRequestValidator : AbstractValidator<UploadFileRequest>
{
public UploadFileRequestValidator()
{
RuleFor(x => x.File)
.Cascade(CascadeMode.Stop)
.NotEmpty();
}
}

#endregion
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FluentAssertions;
using FluentValidation;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.SwaggerGen;
using Xunit;

namespace MicroElements.Swashbuckle.FluentValidation.Tests
{
public class IFormFileTests : UnitTestBase
{
public class UploadFileRequest
{
[FromForm(Name = "File")]
public IFormFile File { get; set; }
}

public class UploadFileRequestValidator : AbstractValidator<UploadFileRequest>
{
public UploadFileRequestValidator()
{
RuleFor(c => c.File)
.Cascade(CascadeMode.Stop)
.NotEmpty();
}
}

[Fact]
public void all_rules_should_be_applied()
{
var schemaRepository = new SchemaRepository();
var referenceSchema = SchemaGenerator(new UploadFileRequestValidator()).GenerateSchema(typeof(UploadFileRequest), schemaRepository);

var schema = schemaRepository.Schemas[referenceSchema.Reference.Id];
var fileProperty = schema.Properties[nameof(UploadFileRequest.File)];
fileProperty.Type.Should().Be("string");
fileProperty.Format.Should().Be("binary");
fileProperty.Nullable.Should().Be(false);
}
}
}

0 comments on commit a6f6c78

Please sign in to comment.