diff --git a/test/test_helpers/test_advert_data.cpp b/test/test_helpers/test_advert_data.cpp index bc287a435..510b1c497 100644 --- a/test/test_helpers/test_advert_data.cpp +++ b/test/test_helpers/test_advert_data.cpp @@ -188,8 +188,8 @@ protected: void onContactResponse(const ContactInfo&, const uint8_t*, uint8_t) override {} }; -mesh::Packet BuildSignedAdvertPacket(const mesh::LocalIdentity& sender, uint32_t timestamp, - const uint8_t* app_data, uint8_t app_data_len) { +mesh::Packet BuildSignedAdvertPacket(uint32_t timestamp, const uint8_t* app_data, uint8_t app_data_len) { + mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); mesh::Packet packet; // Wire header: flood-routed advert packet with no path hashes yet. @@ -238,21 +238,21 @@ TEST(AdvertData, ParsesNameOnlyFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with a trailing name field. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_NAME_MASK); // name field: raw bytes for "alice", consuming the rest of app_data. WriteStringLiteral(app_data, &offset, "alice"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); ASSERT_TRUE(mesh.discovered_contact.has_value()); EXPECT_EQ(ADV_TYPE_CHAT, mesh.discovered_contact->type); EXPECT_STREQ("alice", mesh.discovered_contact->name); - EXPECT_EQ(1704067201U, mesh.discovered_contact->last_advert_timestamp); + EXPECT_EQ(advert_timestamp, mesh.discovered_contact->last_advert_timestamp); EXPECT_EQ(1704067200U, mesh.discovered_contact->lastmod); EXPECT_EQ(0, mesh.discovered_contact->gps_lat); EXPECT_EQ(0, mesh.discovered_contact->gps_lon); @@ -269,6 +269,7 @@ TEST(AdvertData, ParsesNameAndCoordinatesFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: repeater advert with lat/lon followed by a name. WriteU8(app_data, &offset, ADV_TYPE_REPEATER | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -279,8 +280,7 @@ TEST(AdvertData, ParsesNameAndCoordinatesFromNetworkPacket) { // name field: raw bytes for "node" after the coordinate fields. WriteStringLiteral(app_data, &offset, "node"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -302,6 +302,7 @@ TEST(AdvertData, ParsesCoordinateExtremesFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: sensor advert with both location fields and a name. WriteU8(app_data, &offset, ADV_TYPE_SENSOR | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -312,8 +313,7 @@ TEST(AdvertData, ParsesCoordinateExtremesFromNetworkPacket) { // name field: raw bytes for "edge". WriteStringLiteral(app_data, &offset, "edge"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -335,6 +335,7 @@ TEST(AdvertData, RejectsLongitudeOutsideValidRangeFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with location and name fields present. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -345,8 +346,7 @@ TEST(AdvertData, RejectsLongitudeOutsideValidRangeFromNetworkPacket) { // name field: parser should reject before the trailing name matters. WriteStringLiteral(app_data, &offset, "node"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -364,6 +364,7 @@ TEST(AdvertData, RejectsLongitudeBelowValidRangeFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with location and name fields present. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -374,8 +375,7 @@ TEST(AdvertData, RejectsLongitudeBelowValidRangeFromNetworkPacket) { // name field: included to keep the payload shape consistent. WriteStringLiteral(app_data, &offset, "node"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -393,6 +393,7 @@ TEST(AdvertData, RejectsLatitudeOutsideValidRangeFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with location and name fields present. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -403,8 +404,7 @@ TEST(AdvertData, RejectsLatitudeOutsideValidRangeFromNetworkPacket) { // name field: included to keep the payload shape consistent. WriteStringLiteral(app_data, &offset, "node"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -422,6 +422,7 @@ TEST(AdvertData, RejectsLatitudeBelowValidRangeFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with location and name fields present. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_LATLON_MASK | ADV_NAME_MASK); @@ -432,8 +433,7 @@ TEST(AdvertData, RejectsLatitudeBelowValidRangeFromNetworkPacket) { // name field: included to keep the payload shape consistent. WriteStringLiteral(app_data, &offset, "node"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); mesh.recv(&packet); @@ -451,14 +451,14 @@ TEST(AdvertData, RejectsForgedSignatureFromNetworkPacket) { uint8_t app_data[MAX_ADVERT_DATA_SIZE] = {}; size_t offset = 0; + constexpr uint32_t advert_timestamp = 1704067201U; // flags/type byte: chat advert with a trailing name field. WriteU8(app_data, &offset, ADV_TYPE_CHAT | ADV_NAME_MASK); // name field: raw bytes for "mallory". WriteStringLiteral(app_data, &offset, "mallory"); - mesh::LocalIdentity sender(kSenderPrivateKeyHex, kSenderPublicKeyHex); - mesh::Packet packet = BuildSignedAdvertPacket(sender, 1704067201U, app_data, offset); + mesh::Packet packet = BuildSignedAdvertPacket(advert_timestamp, app_data, offset); // Corrupt the signature bytes after signing so verification must fail in Mesh::onRecvPacket(). packet.payload[PUB_KEY_SIZE + 4] ^= 0xFF;