Merge pull request #1216 from tgstation/ResponseCodeQuickFix

Return 400 instead of 401 for Authentication header issues
This commit is contained in:
Jordan Brown
2021-01-31 12:44:18 -05:00
committed by GitHub
2 changed files with 14 additions and 3 deletions
@@ -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);
}
@@ -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<ErrorMessage>(content);
Assert.AreEqual(ErrorCode.BadHeaders, message.ErrorCode);
}
using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString()))
{
request.Headers.Accept.Clear();