use of com.icodici.universa.contract.services.SlotContract in project universa by UniversaBlockchain.
the class SlotContractTest method goodSmartContractFromDSL.
@Test
public void goodSmartContractFromDSL() throws Exception {
final PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey"));
Contract simpleContract = new Contract(key);
simpleContract.seal();
Contract paymentDecreased = createSlotPayment();
Contract smartContract = SlotContract.fromDslFile(rootPath + "SlotDSLTemplate.yml");
smartContract.addSignerKeyFromFile(rootPath + "_xer0yfe2nn1xthc.private.unikey");
assertTrue(smartContract instanceof SlotContract);
((SlotContract) smartContract).putTrackingContract(simpleContract);
((SlotContract) smartContract).setNodeInfoProvider(nodeInfoProvider);
smartContract.addNewItems(paymentDecreased);
smartContract.seal();
smartContract.check();
smartContract.traceErrors();
assertTrue(smartContract.isOk());
assertEquals(NSmartContract.SmartContractType.SLOT1.name(), smartContract.getDefinition().getExtendedType());
assertEquals(NSmartContract.SmartContractType.SLOT1.name(), smartContract.get("definition.extended_type"));
assertEquals(2, ((SlotContract) smartContract).getKeepRevisions());
Multimap<String, Permission> permissions = smartContract.getPermissions();
Collection<Permission> mdp = permissions.get("modify_data");
assertNotNull(mdp);
assertTrue(((ModifyDataPermission) mdp.iterator().next()).getFields().containsKey("action"));
assertEquals(simpleContract.getId(), ((SlotContract) smartContract).getTrackingContract().getId());
assertEquals(simpleContract.getId(), TransactionPack.unpack(((SlotContract) smartContract).getPackedTrackingContract()).getContract().getId());
Binder trackingHashesAsBase64 = smartContract.getStateData().getBinder("tracking_contract");
for (String k : trackingHashesAsBase64.keySet()) {
byte[] packed = trackingHashesAsBase64.getBinary(k);
if (packed != null) {
Contract c = Contract.fromPackedTransaction(packed);
assertEquals(simpleContract.getId(), c.getId());
}
}
}
use of com.icodici.universa.contract.services.SlotContract in project universa by UniversaBlockchain.
the class SlotContractTest method goodSmartContract.
@Test
public void goodSmartContract() throws Exception {
final PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey"));
Contract simpleContract = new Contract(key);
simpleContract.seal();
Contract paymentDecreased = createSlotPayment();
Contract smartContract = new SlotContract(key);
assertTrue(smartContract instanceof SlotContract);
((SlotContract) smartContract).putTrackingContract(simpleContract);
((SlotContract) smartContract).setNodeInfoProvider(nodeInfoProvider);
smartContract.addNewItems(paymentDecreased);
smartContract.seal();
smartContract.check();
smartContract.traceErrors();
assertTrue(smartContract.isOk());
assertEquals(NSmartContract.SmartContractType.SLOT1.name(), smartContract.getDefinition().getExtendedType());
assertEquals(NSmartContract.SmartContractType.SLOT1.name(), smartContract.get("definition.extended_type"));
Multimap<String, Permission> permissions = smartContract.getPermissions();
Collection<Permission> mdp = permissions.get("modify_data");
assertNotNull(mdp);
assertTrue(((ModifyDataPermission) mdp.iterator().next()).getFields().containsKey("action"));
assertEquals(simpleContract.getId(), ((SlotContract) smartContract).getTrackingContract().getId());
assertEquals(simpleContract.getId(), TransactionPack.unpack(((SlotContract) smartContract).getPackedTrackingContract()).getContract().getId());
Binder trackingHashesAsBase64 = smartContract.getStateData().getBinder("tracking_contract");
for (String k : trackingHashesAsBase64.keySet()) {
byte[] packed = trackingHashesAsBase64.getBinary(k);
if (packed != null) {
Contract c = Contract.fromPackedTransaction(packed);
assertEquals(simpleContract.getId(), c.getId());
}
}
}
Aggregations