Search in sources :

Example 21 with PrecompiledTransactionResult

use of org.aion.precompiled.PrecompiledTransactionResult in project aion by aionnetwork.

the class TokenBridgeContractTest method testRemoveRingMember.

@Test
public void testRemoveRingMember() {
    // override defaults
    this.contract = new TokenBridgeContract(context(OWNER_ADDR, CONTRACT_ADDR), ExternalStateForTests.usingRepository(this.repository), OWNER_ADDR, CONTRACT_ADDR);
    this.connector = this.contract.getConnector();
    ListFVM encodingList = new ListFVM();
    for (ECKey k : members) {
        encodingList.add(new AddressFVM(k.getAddress()));
    }
    // address null - fail
    byte[] payload = new AbiEncoder(BridgeFuncSig.SIG_RING_REMOVE_MEMBER.getSignature()).encodeBytes();
    PrecompiledTransactionResult result = this.contract.execute(payload, DEFAULT_NRG);
    assertEquals("FAILURE", result.getStatus().causeOfError);
    // add new member - fail
    byte[] sig = new AbiEncoder(BridgeFuncSig.SIG_RING_REMOVE_MEMBER.getSignature(), encodingList).encodeBytes();
    // the new member
    byte[] newMember = ECKeyFac.inst().create().getAddress();
    byte[] payload2 = new byte[4 + 32];
    System.arraycopy(sig, 0, payload2, 0, 4);
    System.arraycopy(newMember, 0, payload2, 4, 32);
    PrecompiledTransactionResult result2 = this.contract.execute(payload2, DEFAULT_NRG);
    assertEquals("FAILURE", result2.getStatus().causeOfError);
    // initialize ring
    byte[] ring = new AbiEncoder(BridgeFuncSig.SIG_RING_INITIALIZE.getSignature(), encodingList).encodeBytes();
    this.contract.execute(ring, DEFAULT_NRG);
    // remove member - fail, member does not exist
    byte[] sig3 = new AbiEncoder(BridgeFuncSig.SIG_RING_REMOVE_MEMBER.getSignature(), encodingList).encodeBytes();
    // the new member
    byte[] newMember3 = ECKeyFac.inst().create().getAddress();
    byte[] payload3 = new byte[4 + 32];
    System.arraycopy(sig3, 0, payload3, 0, 4);
    System.arraycopy(newMember3, 0, payload3, 4, 32);
    PrecompiledTransactionResult result3 = this.contract.execute(payload3, DEFAULT_NRG);
    assertEquals("FAILURE", result3.getStatus().causeOfError);
    // remove member - success, member exists
    byte[] sig4 = new AbiEncoder(BridgeFuncSig.SIG_RING_REMOVE_MEMBER.getSignature(), encodingList).encodeBytes();
    byte[] payload4 = new byte[4 + 32];
    System.arraycopy(sig4, 0, payload4, 0, 4);
    System.arraycopy(members[0].getAddress(), 0, payload4, 4, 32);
    PrecompiledTransactionResult result4 = this.contract.execute(payload4, DEFAULT_NRG);
    assertTrue(result4.getStatus().isSuccess());
}
Also used : PrecompiledTransactionResult(org.aion.precompiled.PrecompiledTransactionResult) TokenBridgeContract(org.aion.precompiled.contracts.ATB.TokenBridgeContract) AddressFVM(org.aion.zero.impl.precompiled.encoding.AddressFVM) AbiEncoder(org.aion.zero.impl.precompiled.encoding.AbiEncoder) ECKey(org.aion.crypto.ECKey) ListFVM(org.aion.zero.impl.precompiled.encoding.ListFVM) Test(org.junit.Test)

Example 22 with PrecompiledTransactionResult

use of org.aion.precompiled.PrecompiledTransactionResult in project aion by aionnetwork.

the class TotalCurrencyContractTest method TestGetTotalInsufficientNrg.

@Test
public void TestGetTotalInsufficientNrg() {
    System.out.println("Running TestUpdateTotalInsufficientNrg.");
    PrecompiledTransactionResult res = tcc.execute(new byte[] { (byte) 0x0 }, COST - 1);
    assertEquals("OUT_OF_NRG", res.getStatus().causeOfError);
    assertEquals(0L, res.getEnergyRemaining());
}
Also used : PrecompiledTransactionResult(org.aion.precompiled.PrecompiledTransactionResult) Test(org.junit.Test)

Example 23 with PrecompiledTransactionResult

