Search in sources :

Example 6 with SlotContract

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());
        }
    }
}
Also used : Binder(net.sergeych.tools.Binder) PrivateKey(com.icodici.crypto.PrivateKey) ModifyDataPermission(com.icodici.universa.contract.permissions.ModifyDataPermission) ModifyDataPermission(com.icodici.universa.contract.permissions.ModifyDataPermission) Permission(com.icodici.universa.contract.permissions.Permission) NSmartContract(com.icodici.universa.contract.services.NSmartContract) SlotContract(com.icodici.universa.contract.services.SlotContract) SlotContract(com.icodici.universa.contract.services.SlotContract) Test(org.junit.Test)

Example 7 with SlotContract

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());
        }
    }
}
Also used : Binder(net.sergeych.tools.Binder) PrivateKey(com.icodici.crypto.PrivateKey) ModifyDataPermission(com.icodici.universa.contract.permissions.ModifyDataPermission) ModifyDataPermission(com.icodici.universa.contract.permissions.ModifyDataPermission) Permission(com.icodici.universa.contract.permissions.Permission) NSmartContract(com.icodici.universa.contract.services.NSmartContract) SlotContract(com.icodici.universa.contract.services.SlotContract) SlotContract(com.icodici.universa.contract.services.SlotContract) Test(org.junit.Test)

Aggregations

NSmartContract (com.icodici.universa.contract.services.NSmartContract)7 SlotContract (com.icodici.universa.contract.services.SlotContract)7 Binder (net.sergeych.tools.Binder)7 Test (org.junit.Test)6 PrivateKey (com.icodici.crypto.PrivateKey)5 ModifyDataPermission (com.icodici.universa.contract.permissions.ModifyDataPermission)3 Permission (com.icodici.universa.contract.permissions.Permission)3 Contract (com.icodici.universa.contract.Contract)2 Parcel (com.icodici.universa.contract.Parcel)2 JSApiChangeNumberPermission (com.icodici.universa.contract.jsapi.permissions.JSApiChangeNumberPermission)2 JSApiPermission (com.icodici.universa.contract.jsapi.permissions.JSApiPermission)2 JSApiSplitJoinPermission (com.icodici.universa.contract.jsapi.permissions.JSApiSplitJoinPermission)2 RoleLink (com.icodici.universa.contract.roles.RoleLink)2 ItemResult (com.icodici.universa.node.ItemResult)2 ClientError (com.icodici.universa.node2.network.ClientError)2 KeyAddress (com.icodici.crypto.KeyAddress)1 PublicKey (com.icodici.crypto.PublicKey)1 HashId (com.icodici.universa.HashId)1 TestKeys (com.icodici.universa.TestKeys)1 ContractsService (com.icodici.universa.contract.ContractsService)1