@@ -449,6 +449,7 @@ parse_result(Map) ->
449449 Query = maps :from_list (uri_string :dissect_query (Query0 )),
450450 Sasl = case Query of
451451 #{" sasl" := " anon" } -> anon ;
452+ #{" sasl" := " external" } -> external ;
452453 #{" sasl" := " plain" } when UserInfo =:= undefined orelse length (UserInfo ) =:= 0 ->
453454 throw (plain_sasl_missing_userinfo );
454455 _ ->
@@ -618,6 +619,24 @@ parse_uri_test_() ->
618619 " keyfile=/etc/keyfile.key&fail_if_no_peer_cert=banana" )),
619620 ? _assertEqual ({error , plain_sasl_missing_userinfo },
620621 parse_uri (" amqp://my_host:9876?sasl=plain" )),
622+ ? _assertEqual (
623+ {ok , #{address => " my_host" ,
624+ port => 5671 ,
625+ hostname => <<" my_host" >>,
626+ tls_opts => {secure_port , [{cacertfile , " /etc/cacert.pem" },
627+ {certfile , " /etc/client.crt" },
628+ {keyfile , " /etc/client.key" }]},
629+ sasl => external }},
630+ parse_uri (" amqps://my_host?sasl=external&"
631+ " cacertfile=/etc/cacert.pem&"
632+ " certfile=/etc/client.crt&"
633+ " keyfile=/etc/client.key" )),
634+ ? _assertEqual (
635+ {ok , #{address => " my_proxy" ,
636+ port => 9876 ,
637+ hostname => <<" my_proxy" >>,
638+ sasl => external }},
639+ parse_uri (" amqp://my_proxy:9876?sasl=external" )),
621640 ? _assertEqual ({error , path_segment_not_supported },
622641 parse_uri (" amqp://my_host/my_path_segment:9876" ))
623642 ].
0 commit comments