use of org.aion.precompiled.PrecompiledTransactionResult in project aion by aionnetwork.

the class TotalCurrencyContractTest method TestUpdateTotalIncorrectSigSize.

@Test
public void TestUpdateTotalIncorrectSigSize() {
    System.out.println("Running TestUpdateTotalIncorrectSigSize.");
    byte[] input = Arrays.copyOfRange(constructUpdateInput((byte) 0x0, (byte) 0x0), 0, // cut sig short.
    100);
    PrecompiledTransactionResult res = tcc.execute(input, COST);
    assertEquals("FAILURE", res.getStatus().causeOfError);
    assertEquals(0L, res.getEnergyRemaining());
}
Also used : PrecompiledTransactionResult(org.aion.precompiled.PrecompiledTransactionResult) Test(org.junit.Test)

Example 24 with PrecompiledTransactionResult

use of org.aion.precompiled.PrecompiledTransactionResult in project aion by aionnetwork.

the class TotalCurrencyContractTest method TestUpdateTotalNotOwner.

@Test
public void TestUpdateTotalNotOwner() {
    System.out.println("Running TestUpdateTotalNotOwner.");
    TotalCurrencyContract contract = new TotalCurrencyContract(state, ADDR, // diff owner.
    new AionAddress(ECKeyFac.inst().create().getAddress()));
    byte[] input = constructUpdateInput((byte) 0x0, (byte) 0x0);
    PrecompiledTransactionResult res = contract.execute(input, COST);
    assertEquals("FAILURE", res.getStatus().causeOfError);
    assertEquals(0L, res.getEnergyRemaining());
}
Also used : PrecompiledTransactionResult(org.aion.precompiled.PrecompiledTransactionResult) AionAddress(org.aion.types.AionAddress) TotalCurrencyContract(org.aion.precompiled.contracts.TotalCurrencyContract) Test(org.junit.Test)

Example 25 with PrecompiledTransactionResult

use of org.aion.precompiled.PrecompiledTransactionResult in project aion by aionnetwork.

the class TotalCurrencyContractTest method TestUpdateAndGetDiffChainIds.

@Test
public void TestUpdateAndGetDiffChainIds() {
    System.out.println("Running TestUpdateAndGetDiffChainIds.");
    byte[] input = constructUpdateInput((byte) 0x0, (byte) 0x0);
    PrecompiledTransactionResult res = tcc.execute(input, COST);
    assertTrue(res.getStatus().isSuccess());
    assertEquals(0L, res.getEnergyRemaining());
    // query a diff chainID
    res = tcc.execute(new byte[] { (byte) 0x1 }, COST);
    assertTrue(res.getStatus().isSuccess());
    assertEquals(BigInteger.ZERO, new BigInteger(1, res.getReturnData()));
}
Also used : PrecompiledTransactionResult(org.aion.precompiled.PrecompiledTransactionResult) BigInteger(java.math.BigInteger) Test(org.junit.Test)

Aggregations

PrecompiledTransactionResult (org.aion.precompiled.PrecompiledTransactionResult)114 Test (org.junit.Test)103 PrecompiledTransactionContext (org.aion.precompiled.type.PrecompiledTransactionContext)39 AionAddress (org.aion.types.AionAddress)36 TokenBridgeContract (org.aion.precompiled.contracts.ATB.TokenBridgeContract)26 ECKey (org.aion.crypto.ECKey)25 AbiEncoder (org.aion.precompiled.encoding.AbiEncoder)25 AddressFVM (org.aion.precompiled.encoding.AddressFVM)25 AbiEncoder (org.aion.zero.impl.precompiled.encoding.AbiEncoder)25 AddressFVM (org.aion.zero.impl.precompiled.encoding.AddressFVM)25 BigInteger (java.math.BigInteger)24 ListFVM (org.aion.precompiled.encoding.ListFVM)23 ListFVM (org.aion.zero.impl.precompiled.encoding.ListFVM)23 BridgeTransfer (org.aion.precompiled.contracts.ATB.BridgeTransfer)16 ContractFactory (org.aion.precompiled.ContractFactory)12 Uint128FVM (org.aion.precompiled.encoding.Uint128FVM)11 Uint128FVM (org.aion.zero.impl.precompiled.encoding.Uint128FVM)11 PrecompiledContract (org.aion.precompiled.type.PrecompiledContract)10 InternalTransaction (org.aion.types.InternalTransaction)7 Log (org.aion.types.Log)6