Skip to content

Commit

Permalink
Improve header parameter handling, closes #1580
Browse files Browse the repository at this point in the history
  • Loading branch information
RicoSuter committed Sep 6, 2018
1 parent 4f324ae commit 0a09009
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 7 deletions.
@@ -1,9 +1,9 @@
using Microsoft.AspNetCore.Mvc;

namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers
namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers.Parameters
{
[ApiController]
[Route("api/complexqueryparameters")]
[Route("api/[controller]")]
public class ComplexQueryParametersController : Controller
{
[HttpGet]
Expand Down
@@ -0,0 +1,15 @@
using Microsoft.AspNetCore.Mvc;

namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers.Parameters
{
[ApiController]
[Route("api/[controller]")]
public class HeaderParametersController : Controller
{
[HttpGet]
public ActionResult MyAction([FromHeader] string first, [FromHeader] string second = null)
{
return Ok();
}
}
}
@@ -1,9 +1,9 @@
using Microsoft.AspNetCore.Mvc;

namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers
namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers.Parameters
{
[ApiController]
[Route("api/complexqueryparameters")]
[Route("api/[controller]")]
public class SimpleQueryParametersController : Controller
{
[HttpGet]
Expand Down
@@ -0,0 +1,26 @@
using System.Linq;
using System.Threading.Tasks;
using NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers.Parameters;
using Xunit;

namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Parameters
{
public class HeaderParametersTests : AspNetCoreTestsBase
{
[Fact]
public async Task When_complex_query_parameters_are_nullable_and_set_to_null_they_are_optional_in_spec()
{
// Arrange
var settings = new AspNetCoreToSwaggerGeneratorSettings();

// Act
var document = await GenerateDocumentAsync(settings, typeof(HeaderParametersController));

// Assert
var operation = document.Operations.First().Operation;

Assert.True(operation.ActualParameters.First().IsRequired);
Assert.False(operation.ActualParameters.Last().IsRequired);
}
}
}
@@ -1,9 +1,9 @@
using System.Linq;
using System.Threading.Tasks;
using NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers;
using NSwag.SwaggerGeneration.AspNetCore.Tests.Web.Controllers.Parameters;
using Xunit;

namespace NSwag.SwaggerGeneration.AspNetCore.Tests
namespace NSwag.SwaggerGeneration.AspNetCore.Tests.Parameters
{
public class QueryParametersTests : AspNetCoreTestsBase
{
Expand Down
Expand Up @@ -115,7 +115,6 @@ public async Task<bool> ProcessAsync(OperationProcessorContext operationProcesso
{
operationParameter = await CreatePrimitiveParameterAsync(context, extendedApiParameter).ConfigureAwait(false);
operationParameter.Kind = SwaggerParameterKind.Header;
operationParameter.IsRequired = parameter != null && !IsNullable(parameter);

context.OperationDescription.Operation.Parameters.Add(operationParameter);
}
Expand Down

0 comments on commit 0a09009

Please sign in to comment.