@@ -2711,6 +2711,42 @@ def test_package_model_update_from_purldb_multiple_entries(self, mock_get_purldb
27112711 self .assertEqual (["Keyword1" , "Keyword2" ], package1 .keywords )
27122712 self .assertEqual ("Python" , package1 .primary_language )
27132713
2714+ @mock .patch ("component_catalog.models.Package.get_purldb_entries" )
2715+ def test_package_model_update_from_purldb_multiple_entries_package_content (
2716+ self , mock_get_entries
2717+ ):
2718+ purldb_entry_binary = {
2719+ "uuid" : "e133e70b-8dd3-4cf1-9711-72b1f57523a0" ,
2720+ "purl" : "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26-py3-none-any.whl" ,
2721+ "type" : "pypi" ,
2722+ "name" : "boto3" ,
2723+ "version" : "1.37.26" ,
2724+ "filename" : "boto3-1.37.26-py3-none-any.whl" ,
2725+ "download_url" : "https://files.pythonhosted.org/packages/boto3-1.37.26-py3-none-any.whl" ,
2726+ "package_content" : "binary" ,
2727+ }
2728+ purldb_entry_source = {
2729+ "uuid" : "326aa7a8-4f28-406d-89f9-c1404916925b" ,
2730+ "purl" : "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26.tar.gz" ,
2731+ "type" : "pypi" ,
2732+ "name" : "boto3" ,
2733+ "version" : "1.37.26" ,
2734+ "filename" : "boto3-1.37.26.tar.gz" ,
2735+ "download_url" : "https://files.pythonhosted.org/packages/boto3-1.37.26.tar.gz" ,
2736+ "package_content" : "source_archive" ,
2737+ }
2738+
2739+ mock_get_entries .return_value = [purldb_entry_binary , purldb_entry_source ]
2740+ package1 = make_package (self .dataspace , package_url = "pkg:pypi/boto3@1.37.26" )
2741+ updated_fields = package1 .update_from_purldb (self .user )
2742+ expected = ["download_url" , "filename" , "package_content" ]
2743+ self .assertEqual (expected , sorted (updated_fields ))
2744+
2745+ package1 .refresh_from_db ()
2746+ self .assertEqual (purldb_entry_source ["download_url" ], package1 .download_url )
2747+ self .assertEqual (purldb_entry_source ["filename" ], package1 .filename )
2748+ self .assertEqual ("source_archive" , package1 .get_package_content_display ())
2749+
27142750 @mock .patch ("component_catalog.models.Package.get_purldb_entries" )
27152751 def test_package_model_update_from_purldb_duplicate_exception (self , mock_get_purldb_entries ):
27162752 package_url = "pkg:pypi/django@3.0"
0 commit comments