@@ -1936,6 +1936,70 @@ BOOST_AUTO_TEST_CASE( connack_prop ) {
1936
1936
do_combi_test_sync (test);
1937
1937
}
1938
1938
1939
+ BOOST_AUTO_TEST_CASE ( request_response ) {
1940
+ auto test = [](boost::asio::io_context& ioc, auto & cs, auto finish, auto & b) {
1941
+ auto & c = cs[0 ];
1942
+ clear_ordered ();
1943
+ if (c->get_protocol_version () != MQTT_NS::protocol_version::v5) {
1944
+ finish ();
1945
+ return ;
1946
+ }
1947
+
1948
+ c->set_client_id (" cid1" );
1949
+ c->set_clean_session (true );
1950
+ BOOST_TEST (c->connected () == false );
1951
+
1952
+ checker chk = {
1953
+ // connect
1954
+ cont (" h_connack" ),
1955
+ // disconnect
1956
+ cont (" h_close" ),
1957
+ };
1958
+
1959
+ c->set_v5_connack_handler (
1960
+ [&chk, &c]
1961
+ (bool sp, MQTT_NS::v5::connect_reason_code connect_reason_code, MQTT_NS::v5::properties props) {
1962
+ MQTT_CHK (" h_connack" );
1963
+ BOOST_TEST (c->connected () == true );
1964
+ BOOST_TEST (sp == false );
1965
+ BOOST_TEST (connect_reason_code == MQTT_NS::v5::connect_reason_code::success);
1966
+
1967
+ std::size_t times = 0 ;
1968
+ MQTT_NS::v5::visit_props (
1969
+ props,
1970
+ [&](MQTT_NS::v5::property::response_topic const & p) {
1971
+ ++times;
1972
+ },
1973
+ [](auto ){}
1974
+ );
1975
+ BOOST_TEST (times == 1 );
1976
+
1977
+ c->disconnect ();
1978
+ BOOST_TEST (c->connected () == true );
1979
+ return true ;
1980
+ });
1981
+ c->set_close_handler (
1982
+ [&chk, &finish, &c]
1983
+ () {
1984
+ MQTT_CHK (" h_close" );
1985
+ finish ();
1986
+ });
1987
+ c->set_error_handler (
1988
+ []
1989
+ (MQTT_NS::error_code) {
1990
+ BOOST_CHECK (false );
1991
+ });
1992
+ c->connect (
1993
+ MQTT_NS::v5::properties{
1994
+ MQTT_NS::v5::property::request_response_information (true )
1995
+ }
1996
+ );
1997
+ ioc.run ();
1998
+ BOOST_TEST (chk.all ());
1999
+ };
2000
+ do_combi_test_sync (test);
2001
+ }
2002
+
1939
2003
BOOST_AUTO_TEST_CASE ( session_taken_over ) {
1940
2004
auto test = [](boost::asio::io_context& ioc, auto & cs, auto finish, auto & /* b*/ ) {
1941
2005
auto & c1 = cs[0 ];
0 commit comments