public void Can_use_fileStream() { byte[] fileBytes = uploadedTextFile.ReadFully(); string fileText = Encoding.ASCII.GetString(fileBytes); "File content size {0}".Print(fileBytes.Length); "File content is {0}".Print(fileText); var mockRequest = new HttpRequestMock(); var mockResponse = new HttpResponseMock(); mockRequest.Headers.Add("Range", "bytes=6-8"); var httpResult = new HttpResult(uploadedTextFile, "audio/mpeg"); bool reponseWasAutoHandled = mockResponse.WriteToResponse(mockRequest, httpResult); Assert.That(reponseWasAutoHandled, Is.True); string writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(fileText.Substring(6, 3))); Assert.That(mockResponse.Headers["Content-Range"], Is.EqualTo("bytes 6-8/33")); Assert.That(mockResponse.Headers["Content-Length"], Is.EqualTo(writtenString.Length.ToString())); Assert.That(mockResponse.Headers["Accept-Ranges"], Is.EqualTo("bytes")); Assert.That(mockResponse.StatusCode, Is.EqualTo(206)); }
public void Can_send_ResponseStream_test_with_Custom_Header() { var mockResponse = new HttpResponseMock(); var customText = "<h1>Custom Stream</h1>"; var customTextBytes = customText.ToUtf8Bytes(); var ms = new MemoryStream(); ms.Write(customTextBytes, 0, customTextBytes.Length); var httpResult = new HttpResult(ms, ContentType.Html) { Headers = { { "X-Custom", "Header" } } }; var reponseWasAutoHandled = mockResponse.WriteToResponse(httpResult, ContentType.Html); Assert.That(reponseWasAutoHandled, Is.True); var writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(customText)); Assert.That(mockResponse.Headers["X-Custom"], Is.EqualTo("Header")); }
public void Can_seek_from_middle_to_middle() { var mockRequest = new HttpRequestMock(); mockRequest.Headers.Add("Range", "bytes=3-5"); var mockResponse = new HttpResponseMock(); string customText = "1234567890"; byte[] customTextBytes = customText.ToUtf8Bytes(); var ms = new MemoryStream(); ms.Write(customTextBytes, 0, customTextBytes.Length); var httpResult = new HttpResult(ms, "audio/mpeg"); bool reponseWasAutoHandled = mockResponse.WriteToResponse(mockRequest, httpResult); Assert.That(reponseWasAutoHandled, Is.True); string writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo("456")); Assert.That(mockResponse.Headers["Content-Range"], Is.EqualTo("bytes 3-5/10")); Assert.That(mockResponse.Headers["Content-Length"], Is.EqualTo(writtenString.Length.ToString())); Assert.That(mockResponse.Headers["Accept-Ranges"], Is.EqualTo("bytes")); Assert.That(mockResponse.StatusCode, Is.EqualTo(206)); }
public void Can_respond_to_non_range_requests_with_200_OK_response() { var mockRequest = new HttpRequestMock(); var mockResponse = new HttpResponseMock(); string customText = "1234567890"; byte[] customTextBytes = customText.ToUtf8Bytes(); var ms = new MemoryStream(); ms.Write(customTextBytes, 0, customTextBytes.Length); var httpResult = new HttpResult(ms, "audio/mpeg"); bool reponseWasAutoHandled = mockResponse.WriteToResponse(mockRequest, httpResult); Assert.That(reponseWasAutoHandled, Is.True); string writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(customText)); Assert.That(mockResponse.Headers["Content-Range"], Is.Null); Assert.That(mockResponse.Headers["Accept-Ranges"], Is.EqualTo("bytes")); Assert.That(mockResponse.StatusCode, Is.EqualTo(200)); }
public void Can_seek_from_beginning_to_further_than_end() { // Not sure if this would ever occur in real streaming scenarios, but it does occur // when some crawlers use range headers to specify a max size to return. // e.g. Facebook crawler always sends range header of 'bytes=0-524287'. var mockRequest = new HttpRequestMock(); var mockResponse = new HttpResponseMock(); mockRequest.Headers[HttpHeaders.Range] = "bytes=0-524287"; string customText = "1234567890"; byte[] customTextBytes = customText.ToUtf8Bytes(); var ms = new MemoryStream(); ms.Write(customTextBytes, 0, customTextBytes.Length); var httpResult = new HttpResult(ms, "audio/mpeg"); bool reponseWasAutoHandled = mockResponse.WriteToResponse(mockRequest, httpResult); Assert.That(reponseWasAutoHandled, Is.True); string writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(customText)); Assert.That(mockResponse.Headers["Content-Range"], Is.EqualTo("bytes 0-9/10")); Assert.That(mockResponse.Headers["Content-Length"], Is.EqualTo(writtenString.Length.ToString())); Assert.That(mockResponse.Headers["Accept-Ranges"], Is.EqualTo("bytes")); Assert.That(mockResponse.StatusCode, Is.EqualTo(206)); }
public void Test_response_with_html_result() { var mockResponse = new HttpResponseMock(); const string url = "http://www.servicestack.net"; var htmlResult = Html.RedirectTo(url); var reponseWasAutoHandled = mockResponse.WriteToResponse(htmlResult, "text/xml"); Assert.That(reponseWasAutoHandled, Is.True); var expectedOutput = string.Format( "<html><head><meta http-equiv=\"refresh\" content=\"0;url={0}\"></head></html>", url); var writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(expectedOutput)); Assert.That(mockResponse.Headers["Location"], Is.EqualTo(url)); }
public void Can_send_ResponseText_test_with_Custom_Header() { var mockResponse = new HttpResponseMock(); var customText = "<h1>Custom Text</h1>"; var httpResult = new HttpResult(customText, ContentType.Html) { Headers = { { "X-Custom", "Header" } } }; var reponseWasAutoHandled = mockResponse.WriteToResponse(httpResult, ContentType.Html); Assert.That(reponseWasAutoHandled, Is.True); var writtenString = mockResponse.GetOutputStreamAsString(); Assert.That(writtenString, Is.EqualTo(customText)); Assert.That(mockResponse.Headers["X-Custom"], Is.EqualTo("Header")); }