2016-07-22 14 views
3

Ich erstelle eine Sitzung Middleware und möchte es testen. Also verwende ich TestServer zu Testzwecken.ASP.NET Core .NET Framework testen mit Cookie

Der Test-Code sieht wie folgt:

using System.Linq; 
using System.Threading.Tasks; 
using ComponentsTest.StartUps; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.AspNetCore.TestHost; 
using NUnit.Framework; 

namespace ComponentsTest.IntegrationTest 
{ 
    [TestFixture] 
    public class SessionMwTest 
    { 
    [SetUp] 
    public void Setup() 
    { 
     _server = new TestServer(_hostBuilder); 
    } 

    private readonly IWebHostBuilder _hostBuilder = new WebHostBuilder().UseStartup<StartUpSession>(); 
    private TestServer _server; 

    [Test] 
    public async Task BrowserRequestForCookies_SeveralRequest_ExpectToken() 
    { 
     var client = _server.CreateClient(); 
     var req1 = await client.GetAsync("/"); 

     var sid = (from r in req1.Headers 
     where r.Key == "Set-Cookie" 
     from h in r.Value 
     where h.Contains("sid") 
     select h).FirstOrDefault(); 
     StringAssert.Contains("sid", sid); 

    } 

    } 
} 

ich eine Anfrage mit dem Cookie machen wollen, dass ich habe, aber nicht wissen, wie auf die Anfrage das Cookie zu setzen.
Wie kann ich das tun?

Antwort

5

Im Grunde, ein Cookie ist einfach ein Header. Sie könnten den SID-Wert von Set-Cookie in einem String speichern und dann für jede Anforderung der Header hinzufügen:

request.Headers.Add("Cookie", new CookieHeaderValue(cookie.Name, cookie.Value).ToString()); 
+0

Vielen Dank @nemec. –