diff --git a/test/Identity.t.sol b/test/Identity.t.sol index 5123c90..865ffc1 100644 --- a/test/Identity.t.sol +++ b/test/Identity.t.sol @@ -24,6 +24,21 @@ contract IdentityTest is Test { assertEq(id.tokenURI(agentId), "ipfs://agent-1"); } + 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(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 { vm.expectEmit(true, true, false, true); emit IIdentity.AgentRegistered(1, operator, runtime, "ipfs://a"); @@ -45,11 +60,29 @@ 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, ""); + + 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, ""); @@ -57,10 +90,16 @@ 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 { 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); + } }