mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-12 14:05:58 +00:00

289f90bdbe
merged a commit that relied on5b9db81819
but the latter commit was not merged. This does manual wrangling to make sure the same file that exists on develop right now ends up on master.
60 lines
2.1 KiB
C++
60 lines
2.1 KiB
C++
#include "../test_helpers.h"
|
|
|
|
// Helper function for all encrypted packet assertions
|
|
void assert_encrypted_packet(const std::string &json, meshtastic_MeshPacket packet)
|
|
{
|
|
// Parse and validate JSON
|
|
TEST_ASSERT_TRUE(json.length() > 0);
|
|
|
|
JSONValue *root = JSON::Parse(json.c_str());
|
|
TEST_ASSERT_NOT_NULL(root);
|
|
TEST_ASSERT_TRUE(root->IsObject());
|
|
|
|
JSONObject jsonObj = root->AsObject();
|
|
|
|
// Assert basic packet fields
|
|
TEST_ASSERT_TRUE(jsonObj.find("from") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(packet.from, (uint32_t)jsonObj.at("from")->AsNumber());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("to") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(packet.to, (uint32_t)jsonObj.at("to")->AsNumber());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("id") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(packet.id, (uint32_t)jsonObj.at("id")->AsNumber());
|
|
|
|
// Assert encrypted data fields
|
|
TEST_ASSERT_TRUE(jsonObj.find("bytes") != jsonObj.end());
|
|
TEST_ASSERT_TRUE(jsonObj.at("bytes")->IsString());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("size") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(packet.encrypted.size, (int)jsonObj.at("size")->AsNumber());
|
|
|
|
// Assert hex encoding
|
|
std::string encrypted_hex = jsonObj["bytes"]->AsString();
|
|
TEST_ASSERT_EQUAL(packet.encrypted.size * 2, encrypted_hex.length());
|
|
|
|
delete root;
|
|
}
|
|
|
|
// Test encrypted packet serialization
|
|
void test_encrypted_packet_serialization()
|
|
{
|
|
const char *data = "encrypted_payload_data";
|
|
meshtastic_MeshPacket packet =
|
|
create_test_packet(meshtastic_PortNum_TEXT_MESSAGE_APP, reinterpret_cast<const uint8_t *>(data), strlen(data),
|
|
meshtastic_MeshPacket_encrypted_tag);
|
|
std::string json = MeshPacketSerializer::JsonSerializeEncrypted(&packet);
|
|
|
|
assert_encrypted_packet(json, packet);
|
|
}
|
|
|
|
// Test empty encrypted packet
|
|
void test_empty_encrypted_packet()
|
|
{
|
|
meshtastic_MeshPacket packet =
|
|
create_test_packet(meshtastic_PortNum_TEXT_MESSAGE_APP, nullptr, 0, meshtastic_MeshPacket_encrypted_tag);
|
|
std::string json = MeshPacketSerializer::JsonSerializeEncrypted(&packet);
|
|
|
|
assert_encrypted_packet(json, packet);
|
|
}
|