|
8 | 8 | #include "combi_test.hpp"
|
9 | 9 | #include "checker.hpp"
|
10 | 10 | #include "ordered_caller.hpp"
|
| 11 | +#include "test_util.hpp" |
11 | 12 | #include "../common/global_fixture.hpp"
|
12 | 13 |
|
13 | 14 | BOOST_AUTO_TEST_SUITE(st_connect)
|
@@ -1229,6 +1230,101 @@ BOOST_AUTO_TEST_CASE( async_pingresp_timeout ) {
|
1229 | 1230 | do_combi_test_async(test);
|
1230 | 1231 | }
|
1231 | 1232 |
|
| 1233 | + |
| 1234 | +BOOST_AUTO_TEST_CASE( async_connect_session_present_empty_store ) { |
| 1235 | + auto test = [](boost::asio::io_context& ioc, auto& cs, auto finish, auto& b) { |
| 1236 | + auto& c = cs[0]; |
| 1237 | + clear_ordered(); |
| 1238 | + c->set_client_id("cid1"); |
| 1239 | + |
| 1240 | + checker chk = { |
| 1241 | + // connect |
| 1242 | + cont("h_connack1"), |
| 1243 | + // disconnect |
| 1244 | + cont("h_close1"), |
| 1245 | + // connect |
| 1246 | + cont("h_connack2"), |
| 1247 | + // disconnect |
| 1248 | + cont("h_close2"), |
| 1249 | + }; |
| 1250 | + |
| 1251 | + switch (c->get_protocol_version()) { |
| 1252 | + case MQTT_NS::protocol_version::v3_1_1: |
| 1253 | + c->set_connack_handler( |
| 1254 | + [&chk, &c] |
| 1255 | + (bool sp, MQTT_NS::connect_return_code connack_return_code) { |
| 1256 | + auto ret = MQTT_ORDERED( |
| 1257 | + [&] { |
| 1258 | + MQTT_CHK("h_connack1"); |
| 1259 | + BOOST_TEST(sp == false); |
| 1260 | + BOOST_TEST(connack_return_code == MQTT_NS::connect_return_code::accepted); |
| 1261 | + c->async_disconnect(); |
| 1262 | + }, |
| 1263 | + [&] { |
| 1264 | + MQTT_CHK("h_connack2"); |
| 1265 | + BOOST_TEST(sp == true); |
| 1266 | + BOOST_TEST(connack_return_code == MQTT_NS::connect_return_code::accepted); |
| 1267 | + c->async_disconnect(); |
| 1268 | + } |
| 1269 | + ); |
| 1270 | + BOOST_TEST(ret); |
| 1271 | + return true; |
| 1272 | + }); |
| 1273 | + break; |
| 1274 | + case MQTT_NS::protocol_version::v5: |
| 1275 | + c->set_v5_connack_handler( |
| 1276 | + [&chk, &c] |
| 1277 | + (bool sp, MQTT_NS::v5::connect_reason_code connect_reason_code, MQTT_NS::v5::properties /*props*/) { |
| 1278 | + auto ret = MQTT_ORDERED( |
| 1279 | + [&] { |
| 1280 | + MQTT_CHK("h_connack1"); |
| 1281 | + BOOST_TEST(sp == false); |
| 1282 | + BOOST_TEST(connect_reason_code == MQTT_NS::v5::connect_reason_code::success); |
| 1283 | + c->async_disconnect(); |
| 1284 | + }, |
| 1285 | + [&] { |
| 1286 | + MQTT_CHK("h_connack2"); |
| 1287 | + BOOST_TEST(sp == true); |
| 1288 | + BOOST_TEST(connect_reason_code == MQTT_NS::v5::connect_reason_code::success); |
| 1289 | + c->async_disconnect(); |
| 1290 | + } |
| 1291 | + ); |
| 1292 | + BOOST_TEST(ret); |
| 1293 | + return true; |
| 1294 | + }); |
| 1295 | + break; |
| 1296 | + default: |
| 1297 | + BOOST_CHECK(false); |
| 1298 | + break; |
| 1299 | + } |
| 1300 | + |
| 1301 | + c->set_close_handler( |
| 1302 | + [&] |
| 1303 | + () { |
| 1304 | + auto ret = MQTT_ORDERED( |
| 1305 | + [&] { |
| 1306 | + MQTT_CHK("h_close1"); |
| 1307 | + async_connect_no_clean(c); |
| 1308 | + }, |
| 1309 | + [&] { |
| 1310 | + MQTT_CHK("h_close2"); |
| 1311 | + finish(); |
| 1312 | + } |
| 1313 | + ); |
| 1314 | + BOOST_TEST(ret); |
| 1315 | + }); |
| 1316 | + c->set_error_handler( |
| 1317 | + [&] |
| 1318 | + (MQTT_NS::error_code) { |
| 1319 | + BOOST_CHECK(false); |
| 1320 | + }); |
| 1321 | + async_connect_no_clean(c); |
| 1322 | + ioc.run(); |
| 1323 | + BOOST_TEST(chk.all()); |
| 1324 | + }; |
| 1325 | + do_combi_test_async(test); |
| 1326 | +} |
| 1327 | + |
1232 | 1328 | BOOST_AUTO_TEST_CASE( connect_prop ) {
|
1233 | 1329 | auto test = [](boost::asio::io_context& ioc, auto& cs, auto finish, auto& b) {
|
1234 | 1330 | auto& c = cs[0];
|
|
0 commit comments