Exemple #1
0
        public void Does_create_content_from_gzip_byte_array()
        {
            byte[] deflateContent;
            using (var memoryStream = new MemoryStream())
            {
                using (var deflateStream = new GZipStream(memoryStream, CompressionMode.Compress))
                    using (var writer = new StreamWriter(deflateStream))
                    {
                        writer.Write("aabbcc");
                    }

                deflateContent = memoryStream.ToArray();
            }

            deflateContent.Length.Should().BeGreaterThan(0);

            var sut = new TraceTransformation();

            var traceFile = new TraceFile()
            {
                Content = deflateContent,
                Headers = new Dictionary <string, string>()
                {
                    ["Content-Encoding"] = "gzip"
                }
            };

            var result = sut.CreateFromTraceFile(traceFile);

            result.Content.Headers.ContentLength.Should().Be(6);
            var content = result.Content.ReadAsStringAsync().Result;

            content.Should().Be("aabbcc");
        }
Exemple #2
0
        public HttpResponseMessage CreateFromTraceFile(TraceFile traceFile)
        {
            var result = new HttpResponseMessage();

            CreateContent(traceFile, result);

            return(result);
        }
        public void IsContentAvailable_is_true_when_content_length_is_greater_than_zero()
        {
            var traceFile = new TraceFile()
            {
                Headers = { { "Content-Length", "10" } }
            };

            traceFile.IsContentAvailable.Should().BeTrue();
        }
        public void IsContentAvailable_is_false_when_content_length_is_zero()
        {
            var traceFile = new TraceFile()
            {
                Headers = { { "Content-Length", "0" } }
            };

            traceFile.IsContentAvailable.Should().BeFalse();
        }
        public void IsViewable_is_false_when_content_type_is_not_a_viewable_content_type()
        {
            var traceFile = new TraceFile()
            {
                Headers = { { "Content-Type", "image/png" } }
            };

            traceFile.IsViewable.Should().BeFalse();
        }
        public void IsViewable_is_enabled_when_content_type_is_text_plain()
        {
            var traceFile = new TraceFile()
            {
                Headers = { { "Content-Type", "text/plain" } }
            };

            traceFile.IsViewable.Should().BeTrue();
        }
Exemple #7
0
        private void CreateContent(TraceFile traceFile, HttpResponseMessage result)
        {
            var content = UncompressContentIfNeeded(traceFile);

            result.Content = new ByteArrayContent(content);
            result.Content.Headers.ContentLength = content.Length;
            result.Content.Headers.TryAddWithoutValidation("Content-Type", traceFile.Headers.ContainsKey("Content-Type")
                ? traceFile.Headers["Content-Type"]
                : String.Empty);
        }
Exemple #8
0
        public void Does_create_content_from_byte_array()
        {
            var sut = new TraceTransformation();

            var traceFile = new TraceFile
            {
                // Content is abc
                Content = new byte[] { 97, 98, 99 }
            };

            var result = sut.CreateFromTraceFile(traceFile);

            result.Content.Headers.ContentLength.Should().Be(3);
            var content = result.Content.ReadAsStringAsync().Result;

            content.Should().Be("abc");
        }
Exemple #9
0
        public void Copies_header_correctly()
        {
            var sut = new TraceTransformation();

            var traceFile = new TraceFile
            {
                Headers = new Dictionary <string, string>
                {
                    { "Content-Type", "text/plain" },
                }
            };

            var result = sut.CreateFromTraceFile(traceFile);

            result.Content.Headers.ContentLength.Should().Be(0);
            result.Content.Headers.ContentType.ToString().Should().Be("text/plain");
        }
Exemple #10
0
        private byte[] UncompressContentIfNeeded(TraceFile traceFile)
        {
            if (traceFile.Content == null)
            {
                return(new byte[0]);
            }

            var contentEncoding = traceFile.Headers.ContainsKey("content-encoding") ? traceFile.Headers["content-encoding"] : String.Empty;

            if (contentEncoding == "deflate")
            {
                return(UncompressDeflate(traceFile.Content));
            }

            if (contentEncoding == "gzip")
            {
                return(UncompressGZip(traceFile.Content));
            }

            return(traceFile.Content);
        }
Exemple #11
0
        public async Task <TraceFile> GetTraceFileAsync(string headerFileName)
        {
            var path = Path.Combine(_configuration.TraceFileDirectory, headerFileName);

            var result = new TraceFile
            {
                Headers = await _traceFileReader.ReadHeaderFileAsync(path),
            };

            if (result.IsContentAvailable)
            {
                // TODO: Please refactor me :(
                var contentPath = path.Replace(OnPremiseConnectorHeaderExtension, OnPremiseConnectorContentExtension);

                if (contentPath.Equals(path))
                {
                    contentPath = path.Replace(OnPremiseTargetHeaderExtension, OnPremiseTargetContentExtension);
                }

                result.Content = await _traceFileReader.ReadContentFileAsync(contentPath);
            }

            return(result);
        }
Exemple #12
0
        public async Task <TraceFile> GetTraceFileAsync(string headerFileName)
        {
            var path = Path.Combine(_configuration.TraceFileDirectory, headerFileName);

            var result = new TraceFile()
            {
                Headers = await _traceFileReader.ReadHeaderFileAsync(path).ConfigureAwait(false),
            };

            if (result.IsContentAvailable)
            {
                // TODO: Please refactor me :(
                var contentPath = path.Replace(_ON_PREMISE_CONNECTOR_HEADER_EXTENSION, _ON_PREMISE_CONNECTOR_CONTENT_EXTENSION);

                if (contentPath.Equals(path))
                {
                    contentPath = path.Replace(_ON_PREMISE_TARGET_HEADER_EXTENSION, _ON_PREMISE_TARGET_CONTENT_EXTENSION);
                }

                result.Content = await _traceFileReader.ReadContentFileAsync(contentPath).ConfigureAwait(false);
            }

            return(result);
        }
        public void IsContentAvailable_is_false_when_no_content_length_is_set()
        {
            var traceFile = new TraceFile();

            traceFile.IsContentAvailable.Should().BeFalse();
        }
        public void IsViewable_is_false_when_headers_are_not_set()
        {
            var traceFile = new TraceFile();

            traceFile.IsViewable.Should().BeFalse();
        }