@@ -47,13 +47,16 @@ contract ReleaseManagerUnitTests is EigenLayerUnitTestSetup, IReleaseManagerErro
4747 // Setup default test data
4848 defaultOperatorSet = OperatorSet (defaultAVS, 0 );
4949
50- defaultArtifacts.push (Artifact ({digest: keccak256 ("artifact1 " ), registryUrl : "https://example.com/artifact1 " }));
51- defaultArtifacts.push (Artifact ({digest: keccak256 ("artifact2 " ), registryUrl : "https://example.com/artifact2 " }));
50+ defaultArtifacts.push (Artifact ({digest: keccak256 ("artifact1 " ), registry : "https://example.com/artifact1 " }));
51+ defaultArtifacts.push (Artifact ({digest: keccak256 ("artifact2 " ), registry : "https://example.com/artifact2 " }));
5252
5353 defaultRelease.upgradeByTime = uint32 (block .timestamp + 1 days);
5454
5555 cheats.prank (defaultAVS);
5656 permissionController.setAppointee (defaultAVS, address (this ), address (releaseManager), IReleaseManager.publishRelease.selector );
57+
58+ cheats.prank (defaultAVS);
59+ releaseManager.publishMetadataURI (defaultOperatorSet, "https://example.com/metadata " );
5760 }
5861
5962 /// -----------------------------------------------------------------------
@@ -69,7 +72,7 @@ contract ReleaseManagerUnitTests is EigenLayerUnitTestSetup, IReleaseManagerErro
6972 for (uint i = 0 ; i < numArtifacts; i++ ) {
7073 artifacts[i] = Artifact ({
7174 digest: keccak256 (abi.encodePacked ("artifact " , i)),
72- registryUrl : string (abi.encodePacked ("https://example.com/artifact " , i))
75+ registry : string (abi.encodePacked ("https://example.com/artifact " , i))
7376 });
7477 }
7578 return _createRelease (artifacts, upgradeByTime);
@@ -92,7 +95,7 @@ contract ReleaseManagerUnitTests is EigenLayerUnitTestSetup, IReleaseManagerErro
9295
9396 for (uint i = 0 ; i < actualRelease.artifacts.length ; i++ ) {
9497 assertEq (actualRelease.artifacts[i].digest, expectedRelease.artifacts[i].digest, "artifact digest mismatch " );
95- assertEq (actualRelease.artifacts[i].registryUrl , expectedRelease.artifacts[i].registryUrl , "artifact registryUrl mismatch " );
98+ assertEq (actualRelease.artifacts[i].registry , expectedRelease.artifacts[i].registry , "artifact registry mismatch " );
9699 }
97100
98101 console.log ("Success! " .green ().bold ());
@@ -108,6 +111,14 @@ contract ReleaseManagerUnitTests_Initialization is ReleaseManagerUnitTests {
108111}
109112
110113contract ReleaseManagerUnitTests_publishRelease is ReleaseManagerUnitTests {
114+ function test_revert_MustPublishMetadataURI () public {
115+ OperatorSet memory operatorSet = OperatorSet (defaultAVS, 1 );
116+
117+ cheats.prank (defaultAVS);
118+ vm.expectRevert (IReleaseManagerErrors.MustPublishMetadataURI.selector );
119+ releaseManager.publishRelease (operatorSet, defaultRelease);
120+ }
121+
111122 function test_revert_InvalidUpgradeByTime () public {
112123 // Create release with past timestamp
113124 Release memory pastRelease = _createRelease (defaultArtifacts, uint32 (block .timestamp - 1 ));
@@ -204,6 +215,11 @@ contract ReleaseManagerUnitTests_publishRelease is ReleaseManagerUnitTests {
204215 OperatorSet memory operatorSet1 = OperatorSet (defaultAVS, operatorSetId1);
205216 OperatorSet memory operatorSet2 = OperatorSet (defaultAVS, operatorSetId2);
206217
218+ cheats.prank (operatorSet1.avs);
219+ releaseManager.publishMetadataURI (operatorSet1, "https://example.com/metadata " );
220+ cheats.prank (operatorSet2.avs);
221+ releaseManager.publishMetadataURI (operatorSet2, "https://example.com/metadata " );
222+
207223 // Publish to first operator set
208224 uint releaseId1 = _publishRelease (operatorSet1, defaultRelease);
209225 assertEq (releaseId1, 0 , "first release in set1 should be 0 " );
@@ -247,6 +263,9 @@ contract ReleaseManagerUnitTests_getTotalReleases is ReleaseManagerUnitTests {
247263 function test_getTotalReleases_differentOperatorSets () public {
248264 OperatorSet memory operatorSet2 = OperatorSet (defaultAVS, 1 );
249265
266+ cheats.prank (operatorSet2.avs);
267+ releaseManager.publishMetadataURI (operatorSet2, "https://example.com/metadata " );
268+
250269 // Publish to different sets
251270 _publishRelease (defaultOperatorSet, defaultRelease);
252271 _publishRelease (defaultOperatorSet, defaultRelease);
@@ -395,6 +414,11 @@ contract ReleaseManagerUnitTests_EdgeCases is ReleaseManagerUnitTests {
395414 OperatorSet memory set1 = OperatorSet (defaultAVS, 1 );
396415 OperatorSet memory set2 = OperatorSet (address (0x5678 ), 0 );
397416
417+ cheats.prank (set1.avs);
418+ releaseManager.publishMetadataURI (set1, "https://example.com/metadata " );
419+ cheats.prank (set2.avs);
420+ releaseManager.publishMetadataURI (set2, "https://example.com/metadata " );
421+
398422 // Grant permission for second AVS
399423 cheats.prank (set2.avs);
400424 permissionController.setAppointee (set2.avs, address (this ), address (releaseManager), IReleaseManager.publishRelease.selector );
@@ -474,3 +498,22 @@ contract ReleaseManagerUnitTests_isValidRelease is ReleaseManagerUnitTests {
474498 assertEq (isLatest, true , "second release should be the latest " );
475499 }
476500}
501+
502+ contract ReleaseManagerUnitTests_publishMetadataURI is ReleaseManagerUnitTests {
503+ function test_revert_InvalidMetadataURI () public {
504+ cheats.prank (defaultAVS);
505+ vm.expectRevert (IReleaseManagerErrors.InvalidMetadataURI.selector );
506+ releaseManager.publishMetadataURI (defaultOperatorSet, "" );
507+ }
508+
509+ function test_publishMetadataURI_Correctness () public {
510+ string memory registry = "https://example.com/metadata " ;
511+ cheats.expectEmit (true , true , true , true , address (releaseManager));
512+ emit MetadataURIPublished (defaultOperatorSet, registry);
513+
514+ cheats.prank (defaultAVS);
515+ releaseManager.publishMetadataURI (defaultOperatorSet, registry);
516+
517+ assertEq (releaseManager.getMetadataURI (defaultOperatorSet), registry, "metadata URI not set correctly " );
518+ }
519+ }
0 commit comments