@@ -255,7 +255,8 @@ BOOST_AUTO_TEST_CASE(it_parses_a_payload_from_a_legacy_contract_key_and_value)
255
255
256
256
const NN::BeaconPayload payload = NN::BeaconPayload::Parse (key, value);
257
257
258
- BOOST_CHECK_EQUAL (payload.m_version , NN::BeaconPayload::CURRENT_VERSION);
258
+ // Legacy beacon payloads always parse to version 1:
259
+ BOOST_CHECK_EQUAL (payload.m_version , 1 );
259
260
BOOST_CHECK (payload.m_cpid == cpid);
260
261
BOOST_CHECK (payload.m_beacon .m_public_key == TestKey::Public ());
261
262
BOOST_CHECK_EQUAL (payload.m_beacon .m_timestamp , 0 );
@@ -274,33 +275,44 @@ BOOST_AUTO_TEST_CASE(it_behaves_like_a_contract_payload)
274
275
BOOST_CHECK (payload.RequiredBurnAmount () > 0 );
275
276
}
276
277
277
- BOOST_AUTO_TEST_CASE (it_checks_whether_the_payload_is_well_formed_for_add )
278
+ BOOST_AUTO_TEST_CASE (it_checks_whether_the_payload_is_well_formed )
278
279
{
279
280
const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
280
281
NN::BeaconPayload valid (cpid, NN::Beacon (TestKey::Public ()));
281
282
valid.m_signature = TestKey::Signature ();
282
283
283
284
BOOST_CHECK (valid.WellFormed (NN::ContractAction::ADD) == true );
285
+ BOOST_CHECK (valid.WellFormed (NN::ContractAction::REMOVE) == true );
284
286
285
287
NN::BeaconPayload zero_cpid{NN::Cpid (), NN::Beacon (TestKey::Public ())};
286
288
zero_cpid.m_signature = TestKey::Signature ();
287
289
288
290
// A zero CPID is technically valid...
289
291
BOOST_CHECK (zero_cpid.WellFormed (NN::ContractAction::ADD) == true );
292
+ BOOST_CHECK (zero_cpid.WellFormed (NN::ContractAction::REMOVE) == true );
290
293
291
294
NN::BeaconPayload missing_key (cpid, NN::Beacon ());
292
295
missing_key.m_signature = TestKey::Signature ();
293
296
294
297
BOOST_CHECK (missing_key.WellFormed (NN::ContractAction::ADD) == false );
298
+ BOOST_CHECK (missing_key.WellFormed (NN::ContractAction::REMOVE) == false );
295
299
}
296
300
297
- BOOST_AUTO_TEST_CASE (it_checks_whether_the_payload_is_well_formed_for_delete )
301
+ BOOST_AUTO_TEST_CASE (it_checks_whether_a_legacy_v1_payload_is_well_formed )
298
302
{
299
303
const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
300
- NN::BeaconPayload valid (cpid, NN::Beacon ());
301
- valid.m_signature = TestKey::Signature ();
304
+ const NN::Beacon beacon (TestKey::Public ());
302
305
303
- BOOST_CHECK (valid.WellFormed (NN::ContractAction::REMOVE) == true );
306
+ const NN::BeaconPayload add = NN::BeaconPayload (1 , cpid, beacon);
307
+
308
+ BOOST_CHECK (add.WellFormed (NN::ContractAction::ADD) == true );
309
+ // Legacy beacon deletion contracts ignore the value:
310
+ BOOST_CHECK (add.WellFormed (NN::ContractAction::REMOVE) == true );
311
+
312
+ const NN::BeaconPayload remove = NN::BeaconPayload (1 , cpid, NN::Beacon ());
313
+
314
+ BOOST_CHECK (remove .WellFormed (NN::ContractAction::ADD) == false );
315
+ BOOST_CHECK (remove .WellFormed (NN::ContractAction::REMOVE) == true );
304
316
}
305
317
306
318
BOOST_AUTO_TEST_CASE (it_signs_the_payload)
@@ -335,7 +347,7 @@ BOOST_AUTO_TEST_CASE(it_verifies_the_payload_signature)
335
347
BOOST_CHECK (payload.VerifySignature ());
336
348
}
337
349
338
- BOOST_AUTO_TEST_CASE (it_serializes_to_a_stream_for_add )
350
+ BOOST_AUTO_TEST_CASE (it_serializes_to_a_stream )
339
351
{
340
352
const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
341
353
const NN::Beacon beacon (TestKey::Public ());
@@ -358,20 +370,22 @@ BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream_for_add)
358
370
expected.end ());
359
371
}
360
372
361
- BOOST_AUTO_TEST_CASE (it_deserializes_from_a_stream_for_add )
373
+ BOOST_AUTO_TEST_CASE (it_deserializes_from_a_stream )
362
374
{
363
375
const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
364
376
const NN::Beacon beacon (TestKey::Public ());
365
377
const std::vector<uint8_t > signature = TestKey::Signature ();
366
378
367
- CDataStream stream = CDataStream (SER_NETWORK, PROTOCOL_VERSION)
379
+ CDataStream stream_add = CDataStream (SER_NETWORK, PROTOCOL_VERSION)
368
380
<< NN::BeaconPayload::CURRENT_VERSION
369
381
<< cpid
370
382
<< beacon
371
383
<< signature;
372
384
385
+ CDataStream stream_remove = stream_add;
386
+
373
387
NN::BeaconPayload payload;
374
- payload.Unserialize (stream , NN::ContractAction::ADD);
388
+ payload.Unserialize (stream_add , NN::ContractAction::ADD);
375
389
376
390
BOOST_CHECK_EQUAL (payload.m_version , NN::BeaconPayload::CURRENT_VERSION);
377
391
BOOST_CHECK (payload.m_cpid == cpid);
@@ -385,45 +399,13 @@ BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream_for_add)
385
399
signature.end ());
386
400
387
401
BOOST_CHECK (payload.WellFormed (NN::ContractAction::ADD) == true );
388
- }
389
402
390
- BOOST_AUTO_TEST_CASE (it_serializes_to_a_stream_for_delete)
391
- {
392
- const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
393
- NN::BeaconPayload payload (cpid, NN::Beacon ());
394
- payload.m_signature = TestKey::Signature ();
395
-
396
- const CDataStream expected = CDataStream (SER_NETWORK, PROTOCOL_VERSION)
397
- << NN::BeaconPayload::CURRENT_VERSION
398
- << cpid
399
- << payload.m_signature ;
400
-
401
- CDataStream stream (SER_NETWORK, PROTOCOL_VERSION);
402
- payload.Serialize (stream, NN::ContractAction::REMOVE);
403
-
404
- BOOST_CHECK_EQUAL_COLLECTIONS (
405
- stream.begin (),
406
- stream.end (),
407
- expected.begin (),
408
- expected.end ());
409
- }
410
-
411
- BOOST_AUTO_TEST_CASE (it_deserializes_from_a_stream_for_delete)
412
- {
413
- const NN::Cpid cpid = NN::Cpid::Parse (" 00010203040506070809101112131415" );
414
- const std::vector<uint8_t > signature = TestKey::Signature ();
415
-
416
- CDataStream stream = CDataStream (SER_NETWORK, PROTOCOL_VERSION)
417
- << NN::BeaconPayload::CURRENT_VERSION
418
- << cpid
419
- << signature;
420
-
421
- NN::BeaconPayload payload;
422
- payload.Unserialize (stream, NN::ContractAction::REMOVE);
403
+ payload = NN::BeaconPayload ();
404
+ payload.Unserialize (stream_remove, NN::ContractAction::REMOVE);
423
405
424
406
BOOST_CHECK_EQUAL (payload.m_version , NN::BeaconPayload::CURRENT_VERSION);
425
407
BOOST_CHECK (payload.m_cpid == cpid);
426
- BOOST_CHECK (payload.m_beacon .m_public_key . Raw (). empty () == true );
408
+ BOOST_CHECK (payload.m_beacon .m_public_key == TestKey::Public () );
427
409
BOOST_CHECK_EQUAL (payload.m_beacon .m_timestamp , 0 );
428
410
429
411
BOOST_CHECK_EQUAL_COLLECTIONS (
0 commit comments