@@ -484,6 +484,93 @@ func TestConfigMaps_updatePeers_lost_and_found(t *testing.T) {
484
484
_ = testutil .RequireRecvCtx (ctx , t , done )
485
485
}
486
486
487
+ func TestConfigMaps_setBlockEndpoints_different (t * testing.T ) {
488
+ t .Parallel ()
489
+ ctx := testutil .Context (t , testutil .WaitShort )
490
+ logger := slogtest .Make (t , nil ).Leveled (slog .LevelDebug )
491
+ fEng := newFakeEngineConfigurable ()
492
+ nodePrivateKey := key .NewNode ()
493
+ nodeID := tailcfg .NodeID (5 )
494
+ discoKey := key .NewDisco ()
495
+ uut := newConfigMaps (logger , fEng , nodeID , nodePrivateKey , discoKey .Public (), nil )
496
+ defer uut .close ()
497
+
498
+ p1ID := uuid .MustParse ("10000000-0000-0000-0000-000000000000" )
499
+ p1Node := newTestNode (1 )
500
+ p1n , err := NodeToProto (p1Node )
501
+ require .NoError (t , err )
502
+ p1tcn , err := uut .protoNodeToTailcfg (p1n )
503
+ p1tcn .KeepAlive = true
504
+ require .NoError (t , err )
505
+
506
+ // Given: peer already exists
507
+ uut .L .Lock ()
508
+ uut .peers [p1ID ] = & peerLifecycle {
509
+ peerID : p1ID ,
510
+ node : p1tcn ,
511
+ lastHandshake : time .Date (2024 , 1 , 7 , 12 , 0 , 10 , 0 , time .UTC ),
512
+ }
513
+ uut .L .Unlock ()
514
+
515
+ uut .setBlockEndpoints (true )
516
+
517
+ nm := testutil .RequireRecvCtx (ctx , t , fEng .setNetworkMap )
518
+ r := testutil .RequireRecvCtx (ctx , t , fEng .reconfig )
519
+ require .Len (t , nm .Peers , 1 )
520
+ require .Len (t , nm .Peers [0 ].Endpoints , 0 )
521
+ require .Len (t , r .wg .Peers , 1 )
522
+
523
+ done := make (chan struct {})
524
+ go func () {
525
+ defer close (done )
526
+ uut .close ()
527
+ }()
528
+ _ = testutil .RequireRecvCtx (ctx , t , done )
529
+ }
530
+
531
+ func TestConfigMaps_setBlockEndpoints_same (t * testing.T ) {
532
+ t .Parallel ()
533
+ ctx := testutil .Context (t , testutil .WaitShort )
534
+ logger := slogtest .Make (t , nil ).Leveled (slog .LevelDebug )
535
+ fEng := newFakeEngineConfigurable ()
536
+ nodePrivateKey := key .NewNode ()
537
+ nodeID := tailcfg .NodeID (5 )
538
+ discoKey := key .NewDisco ()
539
+ uut := newConfigMaps (logger , fEng , nodeID , nodePrivateKey , discoKey .Public (), nil )
540
+ defer uut .close ()
541
+
542
+ p1ID := uuid .MustParse ("10000000-0000-0000-0000-000000000000" )
543
+ p1Node := newTestNode (1 )
544
+ p1n , err := NodeToProto (p1Node )
545
+ require .NoError (t , err )
546
+ p1tcn , err := uut .protoNodeToTailcfg (p1n )
547
+ p1tcn .KeepAlive = true
548
+ require .NoError (t , err )
549
+
550
+ // Given: peer already exists && blockEndpoints set to true
551
+ uut .L .Lock ()
552
+ uut .peers [p1ID ] = & peerLifecycle {
553
+ peerID : p1ID ,
554
+ node : p1tcn ,
555
+ lastHandshake : time .Date (2024 , 1 , 7 , 12 , 0 , 10 , 0 , time .UTC ),
556
+ }
557
+ uut .blockEndpoints = true
558
+ uut .L .Unlock ()
559
+
560
+ // Then: we don't configure
561
+ requireNeverConfigures (ctx , t , uut )
562
+
563
+ // When we set blockEndpoints to true
564
+ uut .setBlockEndpoints (true )
565
+
566
+ done := make (chan struct {})
567
+ go func () {
568
+ defer close (done )
569
+ uut .close ()
570
+ }()
571
+ _ = testutil .RequireRecvCtx (ctx , t , done )
572
+ }
573
+
487
574
func expectStatusWithHandshake (
488
575
ctx context.Context , t testing.TB , fEng * fakeEngineConfigurable , k key.NodePublic , lastHandshake time.Time ,
489
576
) <- chan struct {} {
0 commit comments