0
我有一個OAuthServerProvider認證用戶名和密碼後發出令牌。當用戶名或密碼無效時,我拒絕owin上下文,默認情況下將返回400 Bad Request
作爲狀態碼。NUnit測試用例跳過owin中間件
但我想用401 Unauthorized
迴應要做到這一點我寫了一箇中間件將檢查頭,看看自定義標題是存在,如果是將401
替換狀態碼if (context.Response.StatusCode == 400 && context.Response.Headers.ContainsKey(Constants.OwinChallengeFlag))
{
var headerValues = context.Response.Headers.GetValues(Constants.OwinChallengeFlag);
context.Response.StatusCode = Convert.ToInt16(headerValues.FirstOrDefault());
context.Response.Headers.Remove(Constants.OwinChallengeFlag);
}
這個工作絕對沒問題,當我用小提琴打它時,但是我在下面寫的單元測試總是得到400.不知何故,當我用我的單元測試請求中間件時,跳過了。
[TestFixture]
public class UnitTest1
{
private TestServer _server;
[SetUp]
public void SetUp()
{
_server = TestServer.Create<Startup>();
}
[Test]
public void ShouldReturnUnauthorizedResponse()
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "/token");
//wrong password
var requestContent = "grant_type=password&UserName=foo&Password=bar";
request.Content = new StringContent(requestContent, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = _server.HttpClient.SendAsync(request).Result;
//This assert fails, but shouldn't
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Unauthorized));
}
}
需要知道我在做什麼錯在這裏。
1)這是一個集成測試而不是單元測試。 2)顯示啓動配置和完整的中間件。 3)你是否緩衝響應以便下載訪問它? – Nkosi