mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-30 02:15:41 +00:00

* Serializer bugfix * Remove duplicate test * fix tests * fix float precision issues --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
51 lines
1.9 KiB
C++
51 lines
1.9 KiB
C++
#include "../test_helpers.h"
|
|
|
|
// Test encrypted packet serialization
|
|
void test_encrypted_packet_serialization()
|
|
{
|
|
meshtastic_MeshPacket packet = meshtastic_MeshPacket_init_zero;
|
|
packet.from = 0x11223344;
|
|
packet.to = 0x55667788;
|
|
packet.id = 0x9999;
|
|
packet.which_payload_variant = meshtastic_MeshPacket_encrypted_tag;
|
|
|
|
// Add some dummy encrypted data
|
|
const char *encrypted_data = "encrypted_payload_data";
|
|
packet.encrypted.size = strlen(encrypted_data);
|
|
memcpy(packet.encrypted.bytes, encrypted_data, packet.encrypted.size);
|
|
|
|
std::string json = MeshPacketSerializer::JsonSerializeEncrypted(&packet);
|
|
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();
|
|
|
|
// Check basic packet fields
|
|
TEST_ASSERT_TRUE(jsonObj.find("from") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(0x11223344, (uint32_t)jsonObj["from"]->AsNumber());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("to") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(0x55667788, (uint32_t)jsonObj["to"]->AsNumber());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("id") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(0x9999, (uint32_t)jsonObj["id"]->AsNumber());
|
|
|
|
// Check that it has encrypted data fields (not "payload" but "bytes" and "size")
|
|
TEST_ASSERT_TRUE(jsonObj.find("bytes") != jsonObj.end());
|
|
TEST_ASSERT_TRUE(jsonObj["bytes"]->IsString());
|
|
|
|
TEST_ASSERT_TRUE(jsonObj.find("size") != jsonObj.end());
|
|
TEST_ASSERT_EQUAL(22, (int)jsonObj["size"]->AsNumber()); // strlen("encrypted_payload_data") = 22
|
|
|
|
// The encrypted data should be hex-encoded
|
|
std::string encrypted_hex = jsonObj["bytes"]->AsString();
|
|
TEST_ASSERT_TRUE(encrypted_hex.length() > 0);
|
|
// Should be twice the size of the original data (hex encoding)
|
|
TEST_ASSERT_EQUAL(44, encrypted_hex.length()); // 22 * 2 = 44
|
|
|
|
delete root;
|
|
}
|