@@ -455,43 +455,43 @@ defmodule BypassTest do
455455
456456 with { :ok , conn } <- Mint.HTTP . connect ( :http , "127.0.0.1" , port ) ,
457457 { :ok , conn , ref } = Mint.HTTP . request ( conn , method , path , [ ] , "" ) do
458- result = receive_responses ( conn , ref )
459- { :ok , _conn } = Mint.HTTP . close ( conn )
460- result
458+ receive_responses ( conn , ref , 100 , [ ] )
461459 end
462460 end
463461
464- defp receive_responses ( conn , ref , result \\ % { done: false , status: 100 , body: [ ] } ) do
462+ defp receive_responses ( conn , ref , status , body ) do
465463 receive do
466464 message ->
467- with { :ok , conn , responses } <- Mint.HTTP . stream ( conn , message ) ,
468- % { } = result <-
469- Enum . reduce ( responses , result , fn response , result ->
470- case response do
471- { :status , ^ ref , status } ->
472- % { result | status: status }
473-
474- { :headers , ^ ref , _headers } ->
475- result
476-
477- { :data , ^ ref , data } ->
478- % { result | body: result . body ++ [ data ] }
479-
480- { :done , ^ ref } ->
481- % { result | done: true }
482-
483- { :error , ^ ref , _reason } = error ->
484- error
485- end
486- end ) do
487- case result do
488- % { done: true } -> { :ok , result . status , Enum . join ( result . body ) }
489- % { done: false } -> receive_responses ( conn , ref , result )
490- end
465+ with { :ok , conn , responses } <- Mint.HTTP . stream ( conn , message ) do
466+ receive_responses ( responses , conn , ref , status , body )
491467 end
492468 end
493469 end
494470
471+ defp receive_responses ( [ ] , conn , ref , status , body ) do
472+ receive_responses ( conn , ref , status , body )
473+ end
474+
475+ defp receive_responses ( [ response | responses ] , conn , ref , status , body ) do
476+ case response do
477+ { :status , ^ ref , status } ->
478+ receive_responses ( responses , conn , ref , status , body )
479+
480+ { :headers , ^ ref , _headers } ->
481+ receive_responses ( responses , conn , ref , status , body )
482+
483+ { :data , ^ ref , data } ->
484+ receive_responses ( responses , conn , ref , status , [ data | body ] )
485+
486+ { :done , ^ ref } ->
487+ _ = Mint.HTTP . close ( conn )
488+ { :ok , status , body |> Enum . reverse ( ) |> IO . iodata_to_binary ( ) }
489+
490+ { :error , ^ ref , _reason } = error ->
491+ error
492+ end
493+ end
494+
495495 test "Bypass.expect/4 can be used to define a specific route and then redefined" do
496496 :expect |> specific_route_redefined
497497 end
0 commit comments