Skip to content

Commit 36d8494

Browse files
committed
Merge branch 'main' into FIL-1349-datasize-matching
2 parents 86497ea + cbaa5b3 commit 36d8494

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

src/Client.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ contract Client is Initializable, AccessControlUpgradeable, UUPSUpgradeable, Ree
476476

477477
for (uint256 i = 0; i < claimsDetails.claims.length; i++) {
478478
VerifRegTypes.Claim memory claim = claimsDetails.claims[i];
479+
deal.allocationIds.push(claimIds[i]);
479480
deal.sizeOfAllocations += claim.size;
480481
}
481482
}

test/Client.t.sol

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ contract ClientTest is Test {
9494
actorIdMock.setGetClaimsResult(
9595
hex"8282018081881903E81866D82A5828000181E203922020071E414627E89D421B3BAFCCB24CBA13DDE9B6F388706AC8B1D48E58935C76381908001A003815911A005034D60000"
9696
);
97+
actorIdMock.setDataCapTransferResult(hex"834100410049838201808200808101");
9798
// --- Dummy transfer params ---
9899
transferParams = DataCapTypes.TransferParams({
99100
to: CommonTypes.FilAddress(transferTo),
@@ -162,13 +163,14 @@ contract ClientTest is Test {
162163
assertEq(clientAllocationIdsBefore.length, 0);
163164

164165
transferParams.operator_data =
165-
hex"828186192710D82A5828000181E203922020F2B9A58BBC9D9856E52EAB85155C1BA298F7E8DF458BD20A3AD767E11572CA221908001A0007E9001A005033401901318183192710011A005034AC";
166+
hex"828186192710D82A5828000181E203922020F2B9A58BBC9D9856E52EAB85155C1BA298F7E8DF458BD20A3AD767E11572CA221908001A0007E9001A005033401901318183192710021A005034AC";
166167
vm.prank(clientAddress);
167168
client.transfer(transferParams, dealId, false);
168169

169170
CommonTypes.FilActorId[] memory clientAllocationIdsAfter = client.getClientAllocationIdsPerDeal(dealId);
170-
assertEq(clientAllocationIdsAfter.length, 1);
171-
assertEq(CommonTypes.FilActorId.unwrap(clientAllocationIdsAfter[0]), 1);
171+
assertEq(clientAllocationIdsAfter.length, 2);
172+
assertEq(CommonTypes.FilActorId.unwrap(clientAllocationIdsAfter[0]), 2);
173+
assertEq(CommonTypes.FilActorId.unwrap(clientAllocationIdsAfter[1]), 1);
172174
}
173175

174176
function testInvalidClaimExtensionRequest() public {
@@ -702,4 +704,42 @@ contract ClientTest is Test {
702704
vm.expectRevert(Client.GetClaimsCallFailed.selector);
703705
clientMock.isDataSizeMatching(dealId);
704706
}
707+
708+
function testShouldAddClaimExtensionIdsAfterTransfer() public {
709+
ClientContractMock clientMock = ClientContractMock(setupProxy(address(new ClientContractMock())));
710+
transferParams.operator_data =
711+
hex"828186192710D82A5828000181E203922020F2B9A58BBC9D9856E52EAB85155C1BA298F7E8DF458BD20A3AD767E11572CA221908001A0007E9001A005033401901318183192710031A005034AC";
712+
713+
vm.prank(clientAddress);
714+
clientMock.transfer(transferParams, dealId, false);
715+
716+
poRepMarketMock.setDealProposal(
717+
dealId,
718+
PoRepMarket.DealProposal({
719+
dealId: 150,
720+
client: clientAddress,
721+
provider: SP1,
722+
requirements: SLIThresholds(80, 500, 200, 90),
723+
validator: address(validatorMock),
724+
state: PoRepMarket.DealState.Accepted,
725+
railId: 0
726+
})
727+
);
728+
// solhint-disable-next-line reentrancy
729+
transferParams.operator_data =
730+
hex"828286192710D82A5828000181E203922020F2B9A58BBC9D9856E52EAB85155C1BA298F7E8DF458BD20A3AD767E11572CA221908001A0007E9001A0050334019013186192710D82A5828000181E203922020F2B9A58BBC9D9856E52EAB85155C1BA298F7E8DF458BD20A3AD767E11572CA221950001A0007E9001A009C7E801901318183192710041A005034AC";
731+
actorIdMock.setDataCapTransferResult(hex"834100410049838201808200808102");
732+
vm.expectEmit(true, true, true, true);
733+
emit Client.ValidatorLockupPeriodUpdated(dealId, address(validatorMock));
734+
735+
vm.prank(clientAddress);
736+
clientMock.transfer(transferParams, dealId, false);
737+
738+
Client.Deal memory deal = clientMock.getDeal(dealId);
739+
assertEq(deal.allocationIds.length, 4);
740+
assertTrue(CommonTypes.FilActorId.unwrap(deal.allocationIds[0]) == 3);
741+
assertTrue(CommonTypes.FilActorId.unwrap(deal.allocationIds[1]) == 1);
742+
assertTrue(CommonTypes.FilActorId.unwrap(deal.allocationIds[2]) == 4);
743+
assertTrue(CommonTypes.FilActorId.unwrap(deal.allocationIds[3]) == 2);
744+
}
705745
}

test/contracts/ActorIdMock.sol

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ pragma solidity 0.8.25;
55

66
contract ActorIdMock {
77
bytes internal _getClaimsResult;
8+
bytes internal _dataCapTransferResult;
89
uint256 internal constant VERIFREG_GET_CLAIMS = 2199871187;
910
uint256 internal constant ADD_VERIFIED_CLIENT = 3916220144;
1011
uint256 internal constant IS_CONTROLLING_ADDRESS = 348244887;
@@ -21,6 +22,10 @@ contract ActorIdMock {
2122
_getClaimsResult = d;
2223
}
2324

25+
function setDataCapTransferResult(bytes memory d) public {
26+
_dataCapTransferResult = d;
27+
}
28+
2429
// solhint-disable-next-line no-complex-fallback
2530
fallback(bytes calldata data) external payable returns (bytes memory) {
2631
(uint256 methodNum,,,,, uint64 target) = abi.decode(data, (uint64, uint256, uint64, uint64, bytes, uint64));
@@ -49,8 +54,8 @@ contract ActorIdMock {
4954
return abi.encode(0, 0x51, _getClaimsResult);
5055
}
5156

52-
function _handleDatacapTransfer() internal pure returns (bytes memory) {
53-
return abi.encode(0, 0x51, hex"834100410049838201808200808101");
57+
function _handleDatacapTransfer() internal view returns (bytes memory) {
58+
return abi.encode(0, 0x51, _dataCapTransferResult);
5459
}
5560

5661
function _handleGetOwnerReturn(uint64 target) internal pure returns (bytes memory) {

0 commit comments

Comments
 (0)