Skip to content

Commit 809bc85

Browse files
transfers allowed certified
1 parent 4bec2bf commit 809bc85

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed

.gas-snapshot

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ OffchainAssetReceiptVaultAuthorizeReceiptTransferTest:testAuthorizeReceiptTransf
7878
OffchainAssetReceiptVaultAuthorizeReceiptTransferTest:testAuthorizeReceiptTransferRevertExpiredCertification(uint256,uint256,string,string,uint256,uint256,uint256,bytes,uint256[],uint256[]) (runs: 270, μ: 1326542, ~: 1321243)
7979
OffchainAssetReceiptVaultAuthorizeTest:testAuthorizeContract(uint256,uint256,string,string) (runs: 270, μ: 1008863, ~: 1010778)
8080
OffchainAssetReceiptVaultAuthorizeTest:testChangeAuthorizer(uint256,uint256,string,string) (runs: 270, μ: 1340075, ~: 1341989)
81-
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeAuthorized(address,address,address,bytes) (runs: 270, μ: 2420940, ~: 2419553)
82-
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeUnauthorized(address,address,address,bytes32,bytes) (runs: 270, μ: 2223778, ~: 2223606)
81+
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeAuthorized(address,address,address,bytes) (runs: 270, μ: 2420964, ~: 2419577)
82+
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeTransferReceiptCertifyNotExpired(address,address,address,address,address,uint256[],uint256[]) (runs: 270, μ: 2301505, ~: 2298513)
83+
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeTransferSharesCertifyNotExpired(address,address,address,address,address,uint256) (runs: 270, μ: 2219100, ~: 2219100)
84+
OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest:testOffchainAssetReceiptVaultAuthorizerV1AuthorizeUnauthorized(address,address,address,bytes32,bytes) (runs: 270, μ: 2223802, ~: 2223630)
8385
OffchainAssetReceiptVaultAuthorizerV1ConstructTest:testOffchainAssetReceiptVaultAuthorizerV1Construct(address,address) (runs: 270, μ: 1455228, ~: 1455228)
8486
OffchainAssetReceiptVaultAuthorizerV1ConstructTest:testOffchainAssetReceiptVaultAuthorizerV1Initialize(address,address,bytes32) (runs: 269, μ: 2460491, ~: 2460491)
8587
OffchainAssetReceiptVaultAuthorizerV1ConstructTest:testOffchainAssetReceiptVaultAuthorizerV1InitializeZeroAdmin(address) (runs: 270, μ: 1777561, ~: 1777561)

test/src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.authorize.t.sol

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
FREEZE_HANDLER
2121
} from "src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.sol";
2222
import {CloneFactory} from "rain.factory/concrete/CloneFactory.sol";
23+
import {TransferSharesStateChange, TransferReceiptStateChange} from "src/concrete/vault/OffchainAssetReceiptVault.sol";
2324

2425
contract OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest is Test {
2526
function testOffchainAssetReceiptVaultAuthorizerV1AuthorizeUnauthorized(
@@ -88,4 +89,73 @@ contract OffchainAssetReceiptVaultAuthorizerV1AuthorizeTest is Test {
8889
authorizer.authorize(user, roles[i], data);
8990
}
9091
}
92+
93+
/// When certification is NOT expired then all TRANSFER_SHARES are
94+
/// authorized.
95+
function testOffchainAssetReceiptVaultAuthorizerV1AuthorizeTransferSharesCertifyNotExpired(
96+
address initialAdmin,
97+
address authorizee,
98+
address user,
99+
address from,
100+
address to,
101+
uint256 amount
102+
) external {
103+
vm.assume(initialAdmin != address(0));
104+
vm.assume(authorizee != address(0));
105+
vm.assume(initialAdmin != authorizee);
106+
107+
OffchainAssetReceiptVaultAuthorizerV1 authorizerImplementation = new OffchainAssetReceiptVaultAuthorizerV1();
108+
109+
OffchainAssetReceiptVaultAuthorizerV1Config memory config =
110+
OffchainAssetReceiptVaultAuthorizerV1Config({initialAdmin: initialAdmin, authorizee: authorizee});
111+
112+
CloneFactory factory = new CloneFactory();
113+
OffchainAssetReceiptVaultAuthorizerV1 authorizer =
114+
OffchainAssetReceiptVaultAuthorizerV1(factory.clone(address(authorizerImplementation), abi.encode(config)));
115+
116+
authorizer.authorize(
117+
user,
118+
TRANSFER_SHARES,
119+
abi.encode(TransferSharesStateChange({from: from, to: to, amount: amount, isCertificationExpired: false}))
120+
);
121+
}
122+
123+
/// When certification is NOT expired then all TRANSFER_RECEIPT are
124+
/// authorized.
125+
function testOffchainAssetReceiptVaultAuthorizerV1AuthorizeTransferReceiptCertifyNotExpired(
126+
address initialAdmin,
127+
address authorizee,
128+
address user,
129+
address from,
130+
address to,
131+
uint256[] memory ids,
132+
uint256[] memory amounts
133+
) external {
134+
vm.assume(initialAdmin != address(0));
135+
vm.assume(authorizee != address(0));
136+
vm.assume(initialAdmin != authorizee);
137+
138+
OffchainAssetReceiptVaultAuthorizerV1 authorizerImplementation = new OffchainAssetReceiptVaultAuthorizerV1();
139+
140+
OffchainAssetReceiptVaultAuthorizerV1Config memory config =
141+
OffchainAssetReceiptVaultAuthorizerV1Config({initialAdmin: initialAdmin, authorizee: authorizee});
142+
143+
CloneFactory factory = new CloneFactory();
144+
OffchainAssetReceiptVaultAuthorizerV1 authorizer =
145+
OffchainAssetReceiptVaultAuthorizerV1(factory.clone(address(authorizerImplementation), abi.encode(config)));
146+
147+
authorizer.authorize(
148+
user,
149+
TRANSFER_RECEIPT,
150+
abi.encode(
151+
TransferReceiptStateChange({
152+
from: from,
153+
to: to,
154+
ids: ids,
155+
amounts: amounts,
156+
isCertificationExpired: false
157+
})
158+
)
159+
);
160+
}
91161
}

0 commit comments

Comments
 (0)