@@ -373,7 +373,10 @@ mod verifier {
373
373
names : & HashMap < IdtyIndex , IdtyName > ,
374
374
) {
375
375
for ( idty_index, idty_value) in identities {
376
- // Rule 1: each Status::Member should have a membership and a name.
376
+ // Rule 1: each Status::Member
377
+ // should have a membership and a name
378
+ // membership should be set to expire
379
+ // identity should have no scheduled action
377
380
if let IdtyStatus :: Member = idty_value. status {
378
381
self . assert (
379
382
memberships. get ( idty_index) . is_some ( ) ,
@@ -383,9 +386,23 @@ mod verifier {
383
386
names. get ( idty_index) . is_some ( ) ,
384
387
format ! ( "identity number {idty_index} should have a name" ) ,
385
388
) ;
389
+ self . assert (
390
+ memberships. get ( idty_index) . unwrap ( ) . expire_on != 0 ,
391
+ format ! (
392
+ "Member identity number {idty_index} should have a non-null expire_on value"
393
+ ) ,
394
+ ) ;
395
+ self . assert (
396
+ identities. get ( idty_index) . unwrap ( ) . next_scheduled == 0 ,
397
+ format ! (
398
+ "Member identity number {idty_index} should have a null next_scheduled value"
399
+ ) ,
400
+ ) ;
386
401
}
387
402
388
- // Rule 2: each Status::NotMember should have a name but no membership.
403
+ // Rule 2: each Status::NotMember
404
+ // should have a name but no membership
405
+ // should have a scheduled action (auto-revocation)
389
406
if let IdtyStatus :: NotMember = idty_value. status {
390
407
self . assert (
391
408
memberships. get ( idty_index) . is_none ( ) ,
@@ -395,9 +412,16 @@ mod verifier {
395
412
names. get ( idty_index) . is_some ( ) ,
396
413
format ! ( "identity number {idty_index} should have a name" ) ,
397
414
) ;
415
+ self . assert (
416
+ identities. get ( idty_index) . unwrap ( ) . next_scheduled != 0 ,
417
+ format ! ( "NotMember identity number {idty_index} should have a non-null next_scheduled value" ) ,
418
+ ) ;
398
419
}
399
420
400
- // Rule 3: each Status::Revoke should should have a name but no membership.
421
+ // Rule 3: each Status::Revoked
422
+ // should should have a name
423
+ // no membership
424
+ // should be scheduled for removal
401
425
if let IdtyStatus :: Revoked = idty_value. status {
402
426
self . assert (
403
427
memberships. get ( idty_index) . is_none ( ) ,
@@ -407,9 +431,15 @@ mod verifier {
407
431
names. get ( idty_index) . is_some ( ) ,
408
432
format ! ( "identity number {idty_index} should have a name" ) ,
409
433
) ;
434
+ self . assert (
435
+ identities. get ( idty_index) . unwrap ( ) . next_scheduled != 0 ,
436
+ format ! ( "Revoked identity number {idty_index} should have a non-null next_scheduled value" ) ,
437
+ ) ;
410
438
}
411
439
412
- // Rule 4: each Status::Unvalidaded should have a name but no membership.
440
+ // Rule 4: each Status::Unvalidaded
441
+ // should have a name but no membership.
442
+ // should be scheduled for removal
413
443
if let IdtyStatus :: Unvalidated = idty_value. status {
414
444
self . assert (
415
445
memberships. get ( idty_index) . is_none ( ) ,
@@ -419,9 +449,15 @@ mod verifier {
419
449
names. get ( idty_index) . is_some ( ) ,
420
450
format ! ( "identity number {idty_index} should have a name" ) ,
421
451
) ;
452
+ self . assert (
453
+ identities. get ( idty_index) . unwrap ( ) . next_scheduled != 0 ,
454
+ format ! ( "Unvalidated identity number {idty_index} should have a non-null next_scheduled value" ) ,
455
+ ) ;
422
456
}
423
457
424
- // Rule 5: each Status::Unconfirmed should not have a name neither a membership.
458
+ // Rule 5: each Status::Unconfirmed
459
+ // should not have a name neither a membership.
460
+ // should be scheduled for removal soon
425
461
if let IdtyStatus :: Unconfirmed = idty_value. status {
426
462
self . assert (
427
463
memberships. get ( idty_index) . is_none ( ) ,
@@ -431,6 +467,10 @@ mod verifier {
431
467
names. get ( idty_index) . is_none ( ) ,
432
468
format ! ( "identity number {idty_index} should not have a name" ) ,
433
469
) ;
470
+ self . assert (
471
+ identities. get ( idty_index) . unwrap ( ) . next_scheduled != 0 ,
472
+ format ! ( "Unconfirmed identity number {idty_index} should have a non-null next_scheduled value" ) ,
473
+ ) ;
434
474
}
435
475
}
436
476
}
0 commit comments