Skip to content

Commit

Permalink
Changed AcceptHeaderValidationMiddleware to make the Accept header in…
Browse files Browse the repository at this point in the history
… requests optional (#639)

Co-authored-by: Ytterås <axel.ytteras@digdir.no>
  • Loading branch information
axely123 and Ytterås authored Feb 7, 2025
1 parent 76de60d commit 20343d1
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,11 @@ public async Task InvokeAsync(HttpContext context)
.OfType<ProducesAttribute>()
.FirstOrDefault();

if (producesAttribute != null)
if (producesAttribute != null && acceptHeaders.Length > 0)
{
var validMimeTypes = producesAttribute.ContentTypes.ToList();
validMimeTypes.Add("*/*");

if (acceptHeaders.Length == 0)
{
context.Response.StatusCode = StatusCodes.Status406NotAcceptable;
await context.Response.WriteAsync("Accept header is required");
return;
}
if (!acceptHeaders.Any(header => header != null && IsValidAcceptHeader(header, validMimeTypes)))
{
context.Response.StatusCode = StatusCodes.Status406NotAcceptable;
Expand All @@ -53,6 +48,6 @@ private static bool IsValidAcceptHeader(string acceptHeader, IEnumerable<string>
return parts[0].Trim().ToLowerInvariant();
})
.ToList();
return acceptHeader == "*/*" || acceptedMimeTypes.Any(mimeType => validMimeTypes.Contains(mimeType));
return acceptedMimeTypes.Any(mimeType => validMimeTypes.Contains(mimeType));
}
}
4 changes: 2 additions & 2 deletions tests/Altinn.Broker.Tests/AcceptHeaderValidationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public async Task InitializeFiletransfer_WithValidAcceptHeader_ReturnsOk()
}

[Fact]
public async Task InitializeFiletransfer_WithNoAcceptHeader_ReturnsNotAcceptable()
public async Task InitializeFiletransfer_WithNoAcceptHeader_ReturnsOk()
{
// Arrange
_senderClient.DefaultRequestHeaders.Accept.Clear();
Expand All @@ -52,7 +52,7 @@ public async Task InitializeFiletransfer_WithNoAcceptHeader_ReturnsNotAcceptable
var initializeFileTransferResponse = await _senderClient.PostAsJsonAsync("broker/api/v1/filetransfer", FileTransferInitializeExtTestFactory.BasicFileTransfer());

// Assert
Assert.Equal(HttpStatusCode.NotAcceptable, initializeFileTransferResponse.StatusCode);
Assert.Equal(HttpStatusCode.OK, initializeFileTransferResponse.StatusCode);
}

[Fact]
Expand Down

0 comments on commit 20343d1

Please sign in to comment.