public String getDefinitionDataField(String fieldPath) { return this.currentContract.getDefinition().getData().getStringOrThrow(fieldPath); }
@Override public boolean isU(Set<KeyAddress> issuerKeys, String issuerName) { Role issuer = getIssuer(); if(!(issuer instanceof SimpleRole)) return false; Set<KeyAddress> thisIssuerAddresses = new HashSet<>(((SimpleRole)issuer).getSimpleKeyAddresses()); for (PublicKey publicKey : ((SimpleRole)issuer).getSimpleKeys()) thisIssuerAddresses.add(publicKey.getShortAddress()); if (Collections.disjoint(issuerKeys, thisIssuerAddresses)) return false; if ( !issuerName.equals(getDefinition().getData().get("issuerName"))) return false; return true; }
public List<String> extractJSNames() { List<String> res = new ArrayList<>(); Binder scriptBinder = getDefinition().getData().getBinder(JSAPI_SCRIPT_FIELD, null); if (scriptBinder == null) scriptBinder = getState().getData().getBinder(JSAPI_SCRIPT_FIELD, null); if (scriptBinder != null) res.addAll(JSApiHelpers.getFileNamesFromScriptBinder(scriptBinder)); return res; }
public void updateThisEnvironmentByName(Contract newContract, JSApiExecOptions execOptions) throws Exception { JSApiEnvironment env = execJSByName( newContract.getDefinition().getData().getBinder(Contract.JSAPI_SCRIPT_FIELD, null), newContract.getState().getData().getBinder(Contract.JSAPI_SCRIPT_FIELD, null), execOptions, jsFileName, newContract, stringParams ); this.jsApi = env.jsApi; this.scriptEngine = env.scriptEngine; this.currentContract = env.currentContract; this.result = env.result; }
@Test public void createContractWithJS() throws Exception { ScriptEngine jse = new NashornScriptEngineFactory().getScriptEngine(new ClassFilter_allowSomething()); jse.eval("var contract = new com.icodici.universa.contract.Contract();"); jse.eval("contract.getDefinition().getData().put('someKey', 'someValue');"); jse.eval("contract.seal()"); Contract contract = (Contract)jse.get("contract"); System.out.println("contract id: " + contract.getId()); System.out.println("contract someKey: " + contract.getDefinition().getData().getString("someKey")); assertEquals("someValue", contract.getDefinition().getData().getString("someKey")); }
/** * Executes attached javascript if only one js is attached. Also, it should be attached with putContentIntoContract == true. */ public Object execJSByName(JSApiExecOptions execOptions, String jsFileName, String... params) throws Exception { JSApiEnvironment env = JSApiEnvironment.execJSByName( getDefinition().getData().getBinder(JSAPI_SCRIPT_FIELD, null), getState().getData().getBinder(JSAPI_SCRIPT_FIELD, null), execOptions, jsFileName, this, params ); return env.callEvent("main", true); }
@Test public void jsInContract_execZeroParams() throws Exception { Contract contract = new Contract(TestKeys.privateKey(0)); String js = ""; js += "print('jsApiParams.length: ' + jsApiParams.length);"; js += "result = jsApiParams.length;"; contract.getDefinition().setJS(js.getBytes(), "client script.js", new JSApiScriptParameters()); contract.seal(); assertEquals(0, contract.execJS(js.getBytes())); }
@Test public void checkContractExpiresAtDistantPastTime() throws Exception{ Contract oldContract = Contract.fromDslFile(rootPath + "simple_root_contract.yml"); oldContract.addSignerKeyFromFile(rootPath+"_xer0yfe2nn1xthc.private.unikey"); oldContract.getDefinition().setExpiresAt(ZonedDateTime.of(LocalDateTime.MIN.truncatedTo(ChronoUnit.SECONDS), ZoneOffset.UTC)); oldContract.seal(); oldContract.check(); oldContract.traceErrors(); System.out.println("Contract is valid: " + oldContract.isOk()); assertFalse(oldContract.isOk()); }
@Test public void checkRegisterContractExpiresAtDistantPastTime() throws Exception{ Contract oldContract = Contract.fromDslFile(ROOT_PATH + "simple_root_contract.yml"); oldContract.addSignerKeyFromFile(ROOT_PATH+"_xer0yfe2nn1xthc.private.unikey"); oldContract.getDefinition().setExpiresAt(ZonedDateTime.of(LocalDateTime.MIN.truncatedTo(ChronoUnit.SECONDS), ZoneOffset.UTC)); oldContract.seal(); oldContract.check(); oldContract.traceErrors(); System.out.println("Contract is valid: " + oldContract.isOk()); assertFalse(oldContract.isOk()); }
@Test public void checkContractExpiresAtDistantFutureTime() throws Exception{ Contract futureContract = Contract.fromDslFile(rootPath + "simple_root_contract.yml"); futureContract.addSignerKeyFromFile(rootPath+"_xer0yfe2nn1xthc.private.unikey"); futureContract.getDefinition().setExpiresAt(futureContract.getCreatedAt().plusYears(50)); futureContract.seal(); assertTrue(futureContract.check()); System.out.println("Contract is valid: " + futureContract.isOk()); }
@Test public void checkContractExpiresAtResentFutureTime() throws Exception{ Contract futureContract = Contract.fromDslFile(rootPath + "simple_root_contract.yml"); futureContract.addSignerKeyFromFile(rootPath+"_xer0yfe2nn1xthc.private.unikey"); futureContract.getDefinition().setExpiresAt(futureContract.getCreatedAt().plusMinutes(1)); futureContract.seal(); assertTrue(futureContract.check()); System.out.println("Contract is valid: " + futureContract.isOk()); }
@Test public void jsInContract_execParams() throws Exception { Contract contract = new Contract(TestKeys.privateKey(0)); String js = ""; js += "print('jsApiParams.length: ' + jsApiParams.length);"; js += "result = [jsApiParams.length, jsApiParams[0], jsApiParams[1]];"; contract.getDefinition().setJS(js.getBytes(), "client script.js", new JSApiScriptParameters()); contract.seal(); ScriptObjectMirror res = (ScriptObjectMirror) contract.execJS(js.getBytes(), "prm1", "prm2"); assertEquals(2, res.get("0")); assertEquals("prm1", res.get("1")); assertEquals("prm2", res.get("2")); }
@Test public void checkRegisterContractExpiresAtReсentFutureTime() throws Exception{ Contract futureContract = Contract.fromDslFile(ROOT_PATH + "simple_root_contract.yml"); futureContract.addSignerKeyFromFile(ROOT_PATH+"_xer0yfe2nn1xthc.private.unikey"); futureContract.getDefinition().setExpiresAt(futureContract.getCreatedAt().plusMinutes(1)); futureContract.seal(); assertTrue(futureContract.check()); System.out.println("Contract is valid: " + futureContract.isOk()); registerAndCheckApproved(futureContract); }
@Test public void checkContractExpiresAtDistantFutureTime() throws Exception{ Contract futureContract = Contract.fromDslFile(ROOT_PATH + "simple_root_contract.yml"); futureContract.addSignerKeyFromFile(ROOT_PATH+"_xer0yfe2nn1xthc.private.unikey"); futureContract.getDefinition().setExpiresAt(futureContract.getCreatedAt().plusYears(50)); futureContract.seal(); assertTrue(futureContract.check()); System.out.println("Contract is valid: " + futureContract.isOk()); registerAndCheckApproved(futureContract); }
@Test public void checkContractExpiresAtResentPastTime() throws Exception{ Contract oldContract = Contract.fromDslFile(rootPath + "simple_root_contract.yml"); oldContract.addSignerKeyFromFile(rootPath+"_xer0yfe2nn1xthc.private.unikey"); oldContract.getDefinition().setExpiresAt(oldContract.getCreatedAt().minusMinutes(1)); oldContract.seal(); oldContract.check(); oldContract.traceErrors(); System.out.println("Contract is valid: " + oldContract.isOk()); assertFalse(oldContract.isOk()); }
@Test public void checkRegisterContractExpiresAtReсentPastTime() throws Exception{ Contract oldContract = Contract.fromDslFile(ROOT_PATH + "simple_root_contract.yml"); oldContract.addSignerKeyFromFile(ROOT_PATH+"_xer0yfe2nn1xthc.private.unikey"); oldContract.getDefinition().setExpiresAt(oldContract.getCreatedAt().minusMinutes(1)); oldContract.seal(); oldContract.check(); oldContract.traceErrors(); System.out.println("Contract is valid: " + oldContract.isOk()); assertFalse(oldContract.isOk()); }
@Test public void goodSmartContractFromDSL() throws Exception { Contract smartContract = NSmartContract.fromDslFile(rootPath + "NotarySmartDSLTemplate.yml"); smartContract.addSignerKeyFromFile(rootPath + "_xer0yfe2nn1xthc.private.unikey"); smartContract.seal(); smartContract.check(); smartContract.traceErrors(); assertTrue(smartContract.isOk()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.getDefinition().getExtendedType()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.get("definition.extended_type")); assertTrue(smartContract instanceof NSmartContract); assertTrue(smartContract instanceof NContract); }
@Test public void goodNSmartContractFromDSL() throws Exception { Contract smartContract = NSmartContract.fromDslFile(rootPath + "NotaryNSmartDSLTemplate.yml"); smartContract.addSignerKeyFromFile(rootPath + "_xer0yfe2nn1xthc.private.unikey"); smartContract.seal(); smartContract.check(); smartContract.traceErrors(); assertTrue(smartContract.isOk()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.getDefinition().getExtendedType()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.get("definition.extended_type")); assertTrue(smartContract instanceof NSmartContract); assertTrue(smartContract instanceof NContract); }
@Test public void goodNSmartContract() throws Exception { final PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract smartContract = new NSmartContract(key); smartContract.seal(); smartContract.check(); smartContract.traceErrors(); assertTrue(smartContract.isOk()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.getDefinition().getExtendedType()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.get("definition.extended_type")); assertTrue(smartContract instanceof NSmartContract); assertTrue(smartContract instanceof NContract); }
@Test public void goodSmartContract() throws Exception { final PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract smartContract = new NSmartContract(key); smartContract.seal(); smartContract.check(); smartContract.traceErrors(); assertTrue(smartContract.isOk()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.getDefinition().getExtendedType()); assertEquals(NSmartContract.SmartContractType.N_SMART_CONTRACT.name(), smartContract.get("definition.extended_type")); assertTrue(smartContract instanceof NSmartContract); assertTrue(smartContract instanceof NContract); }