@@ -831,6 +831,34 @@ async fn test_repo_prune(cptestctx: &ControlPlaneTestContext) {
831831 assert ! ( repos. iter( ) . any( |r| r. id( ) == repo2id) ) ;
832832 assert ! ( repos. iter( ) . any( |r| r. id( ) == repo3id) ) ;
833833 assert ! ( repos. iter( ) . any( |r| r. id( ) == repo4id) ) ;
834+
835+ // Re-insert repo 1.
836+ let repo1id_again = insert_test_tuf_repo ( & opctx, datastore, 1 ) . await ;
837+ // The ID should be the same.
838+ assert_eq ! ( repo1id, repo1id_again) ;
839+ // All four repos should be visible again.
840+ let repos = datastore
841+ . tuf_list_repos_unpruned_batched ( & opctx)
842+ . await
843+ . expect ( "listing repos" ) ;
844+ assert_eq ! ( repos. len( ) , 4 ) ;
845+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo1id) ) ;
846+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo2id) ) ;
847+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo3id) ) ;
848+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo4id) ) ;
849+
850+ // Activate the task again and wait for it to complete. The second repo
851+ // should now be pruned, since it is the least-recently uploaded.
852+ activate_background_task ( client, "tuf_repo_pruner" ) . await ;
853+ let repos = datastore
854+ . tuf_list_repos_unpruned_batched ( & opctx)
855+ . await
856+ . expect ( "listing repos" ) ;
857+ assert_eq ! ( repos. len( ) , 3 ) ;
858+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo1id) ) ;
859+ assert ! ( !repos. iter( ) . any( |r| r. id( ) == repo2id) ) ;
860+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo3id) ) ;
861+ assert ! ( repos. iter( ) . any( |r| r. id( ) == repo4id) ) ;
834862}
835863
836864#[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
0 commit comments