@Test public void serializeOne() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.setComment("<New role comment>"); sr.addRequiredReference("ref1", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref2", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref3", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertEquals(r1.getComment(), "<New role comment>"); }
@Test public void isAllowed() throws Exception { PublicKey key = keys.get(0).getPublicKey(); Set<PublicKey> keySet = new HashSet<>(); keySet.add(key); Contract contract = new Contract(); SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(key)); contract.registerRole(sr); assertTrue(!sr.isAllowedForKeys(new HashSet<>())); assertTrue(sr.isAllowedForKeys(keySet)); sr.addRequiredReference("ref1", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref2", Role.RequiredMode.ALL_OF); contract.getValidRoleReferences().add("ref1"); assertFalse(sr.isAllowedForKeys(keySet)); contract.getValidRoleReferences().add("ref2"); assertTrue(sr.isAllowedForKeys(keySet)); sr.addRequiredReference("ref3", Role.RequiredMode.ANY_OF); assertFalse(sr.isAllowedForKeys(keySet)); sr.addRequiredReference("ref4", Role.RequiredMode.ANY_OF); sr.addRequiredReference("ref5", Role.RequiredMode.ANY_OF); contract.getValidRoleReferences().add("ref4"); assertTrue(sr.isAllowedForKeys(keySet)); } }
@Test public void serializeAny() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertTrue(sr.getReferences(Role.RequiredMode.ALL_OF).isEmpty()); assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).size(),1); assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).iterator().next(),"ref"); }
@Test public void serializeAll() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref", Role.RequiredMode.ALL_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertTrue(sr.getReferences(Role.RequiredMode.ANY_OF).isEmpty()); assertEquals(sr.getReferences(Role.RequiredMode.ALL_OF).size(),1); assertEquals(sr.getReferences(Role.RequiredMode.ALL_OF).iterator().next(),"ref"); }
@Test public void serializeBoth() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref1", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref2", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertEquals(r1.getReferences(Role.RequiredMode.ALL_OF).size(),1); assertEquals(r1.getReferences(Role.RequiredMode.ANY_OF).size(),1); assertEquals(r1.getReferences(Role.RequiredMode.ALL_OF).iterator().next(),"ref1"); assertEquals(r1.getReferences(Role.RequiredMode.ANY_OF).iterator().next(),"ref2"); }
@Test public void serializeAll() throws Exception { Contract c = new Contract(); SimpleRole s1 = new SimpleRole("owner"); s1.addRequiredReference("refName", Role.RequiredMode.ALL_OF); s1.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); ListRole roleList = new ListRole("listAllMode", ListRole.Mode.ALL, Do.listOf(s1)); c.registerRole(s1); c.registerRole(roleList); Binder serialized = DefaultBiMapper.serialize(roleList); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(r1, roleList); }
@Test public void revokeDifferentNameValidRefRoleNotRegistered() throws Exception { Contract referencedContract = new Contract(key1); referencedContract.seal(); Contract revokingContract = new Contract(key2); Reference revokeReference = new Reference(revokingContract); revokeReference.setName("ref1"); ArrayList<String> revokeCondtitions = new ArrayList<>(); revokeCondtitions.add("ref.id=="+referencedContract.getId().toBase64String()); revokeReference.setConditions(Binder.of("all_of",revokeCondtitions)); revokingContract.addReference(revokeReference); SimpleRole role = new SimpleRole("@revoke"); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission); revokingContract.seal(); Contract transactionRoot = new Contract(key3); transactionRoot.addRevokingItems(revokingContract); Reference rootReference = new Reference(transactionRoot); rootReference.setName("ref2"); ArrayList<String> rootConditions = new ArrayList<>(); rootConditions.add("ref.id=="+referencedContract.getId().toBase64String()); rootReference.setConditions(Binder.of("all_of",rootConditions)); transactionRoot.addReference(rootReference); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); transactionRoot.check(); assertTrue(transactionRoot.isOk()); }
issuer.addRequiredReference(ref, Role.RequiredMode.ALL_OF); issuer.addRequiredReference(ref2, Role.RequiredMode.ALL_OF); issuer.addRequiredReference(ref3, Role.RequiredMode.ALL_OF); issuer.addRequiredReference(ref4, Role.RequiredMode.ALL_OF); issuer.addRequiredReference(ref5, Role.RequiredMode.ALL_OF);
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
ownerBefore.addRequiredReference("ref_before", Role.RequiredMode.ALL_OF); SimpleRole ownerAfter = new SimpleRole("ownerAfter", new KeyRecord(ownerKeyAfter.getPublicKey())); ownerAfter.addRequiredReference("ref_after", Role.RequiredMode.ALL_OF);
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
issuer.addRequiredReference(ref, Role.RequiredMode.ALL_OF); contract.addReference(ref2); issuer.addRequiredReference(ref2, Role.RequiredMode.ALL_OF);
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); revokingContract.getStateData().set("amount","100"); revokingContract.getStateData().set("join_by","QQQ");
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); revokingContract.getStateData().set("amount","100"); revokingContract.getStateData().set("join_by","QQQ");