From 5132a1b77d26322ba86c3605b033a2bb08af93df Mon Sep 17 00:00:00 2001 From: Arif Rahman Date: Wed, 28 Oct 2026 09:37:37 +0000 Subject: [PATCH 1/2] test(identity): add missing tests for id progression, zero runtime key, and unknown tokenURI (fixes #1) Signed-off-by: Arif Rahman --- test/Identity.t.sol | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/Identity.t.sol b/test/Identity.t.sol index 5123c90..dded1e0 100644 --- a/test/Identity.t.sol +++ b/test/Identity.t.sol @@ -24,6 +24,18 @@ contract IdentityTest is Test { assertEq(id.tokenURI(agentId), "ipfs://agent-1"); } + function test_agentIdsIncrease() public { + vm.prank(operator); + uint256 first = id.registerAgent(runtime, "ipfs://agent-1"); + + address runtime2 = makeAddr("runtime2"); + vm.prank(operator); + uint256 second = id.registerAgent(runtime2, "ipfs://agent-2"); + + assertEq(first, 1); + assertEq(second, 2); + } + function test_registerAgentEmitsEvent() public { vm.expectEmit(true, true, false, true); emit IIdentity.AgentRegistered(1, operator, runtime, "ipfs://a"); @@ -50,6 +62,15 @@ contract IdentityTest is Test { assertEq(id.runtimeKeyOf(agentId), next); } + function test_setRuntimeKeyRejectsZeroAddress() public { + vm.prank(operator); + uint256 agentId = id.registerAgent(runtime, ""); + + vm.prank(operator); + vm.expectRevert(IIdentity.ZeroRuntimeKey.selector); + id.setRuntimeKey(agentId, address(0)); + } + function test_runtimeKeyFollowsTokenTransferOwnership() public { vm.prank(operator); uint256 agentId = id.registerAgent(runtime, ""); @@ -63,4 +84,9 @@ contract IdentityTest is Test { vm.expectRevert(abi.encodeWithSelector(IIdentity.UnknownAgent.selector, 42)); id.runtimeKeyOf(42); } + + function test_tokenURIOfUnknownAgentReverts() public { + vm.expectRevert(abi.encodeWithSelector(IIdentity.UnknownAgent.selector, 42)); + id.tokenURI(42); + } } From 159bd388e8cb67f0cc1c94bfeae1bf2b5da37d2c Mon Sep 17 00:00:00 2001 From: Arif Rahman Date: Wed, 28 Oct 2026 18:30:25 +0000 Subject: [PATCH 2/2] test(identity): address review feedback on id progression, runtime key emit, and unknown agent revert --- test/Identity.t.sol | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/test/Identity.t.sol b/test/Identity.t.sol index dded1e0..865ffc1 100644 --- a/test/Identity.t.sol +++ b/test/Identity.t.sol @@ -25,15 +25,18 @@ contract IdentityTest is Test { } function test_agentIdsIncrease() public { + address op2 = makeAddr("operator2"); vm.prank(operator); uint256 first = id.registerAgent(runtime, "ipfs://agent-1"); address runtime2 = makeAddr("runtime2"); - vm.prank(operator); + vm.prank(op2); uint256 second = id.registerAgent(runtime2, "ipfs://agent-2"); assertEq(first, 1); assertEq(second, 2); + assertEq(id.ownerOf(first), operator); + assertEq(id.ownerOf(second), op2); } function test_registerAgentEmitsEvent() public { @@ -57,11 +60,20 @@ contract IdentityTest is Test { id.setRuntimeKey(agentId, stranger); address next = makeAddr("next"); + vm.expectEmit(true, false, false, true); + emit IIdentity.RuntimeKeyChanged(agentId, next); vm.prank(operator); id.setRuntimeKey(agentId, next); assertEq(id.runtimeKeyOf(agentId), next); } + function test_setRuntimeKeyRejectsUnknownAgent() public { + address next = makeAddr("next"); + vm.prank(operator); + vm.expectRevert(abi.encodeWithSelector(IIdentity.UnknownAgent.selector, 42)); + id.setRuntimeKey(42, next); + } + function test_setRuntimeKeyRejectsZeroAddress() public { vm.prank(operator); uint256 agentId = id.registerAgent(runtime, ""); @@ -78,6 +90,7 @@ contract IdentityTest is Test { vm.prank(operator); id.transferFrom(operator, buyer, agentId); assertEq(id.operatorOf(agentId), buyer); + assertEq(id.runtimeKeyOf(agentId), runtime); } function test_unknownAgentReverts() public {