@@ -478,6 +478,27 @@ def test_file_name_serializers(self):
478478 serialized = self .hda_serializer .serialize (hda , keys , user = self .admin_user )
479479 assert "file_name" in serialized
480480
481+ def test_serialize_metadata_skips_file_path_for_purged (self ):
482+ # Purged datasets have no object store path, so metadata serialization must skip it.
483+ assert self .app .config .expose_dataset_path
484+
485+ def _serialize (purged ):
486+ metadata_file = model .MetadataFile (name = "bam_index" )
487+ metadata_file .get_file_name = mock .Mock (return_value = "/objects/bam_index.dat" )
488+ item = mock .MagicMock (purged = purged )
489+ item .metadata .spec .items .return_value = [("bam_index" , {})]
490+ item .metadata .get .return_value = metadata_file
491+ result = self .hda_serializer .serialize_metadata (item , "metadata" )
492+ return metadata_file .get_file_name , result
493+
494+ get_file_name , result = _serialize (purged = True )
495+ get_file_name .assert_not_called ()
496+ assert "bam_index" not in result
497+
498+ get_file_name , result = _serialize (purged = False )
499+ get_file_name .assert_called_once ()
500+ assert result ["bam_index" ] == "/objects/bam_index.dat"
501+
481502 def test_serializing_inaccessible (self ):
482503 owner = self .user_manager .create (** user2_data )
483504 non_owner = self .user_manager .create (** user3_data )
0 commit comments