From 48fc419b7f2567110dcb9ffb55dc5a4515f3cdad Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 31 Jan 2021 12:42:59 -0500 Subject: [PATCH] Return 400 instead of 401 for Authentication header issues --- .../Controllers/ApiController.cs | 3 --- tests/Tgstation.Server.Tests/RawRequestTests.cs | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Tgstation.Server.Host/Controllers/ApiController.cs b/src/Tgstation.Server.Host/Controllers/ApiController.cs index 0c37a75142..beaae1e95d 100644 --- a/src/Tgstation.Server.Host/Controllers/ApiController.cs +++ b/src/Tgstation.Server.Host/Controllers/ApiController.cs @@ -182,9 +182,6 @@ namespace Tgstation.Server.Host.Controllers if (headersException.MissingOrMalformedHeaders.HasFlag(HeaderTypes.Accept)) return StatusCode(HttpStatusCode.NotAcceptable, errorMessage); - if (headersException.MissingOrMalformedHeaders == HeaderTypes.Authorization) - return Unauthorized(errorMessage); - return BadRequest(errorMessage); } diff --git a/tests/Tgstation.Server.Tests/RawRequestTests.cs b/tests/Tgstation.Server.Tests/RawRequestTests.cs index df9bad0018..a9e308e73b 100644 --- a/tests/Tgstation.Server.Tests/RawRequestTests.cs +++ b/tests/Tgstation.Server.Tests/RawRequestTests.cs @@ -136,6 +136,20 @@ namespace Tgstation.Server.Tests Assert.AreEqual(ErrorCode.InstanceHeaderRequired, message.ErrorCode); } + using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString())) + { + request.Headers.Accept.Clear(); + request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0")); + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json)); + request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version); + request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.BearerAuthenticationScheme.ToLower(), token); + using var response = await httpClient.SendAsync(request, cancellationToken); + Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); + var content = await response.Content.ReadAsStringAsync(); + var message = JsonConvert.DeserializeObject(content); + Assert.AreEqual(ErrorCode.BadHeaders, message.ErrorCode); + } + using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString())) { request.Headers.Accept.Clear();