public async Task Ensure_the_response_body_has_been_rewrap(string twoLetterISOLanguageName)
        {
            // Arrange
            _context.Request.Headers["Referer"] = $"http://example.com/{twoLetterISOLanguageName}";

            var root = JsonSerializer.Serialize(new BlazorNegociateBody
            {
                negotiateVersion = 1,
                connectionToken  = "0000_XXXX_0000"
            });

            using var stream = new MemoryStream(Encoding.ASCII.GetBytes(root))
                  {
                      Position = 0
                  };

            RequestDelegate next = (HttpContext hc) =>
            {
                hc.Response.ContentType = "application/json";
                hc.Response.Body        = stream;

                return(Task.CompletedTask);
            };

            var sutMiddleware = new UrlLocalizationAwareWebSocketsMiddleware(next);

            // Act
            await sutMiddleware.InvokeAsync(_context);

            // Assert
            using StreamReader reader = new StreamReader(stream);
            string text = reader.ReadToEnd();

            Assert.Equal(root, text);
        }
        public async Task When_cluture_is_set_with_trailing_slash(string twoLetterISOLanguageName)
        {
            // Arrange
            _context.Request.Headers["Referer"] = $"http://example.com/{twoLetterISOLanguageName}/";

            RequestDelegate next = (HttpContext hc) =>
            {
                Asserter();
                return(Task.CompletedTask);
            };

            var sutMiddleware = new UrlLocalizationAwareWebSocketsMiddleware(next);

            // Act
            await sutMiddleware.InvokeAsync(_context);

            // Assert
            void Asserter()
            {
                Assert.Equal(twoLetterISOLanguageName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName);
            }
        }
        public async Task When_cluture_is_set_without_trailing_slash(string twoLetterISOLanguageName)
        {
            // Arrange
            _context.Request.Headers["Referer"] = $"http://example.com/{twoLetterISOLanguageName}";

            var root = JsonSerializer.Serialize(new BlazorNegociateBody
            {
                negotiateVersion = 1,
                connectionToken  = "0000_XXXX_0000"
            });

            using var stream = new MemoryStream(Encoding.ASCII.GetBytes(root))
                  {
                      Position = 0
                  };

            RequestDelegate next = (HttpContext hc) =>
            {
                hc.Response.ContentType = "application/json";
                hc.Response.Body        = stream;

                Asserter();
                return(Task.CompletedTask);
            };

            var sutMiddleware = new UrlLocalizationAwareWebSocketsMiddleware(next);

            // Act
            await sutMiddleware.InvokeAsync(_context);

            // Assert
            // TODO: Need to assert that the cutlure is in the dictionary

            void Asserter()
            {
                Assert.Equal(twoLetterISOLanguageName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName);
            }
        }