0

I am using OWIN middleware and I am trying to set a header that is getting set on a controller. For unit testing I am trying to set the header in the test to no avail. What is the best way to set this header?

[TestMethod]
public async Task HasHeader()
{
        using (var server = TestServer.Create(app =>
        {
            //need to set header before calling the below middleware header name is bobsyouruncle
            app.Use(typeof(HeaderMiddleware));

        }))

        using (var client = new HttpClient(server.Handler))
        {
            var response = await client.GetAsync("http://win.example.com/bob/");
            System.Diagnostics.Debugger.Break();
        }
}
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
bdawg
  • 343
  • 3
  • 13

1 Answers1

0

Create a test middleware that sets the header.

 [TestMethod]
 public async Task HasHeader()
  {
    using (var server = TestServer.Create(app =>
    {
        //need to set header before calling the below middleware header name is bobsyouruncle
        app.Use(typeof(TestMiddleware));
        app.Use(typeof(HeaderMiddleware));

    }))
    using (var client = new HttpClient(server.Handler))
    {
        var response = await client.GetAsync("http://win.example.com/bob/");
        System.Diagnostics.Debugger.Break();
    }
}

middleware

 public TestMiddleware(OwinMiddleware next)
        : base(next)
    {


    }

    public async override Task Invoke(IOwinContext context)
    {
        await Next.Invoke(context);
        context.Response.Headers.Add("bobsyouruncle", new string[] { "test1234" });


    }

I'm not sure how to pass that header value.

bdawg
  • 343
  • 3
  • 13
  • You can add additional parameters to the Middleware constructor and pass the arguments in when adding the Middleware to the chain e.g. `app.Use(typeof(HeaderMiddleware), "headerValue");` – humbleice Mar 29 '18 at 17:07