diff --git a/tools/chatgui/CMakeLists.txt b/tools/chatgui/CMakeLists.txt index 926e581b..31d7756a 100644 --- a/tools/chatgui/CMakeLists.txt +++ b/tools/chatgui/CMakeLists.txt @@ -354,7 +354,7 @@ target_link_libraries(test_file_drop PRIVATE ${QT_LIBS} ${QT_TEST_LIB} rlottie:: add_test(NAME test_file_drop COMMAND test_file_drop) set_tests_properties(test_file_drop PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen" TIMEOUT 30) -add_executable(test_channel_replies tests/test_channel_replies.cpp db/db_manager.cpp) +add_executable(test_channel_replies tests/test_channel_replies.cpp db/db_manager.cpp src/nodespage.cpp) target_include_directories(test_channel_replies PRIVATE ${UTUN_INCLUDE_DIRS}) target_link_libraries(test_channel_replies PRIVATE ${QT_LIBS} ${QT_TEST_LIB} utun utun_voice pthread ${CMAKE_DL_LIBS}) add_test(NAME test_channel_replies COMMAND test_channel_replies) diff --git a/tools/chatgui/tests/test_channel_replies.cpp b/tools/chatgui/tests/test_channel_replies.cpp index a7f08244..c50c0ed6 100644 --- a/tools/chatgui/tests/test_channel_replies.cpp +++ b/tools/chatgui/tests/test_channel_replies.cpp @@ -1,5 +1,6 @@ /* Настоящее ядро и SQLite: подписанные ответы, сохранение, медиа и окно старой истории. */ #include "../db/db_manager.h" +#include "../src/nodespage.h" #include #include extern "C" { @@ -8,6 +9,8 @@ extern "C" { #include "chat/chat_event.h" #include "chat/db_sync.h" #include "media_async/attachment_send.h" +#include "routing_layer/topo_node_sqlite.h" +#include "config_parser.h" #include "mem.h" #include "debug_config.h" } @@ -74,6 +77,24 @@ private slots: reader.setDb(nullptr); QCOMPARE(sqlite3_close(reopened), SQLITE_OK); } + void addressPresentation() { + TOPO_SOCKMETA4 meta4{}; meta4.id = 5; meta4.config_type = CFG_SERVER_TYPE_PUBLIC; + TOPO_SOCKMETA6 meta6{}; meta6.id = 6; meta6.config_type = CFG_SERVER_TYPE_PUBLIC; + meta6.address_profile = {ADDRESS_MAP_UNCHANGED, ADDRESS_IN_OPEN, ADDRESS_SOURCE_ETCP}; + TOPO_ADDR4 addr4{}; memcpy(addr4.addr, (uint8_t[]){194,63,142,140}, 4); + addr4.port = 1333; addr4.socket_id = 5; addr4.protocol = TOPO_PROTO_UDP; + TOPO_ADDR6 addr6{}; addr6.addr[0] = 0x2a; addr6.addr[1] = 0x04; addr6.addr[2] = 0x52; addr6.addr[15] = 0xf; + addr6.port = 443; addr6.socket_id = 6; addr6.protocol = TOPO_PROTO_TCP | TOPO_PROTO_REALITY; + TOPO_NODE node{}; node.node_id = inst->node_id; + node.v4_sock_meta = &meta4; node.v4_addrs = &addr4; node.v6_sock_meta = &meta6; node.v6_addrs = &addr6; + QCOMPARE(topo_node_sqlite_addrs_put(inst->topo_sqlite_db, inst->node_id, &node), 0); + NodesPage page(&db); page.refreshNodes(); + const auto* dump = page.findChild(); QVERIFY(dump); + const QString text = dump->toPlainText(); + QVERIFY2(text.contains("194.63.142.140:1333 UDP UNKNOWN"), qPrintable(text)); + QVERIFY2(text.contains("2a04:5200:0:0:0:0:0:f:443 TCP+REALITY DIRECT"), qPrintable(text)); + } + void unavailableAndForeignReferencesFail() { QVERIFY(send("missing", QByteArray(32, 'z')).isEmpty()); const QString saved = channel; chat_core_create_channel_auto(inst, "Other channel");