@@ -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