public async Task NonUpgradeRequest_PassesThrough()
        {
            Http2Middleware middleware = new Http2Middleware(NextSuccess, NextNotImplemented);
            IDictionary<string, object> environment = CreateBasicRequest();
            await middleware.Invoke(environment);

            Assert.Equal(201, environment["owin.ResponseStatusCode"]);
        }
        public async Task UpgradeRequest_Upgrades()
        {
            bool upgradeCalled = false;
            Http2Middleware middleware = new Http2Middleware(NextNotImplemented, NextSuccess);
            IDictionary<string, object> environment = CreateUpgradeRequest();
            environment["opaque.Upgrade"] = new OpaqueUpgrade((options, callback) => upgradeCalled = true);
            await middleware.Invoke(environment);

            Assert.True(upgradeCalled);
            Assert.Equal(101, environment["owin.ResponseStatusCode"]);
            IDictionary<string, string[]> responseHeaders =
                (IDictionary<string, string[]>)environment["owin.ResponseHeaders"];
            Assert.Equal(2, responseHeaders.Count); // Connection, Upgrade
            Assert.Equal("Upgrade", responseHeaders["Connection"][0]);
            Assert.Equal("HTTP/2.0", responseHeaders["Upgrade"][0]);
        }