public void Should_start_the_chain_with_the_first_handler()
        {
            // Act
            HttpMessageHandler result = TeslaClientBase.CreatePipeline(_handlers);

            // Assert
            result.Should().BeSameAs(_handlers.First());
        }
        public void Should_create_a_chain_of_delegates()
        {
            // Act
            HttpMessageHandler result = TeslaClientBase.CreatePipeline(_handlers);

            // Assert
            HttpMessageHandler current = result;

            foreach (DelegatingHandler handler in _handlers.OfType <DelegatingHandler>())
            {
                current.Should().BeSameAs(handler);
                current = handler.InnerHandler;
            }
        }
        public void Should_end_the_chain_with_a_HttpClientHandler()
        {
            // Act
            HttpMessageHandler result = TeslaClientBase.CreatePipeline(_handlers);

            // Assert
            HttpMessageHandler current = result;
            DelegatingHandler  @delegate;

            while ((@delegate = current as DelegatingHandler) != null)
            {
                current = @delegate.InnerHandler;
            }

            current.Should().BeOfType <HttpClientHandler>();
        }