Empty User-Agents are still invalid

This commit is contained in:
Jordan Brown
2019-01-11 15:14:25 -05:00
parent c5fb97b913
commit d7173e3c5f
2 changed files with 13 additions and 6 deletions
+4 -1
View File
@@ -144,6 +144,10 @@ namespace Tgstation.Server.Api
if (!requestHeaders.Headers.TryGetValue(HeaderNames.UserAgent, out var userAgentValues) || userAgentValues.Count == 0)
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Missing {0} headers!", HeaderNames.UserAgent));
RawUserAgent = userAgentValues.First();
if (String.IsNullOrWhiteSpace(RawUserAgent))
throw new InvalidOperationException("Malformed client User-Agent!");
// make sure the api header matches ours
if (!requestHeaders.Headers.TryGetValue(ApiVersionHeader, out var apiUserAgentHeaderValues) || !ProductInfoHeaderValue.TryParse(apiUserAgentHeaderValues.FirstOrDefault(), out var apiUserAgent) || apiUserAgent.Product.Name != AssemblyName.Name)
throw new InvalidOperationException("Missing API version!");
@@ -152,7 +156,6 @@ namespace Tgstation.Server.Api
throw new InvalidOperationException("Malformed API version!");
ApiVersion = apiVersion;
RawUserAgent = userAgentValues.First();
if (!requestHeaders.Headers.TryGetValue(HeaderNames.Authorization, out StringValues authorization))
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Missing {0} header!", HeaderNames.Authorization));
@@ -30,11 +30,13 @@ namespace Tgstation.Server.Api.Tests
ApiHeaders TestHeader(string userAgent)
{
var headers = new HeaderDictionary();
headers.Add("Accept", ApiHeaders.ApplicationJson);
headers.Add("Api", "Tgstation.Server.Api/4.0.0.0");
headers.Add("Authorization", "Bearer asdfasdf");
headers.Add("User-Agent", userAgent);
var headers = new HeaderDictionary
{
{ "Accept", ApiHeaders.ApplicationJson },
{ "Api", "Tgstation.Server.Api/4.0.0.0" },
{ "Authorization", "Bearer asdfasdf" },
{ "User-Agent", userAgent }
};
return new ApiHeaders(new RequestHeaders(headers));
};
@@ -46,6 +48,8 @@ namespace Tgstation.Server.Api.Tests
header = TestHeader(ConformantHeader);
Assert.AreEqual(ConformantHeader, header.RawUserAgent);
Assert.IsNotNull(header.UserAgent);
Assert.ThrowsException<InvalidOperationException>(() => TestHeader(String.Empty));
}
}
}