public async Task TryInjectLiveReloadScriptAsync_InjectsMarkupIfBodyTagAppearsInTheMiddle()
        {
            // Arrange
            var expected =
                $@"<footer>
    This is the footer
</footer>
{WebSocketScriptInjection.InjectedScript}</body>
</html>";
            var stream = new MemoryStream();
            var input  = Encoding.UTF8.GetBytes(
                @"<footer>
    This is the footer
</footer>
</body>
</html>");

            // Act
            var result = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(stream, input);

            // Assert
            Assert.True(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output, ignoreLineEndingDifferences: true);
        }
Esempio n. 2
0
        public void GetWebSocketClientJavaScript_Works()
        {
            // Act
            var script = WebSocketScriptInjection.GetWebSocketClientJavaScript("some-host");

            // Assert
            Assert.Contains("// dotnet-watch browser reload script", script);
            Assert.Contains("'some-host'", script);
        }
 public override void Write(ReadOnlySpan <byte> buffer)
 {
     OnWrite();
     if (IsHtmlResponse && !ScriptInjectionPerformed)
     {
         ScriptInjectionPerformed = WebSocketScriptInjection.TryInjectLiveReloadScript(_baseStream, buffer);
     }
     else
     {
         _baseStream.Write(buffer);
     }
 }
        public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
        {
            OnWrite();

            if (IsHtmlResponse && !ScriptInjectionPerformed)
            {
                ScriptInjectionPerformed = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(_baseStream, buffer.AsMemory(offset, count), cancellationToken);
            }
            else
            {
                await _baseStream.WriteAsync(buffer, offset, count, cancellationToken);
            }
        }
        public override void Write(byte[] buffer, int offset, int count)
        {
            OnWrite();

            if (IsHtmlResponse && !ScriptInjectionPerformed)
            {
                ScriptInjectionPerformed = WebSocketScriptInjection.TryInjectLiveReloadScript(_baseStream, buffer.AsSpan(offset, count));
            }
            else
            {
                _baseStream.Write(buffer, offset, count);
            }
        }
        public override async ValueTask WriteAsync(ReadOnlyMemory <byte> buffer, CancellationToken cancellationToken = default)
        {
            OnWrite();

            if (IsHtmlResponse && !ScriptInjectionPerformed)
            {
                ScriptInjectionPerformed = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(_baseStream, buffer, cancellationToken);
            }
            else
            {
                await _baseStream.WriteAsync(buffer, cancellationToken);
            }
        }
        public async Task TryInjectLiveReloadScriptAsync_DoesNotInjectMarkup_IfInputDoesNotContainBodyTag()
        {
            // Arrange
            var stream = new MemoryStream();
            var input  = Encoding.UTF8.GetBytes("<div>this is not a real body tag.</div>");

            // Act
            var result = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(stream, input);

            // Assert
            Assert.False(result);
            Assert.Equal(input, stream.ToArray());
        }
        public async Task TryInjectLiveReloadScriptAsync_InjectsMarkupIfBodyTagAppearsAtTheStartOfOutput()
        {
            // Arrange
            var expected = $"{WebSocketScriptInjection.InjectedScript}</body></html>";
            var stream   = new MemoryStream();
            var input    = Encoding.UTF8.GetBytes("</body></html>");

            // Act
            var result = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(stream, input);

            // Assert
            Assert.True(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output);
        }
        public async Task TryInjectLiveReloadScriptAsync_WithOffsetBodyTagAppearsAtStartOfOffset()
        {
            // Arrange
            var expected = $"{WebSocketScriptInjection.InjectedScript}</body>";
            var stream   = new MemoryStream();
            var input    = Encoding.UTF8.GetBytes("unused</body>");

            // Act
            var result = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(stream, input.AsMemory(6));

            // Assert
            Assert.True(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output);
        }
        public void TryInjectLiveReloadScript_WithOffset()
        {
            // Arrange
            var expected = $"</table>{WebSocketScriptInjection.InjectedScript}</body>";
            var stream   = new MemoryStream();
            var input    = Encoding.UTF8.GetBytes("unused</table></body>").AsSpan(6);

            // Act
            var result = WebSocketScriptInjection.TryInjectLiveReloadScript(stream, input);

            // Assert
            Assert.True(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output);
        }
        public void TryInjectLiveReloadScript_NoBodyTag()
        {
            // Arrange
            var expected = "<p>Hello world</p>";
            var stream   = new MemoryStream();
            var input    = Encoding.UTF8.GetBytes(expected).AsSpan();

            // Act
            var result = WebSocketScriptInjection.TryInjectLiveReloadScript(stream, input);

            // Assert
            Assert.False(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output);
        }
        public async Task TryInjectLiveReloadScriptAsync_MultipleBodyTags()
        {
            // Arrange
            var expected = $"<p></body>some text</p>{WebSocketScriptInjection.InjectedScript}</body>";
            var stream   = new MemoryStream();
            var input    = Encoding.UTF8.GetBytes("abc<p></body>some text</p></body>").AsMemory(3);

            // Act
            var result = await WebSocketScriptInjection.TryInjectLiveReloadScriptAsync(stream, input);

            // Assert
            Assert.True(result);
            var output = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expected, output);
        }