[Launchpad-reviewers] [Merge] ~pelpsi/launchpad:unembargo-bug-build-info-missing into launchpad:master

2024-04-19 Thread Simone Pelosi
The proposal to merge ~pelpsi/launchpad:unembargo-bug-build-info-missing into 
launchpad:master has been updated.

Status: Needs review => Work in progress

For more details, see:
https://code.launchpad.net/~pelpsi/launchpad/+git/launchpad/+merge/464705
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of 
~pelpsi/launchpad:unembargo-bug-build-info-missing into launchpad:master.


___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp


[Launchpad-reviewers] [Merge] ~pelpsi/launchpad:unembargo-bug-build-info-missing into launchpad:master

2024-04-19 Thread Simone Pelosi
Simone Pelosi has proposed merging 
~pelpsi/launchpad:unembargo-bug-build-info-missing into launchpad:master.

Commit message:
Unembargo build info

Added buildinfo to unembargoed files.
Added custom upload files to unembargoed files.
Added a new endpoint buildMetadataFileUrls to retrieve
changes file, build_info and log without accessing directly the build.

LP: #2052796


Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #2052796 in Launchpad itself: "MIssing buildinfo file for Jammy 
grub2-unsigned 2.06-2ubuntu14.4"
  https://bugs.launchpad.net/launchpad/+bug/2052796

For more details, see:
https://code.launchpad.net/~pelpsi/launchpad/+git/launchpad/+merge/464705
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of 
~pelpsi/launchpad:unembargo-bug-build-info-missing into launchpad:master.
diff --git a/lib/lp/soyuz/browser/tests/test_publishing_webservice.py b/lib/lp/soyuz/browser/tests/test_publishing_webservice.py
index 2aee350..b167e61 100644
--- a/lib/lp/soyuz/browser/tests/test_publishing_webservice.py
+++ b/lib/lp/soyuz/browser/tests/test_publishing_webservice.py
@@ -15,9 +15,14 @@ from lp.services.librarian.browser import ProxiedLibraryFileAlias
 from lp.services.webapp.interfaces import OAuthPermission
 from lp.soyuz.adapters.proxiedsourcefiles import ProxiedSourceLibraryFileAlias
 from lp.soyuz.enums import BinaryPackageFormat
-from lp.soyuz.interfaces.publishing import IPublishingSet
+from lp.soyuz.interfaces.publishing import (
+IPublishingSet,
+PackagePublishingStatus,
+)
+from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
 from lp.testing import (
 TestCaseWithFactory,
+admin_logged_in,
 api_url,
 login_person,
 person_logged_in,
@@ -167,14 +172,47 @@ class SourcePackagePublishingHistoryWebserviceTests(TestCaseWithFactory):
 class BinaryPackagePublishingHistoryWebserviceTests(TestCaseWithFactory):
 layer = LaunchpadFunctionalLayer
 
+def setUp(self):
+super().setUp()
+self.processor = self.factory.makeProcessor(supports_virtualized=True)
+self.distroseries = self.factory.makeDistroSeries()
+self.das = self.factory.makeDistroArchSeries(
+distroseries=self.distroseries, processor=self.processor
+)
+with admin_logged_in():
+self.publisher = SoyuzTestPublisher()
+self.publisher.prepareBreezyAutotest()
+self.distroseries.nominatedarchindep = self.das
+self.publisher.addFakeChroots(distroseries=self.distroseries)
+self.builder = self.factory.makeBuilder(
+processors=[self.processor]
+)
+
 def make_bpph_for(self, person):
+spn = self.factory.getUniqueString()
+version = "%s.1" % self.factory.getUniqueInteger()
 with person_logged_in(person):
-bpr = self.factory.makeBinaryPackageRelease()
-self.factory.makeBinaryPackageFile(binarypackagerelease=bpr)
-bpph = self.factory.makeBinaryPackagePublishingHistory(
-binarypackagerelease=bpr
+spph = self.publisher.getPubSource(
+sourcename=spn,
+version=version,
+distroseries=self.distroseries,
+status=PackagePublishingStatus.PUBLISHED,
+)
+with admin_logged_in():
+binary = self.publisher.getPubBinaries(
+binaryname=spn,
+distroseries=self.distroseries,
+pub_source=spph,
+version=version,
+builder=self.builder,
+)
+binary[0].build.addBuildInfo(
+self.factory.makeLibraryFileAlias(
+filename="build_info.info", restricted=True
+)
 )
-return bpph, api_url(bpph)
+
+return binary[0], api_url(binary[0])
 
 def test_binaryFileUrls(self):
 person = self.factory.makePerson()
@@ -239,6 +277,71 @@ class BinaryPackagePublishingHistoryWebserviceTests(TestCaseWithFactory):
 ]
 self.assertContentEqual(expected_info, info)
 
+def test_buildMetadataFileUrls(self):
+person = self.factory.makePerson()
+webservice = webservice_for_person(
+person, permission=OAuthPermission.READ_PUBLIC
+)
+bpph, url = self.make_bpph_for(person)
+
+response = webservice.named_get(
+url, "buildMetadataFileUrls", api_version="devel"
+)
+
+self.assertEqual(200, response.status)
+urls = response.jsonBody()
+
+with person_logged_in(person):
+upload_changesfile = (
+bpph.binarypackagerelease.build.upload_changesfile
+)
+log = bpph.binarypackagerelease.build.log
+build_info = bpph.binarypackagerelease.build.buildinfo
+
+expected_urls = [
+