Update of /cvsroot/neuclear/neuclear-pay/src/test/org/neuclear/exchange/controllers/receivers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20812/src/test/org/neuclear/exchange/controllers/receivers Added Files: AbstractExchangeReceiverTest.java CancelExchangeOrderReceiverTest.java CancelExchangeOrderReceiverWithFeesTest.java CancelExchangeReceiptReceiverTest.java CancelExchangeReceiptReceiverWithFeesTest.java ExchangeCompletedReceiptReceiverTest.java ExchangeCompletedReceiptReceiverWithFeesTest.java ExchangeCompletionOrderReceiverTest.java ExchangeCompletionOrderReceiverWithFeesTest.java ExchangeOrderReceiptReceiverTest.java ExchangeOrderReceiptReceiverWithFeesTest.java ExchangeOrderReceiverTest.java ExchangeOrderReceiverWithFeesTest.java Log Message: Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. --- NEW FILE: ExchangeOrderReceiptReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LedgerController; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: ExchangeOrderReceiptReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: ExchangeOrderReceiptReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.1 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeOrderReceiptReceiverTest extends AbstractExchangeReceiverTest { public ExchangeOrderReceiptReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeOrderReceipt() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory recipient = new Signatory(signer.getPublicKey("alice")); Signatory sender = new Signatory(signer.getPublicKey("bob")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 10000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer)); receiver.receive(receipt); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); } public void testExchangeOrderReceiptAudit() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { LedgerController ac = new SimpleLedgerController("asset"); Signatory recipient = new Signatory(signer.getPublicKey("alice")); Signatory sender = new Signatory(signer.getPublicKey("bob")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); ac.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ac.getBalance(asset.getServiceId(), sender.getName()), 0); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) new ExchangeOrderReceiver(receiver, signer, ac).receive(new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 10000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer)); receiver.receive(receipt); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); } } --- NEW FILE: ExchangeCompletedReceiptReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeCompletedReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeCompletionOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LedgerController; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeCompletedReceiptReceiverWithFeesTest extends AbstractExchangeReceiverTest { public ExchangeCompletedReceiptReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeCompletionOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { LedgerController ac = new SimpleLedgerController("asset"); Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double amount = 10; final double fee = asset.getFeeStructure().calculateFee(amount); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); ac.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(amount), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(amount))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(amount - fee, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); ExchangeCompletedReceipt completed = (ExchangeCompletedReceipt) receiver.receive(new ExchangeCompletionOrderBuilder(receipt, new Date(), recipient.getName(), new Amount(amount), "did it").convert("exchange", signer)); assertNotNull(completed); receiver.receive(completed); assertEquals(0, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(amount - fee, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount - fee, ac.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(amount - fee, ac.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: CancelExchangeOrderReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.CancelExchangeReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.CancelExchangeOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class CancelExchangeOrderReceiverWithFeesTest extends AbstractExchangeReceiverTest { public CancelExchangeOrderReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testCancelExchangeOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double amount = 10; final double fee = asset.getFeeStructure().calculateFee(amount); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(amount), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(amount))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); CancelExchangeReceipt cancelled = (CancelExchangeReceipt) receiver.receive(new CancelExchangeOrderBuilder(receipt).convert("exchange", signer)); assertNotNull(cancelled); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount - fee, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: CancelExchangeReceiptReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.CancelExchangeOrder; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.CancelExchangeOrderBuilder; import org.neuclear.exchange.orders.builders.CancelExchangeReceiptBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: CancelExchangeReceiptReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: CancelExchangeReceiptReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.2 2004/09/08 16:50:49 pelle All unit tests now pass Revision 1.1 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class CancelExchangeReceiptReceiverTest extends AbstractExchangeReceiverTest { public CancelExchangeReceiptReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testCancelExchangeReceipt() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); CancelExchangeOrder cancelOrder = (CancelExchangeOrder) new CancelExchangeOrderBuilder(receipt).convert("exchange", signer); receiver.receive(new CancelExchangeReceiptBuilder(cancelOrder, new Date()).convert(assetalias, signer)); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: CancelExchangeOrderReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.CancelExchangeReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.CancelExchangeOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: CancelExchangeOrderReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: CancelExchangeOrderReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.3 2004/09/08 16:50:49 pelle All unit tests now pass Revision 1.2 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class CancelExchangeOrderReceiverTest extends AbstractExchangeReceiverTest { public CancelExchangeOrderReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testCancelExchangeOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); CancelExchangeReceipt cancelled = (CancelExchangeReceipt) receiver.receive(new CancelExchangeOrderBuilder(receipt).convert("exchange", signer)); assertNotNull(cancelled); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: CancelExchangeReceiptReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.CancelExchangeOrder; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.CancelExchangeOrderBuilder; import org.neuclear.exchange.orders.builders.CancelExchangeReceiptBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class CancelExchangeReceiptReceiverWithFeesTest extends AbstractExchangeReceiverTest { public CancelExchangeReceiptReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testCancelExchangeReceipt() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double amount = 10; final double fee = asset.getFeeStructure().calculateFee(amount); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(amount), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(amount))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); CancelExchangeOrder cancelOrder = (CancelExchangeOrder) new CancelExchangeOrderBuilder(receipt).convert("exchange", signer); receiver.receive(new CancelExchangeReceiptBuilder(cancelOrder, new Date()).convert(assetalias, signer)); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount - fee, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: ExchangeCompletionOrderReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeCompletedReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeCompletionOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeCompletionOrderReceiverWithFeesTest extends AbstractExchangeReceiverTest { public ExchangeCompletionOrderReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeCompletionOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double amount = 10; final double fee = asset.getFeeStructure().calculateFee(amount); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(amount), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(amount))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); ExchangeCompletedReceipt completed = (ExchangeCompletedReceipt) receiver.receive(new ExchangeCompletionOrderBuilder(receipt, new Date(), recipient.getName(), new Amount(amount), "did it").convert("exchange", signer)); assertNotNull(completed); assertEquals(0, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(amount - fee, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(amount - fee, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: ExchangeCompletionOrderReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeCompletedReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeCompletionOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: ExchangeCompletionOrderReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: ExchangeCompletionOrderReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeCompletionOrderReceiverTest extends AbstractExchangeReceiverTest { public ExchangeCompletionOrderReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeCompletionOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); ExchangeCompletedReceipt completed = (ExchangeCompletedReceipt) receiver.receive(new ExchangeCompletionOrderBuilder(receipt, new Date(), recipient.getName(), new Amount(10), "did it").convert("exchange", signer)); assertNotNull(completed); assertEquals(0, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: ExchangeOrderReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeOrderReceiverWithFeesTest extends AbstractExchangeReceiverTest { public ExchangeOrderReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory recipient = new Signatory(signer.getPublicKey("alice")); Signatory sender = new Signatory(signer.getPublicKey("bob")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); double feeBalance = ledger.getBalance(asset.getServiceId(), asset.getFeeAccount().getName()); final double amount = 10; ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); receiver.receive(new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 100000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer)); double fee = asset.getFeeStructure().calculateFee(amount); assertEquals(feeBalance + fee, ledger.getBalance(asset.getServiceId(), asset.getFeeAccount().getName()), 0); assertEquals(senderstart, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10 - fee, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); } } --- NEW FILE: ExchangeOrderReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: ExchangeOrderReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: ExchangeOrderReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.2 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeOrderReceiverTest extends AbstractExchangeReceiverTest { public ExchangeOrderReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory recipient = new Signatory(signer.getPublicKey("alice")); Signatory sender = new Signatory(signer.getPublicKey("bob")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); receiver.receive(new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 100000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer)); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(senderstart, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); } } --- NEW FILE: ExchangeCompletedReceiptReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeCompletedReceipt; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeCompletionOrderBuilder; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.id.SignedNamedObject; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LedgerController; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /* $Id: ExchangeCompletedReceiptReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: ExchangeCompletedReceiptReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.1 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. Revision 1.1 2004/07/21 23:11:22 pelle Added single function Receivers and a DelegatingAssetController. These will eventually replace the CurrencyController and Auditor. */ /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeCompletedReceiptReceiverTest extends AbstractExchangeReceiverTest { public ExchangeCompletedReceiptReceiverTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAsset(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeCompletionOrder() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { LedgerController ac = new SimpleLedgerController("asset"); Signatory sender = new Signatory(signer.getPublicKey("bob")); Signatory recipient = new Signatory(signer.getPublicKey("alice")); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); ac.transfer(asset.getServiceId(), "bluesky", sender.getName(), 10 - senderstart, "bla"); assertEquals(10, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); SignedNamedObject order = new ExchangeOrderBuilder(asset, agent, new Amount(10), new Date(System.currentTimeMillis() + 50000), new BidItem[]{new BidItem(shoes, new Amount(10))}, "test").convert("bob", signer); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(order); assertEquals(10, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); ExchangeCompletedReceipt completed = (ExchangeCompletedReceipt) receiver.receive(new ExchangeCompletionOrderBuilder(receipt, new Date(), recipient.getName(), new Amount(10), "did it").convert("exchange", signer)); assertNotNull(completed); receiver.receive(completed); assertEquals(0, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ledger.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ledger.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(10, ledger.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(0, ac.getBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(0, ac.getAvailableBalance(asset.getServiceId(), sender.getName()), 0); assertEquals(10, ac.getBalance(asset.getServiceId(), recipient.getName()), 0); assertEquals(10, ac.getAvailableBalance(asset.getServiceId(), recipient.getName()), 0); } } --- NEW FILE: AbstractExchangeReceiverTest.java --- package org.neuclear.exchange.controllers.receivers; import org.neuclear.asset.contracts.Asset; import org.neuclear.asset.contracts.builders.AssetBuilder; import org.neuclear.asset.fees.FeeStructureBuilder; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgent; import org.neuclear.exchange.contracts.builders.ExchangeAgentBuilder; import org.neuclear.exchange.controllers.DelegatingExchangeAssetController; import org.neuclear.id.Signatory; import org.neuclear.id.receiver.Receiver; import org.neuclear.ledger.LedgerController; import org.neuclear.tests.AbstractSigningTest; import java.security.GeneralSecurityException; import java.security.PublicKey; /* $Id: AbstractExchangeReceiverTest.java,v 1.1 2004/09/10 19:48:02 pelle Exp $ $Log: AbstractExchangeReceiverTest.java,v $ Revision 1.1 2004/09/10 19:48:02 pelle Refactored all the Exchange related receivers into a new package under org.neuclear.exchange. Refactored the way the Receivers handle embedded objects. Now they pass them on to the parent receiver for processing before they do their own thing. Revision 1.3 2004/09/08 23:17:39 pelle Fees now work for everything but Exchange Completion. Revision 1.2 2004/08/18 09:42:56 pelle Many fixes to the various Signing and SigningRequest Servlets etc. Revision 1.1 2004/07/22 21:48:46 pelle Further receivers and unit tests for for Exchanges etc. I've also changed the internal asset to ledger id from being the pk of the contract signer, to being the pk of the service key. */ /** * User: pelleb * Date: Jul 22, 2004 * Time: 10:39:40 AM */ public abstract class AbstractExchangeReceiverTest extends AbstractSigningTest { protected Receiver receiver; protected Asset asset; protected Asset shoes; protected LedgerController ledger; protected ExchangeAgent agent; public static String PROMOTER = "ivan"; protected String assetalias; public AbstractExchangeReceiverTest(final String string) throws NeuClearException, GeneralSecurityException { super(string); } public ExchangeAgent createTestExchangeAgent() throws NeuClearException { ExchangeAgentBuilder builder = new ExchangeAgentBuilder("tradex", "http://tradex.neuclear.org", "http://tradex.neuclear.org", getSigner().getPublicKey("exchange")); return (ExchangeAgent) builder.convert("carol", getSigner()); } public Asset createShoeAsset() throws NeuClearException { AssetBuilder builder = new AssetBuilder("shoes", "http://shoes.neuclear.org", "http://shoes.neuclear.org", getSigner().getPublicKey("shoes"), getSigner().getPublicKey("shoesissuer"), 2, 0, "pairs of shoes"); return (Asset) builder.convert(PROMOTER, getSigner()); } protected void generatePrimaryTestAsset() throws NeuClearException { PublicKey pub = signer.generateKey(); asset = (Asset) new AssetBuilder("test", "http://localhost:8080/rules.html", "http://localhost:8080/Asset", pub, signer.getPublicKey("carol"), 2, 0, "t").convert("bux", signer); assetalias = new Signatory(pub).getName(); } protected void generatePrimaryTestAssetWithFees() throws NeuClearException { PublicKey pub = signer.generateKey(); AssetBuilder assetBuilder = new AssetBuilder("test", "http://localhost:8080/rules.html", "http://localhost:8080/Asset", pub, signer.getPublicKey("carol"), 2, 0, "t"); assetBuilder.addFeeStructure(new FeeStructureBuilder(0.01)); assetBuilder.addFeeAccount(signer.getPublicKey("eve")); asset = (Asset) assetBuilder.convert("bux", signer); assetalias = new Signatory(pub).getName(); } public Receiver createReceiver() { return new DelegatingExchangeAssetController(signer, ledger); } } --- NEW FILE: ExchangeOrderReceiptReceiverWithFeesTest.java --- package org.neuclear.exchange.controllers.receivers; /* * The NeuClear Project and it's libraries are * (c) 2002-2004 Antilles Software Ventures SA * For more information see: http://neuclear.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.neuclear.asset.InvalidTransferException; import org.neuclear.asset.contracts.AssetGlobals; import org.neuclear.asset.orders.Amount; import org.neuclear.commons.NeuClearException; import org.neuclear.exchange.contracts.ExchangeAgentGlobals; import org.neuclear.exchange.orders.BidItem; import org.neuclear.exchange.orders.ExchangeOrderGlobals; import org.neuclear.exchange.orders.ExchangeOrderReceipt; import org.neuclear.exchange.orders.builders.ExchangeOrderBuilder; import org.neuclear.id.Signatory; import org.neuclear.ledger.InvalidTransactionException; import org.neuclear.ledger.LedgerController; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.UnknownBookException; import org.neuclear.ledger.simple.SimpleLedgerController; import java.security.GeneralSecurityException; import java.util.Date; /** * User: pelleb * Date: Jul 21, 2004 * Time: 1:38:45 PM */ public class ExchangeOrderReceiptReceiverWithFeesTest extends AbstractExchangeReceiverTest { public ExchangeOrderReceiptReceiverWithFeesTest(String string) throws NeuClearException, GeneralSecurityException { super(string); ExchangeOrderGlobals.registerReaders(); ExchangeAgentGlobals.registerReaders(); AssetGlobals.registerReaders(); } protected void setUp() throws Exception { generatePrimaryTestAssetWithFees(); ledger = new SimpleLedgerController("test"); receiver = createReceiver(); agent = createTestExchangeAgent(); shoes = createShoeAsset(); } public void testExchangeOrderReceipt() throws NeuClearException, InvalidTransferException, LowlevelLedgerException, UnknownBookException, InvalidTransactionException { Signatory recipient = new Signatory(signer.getPublicKey("alice")); Signatory sender = new Signatory(signer.getPublicKey("bob")); final double amount = 10; final double fee = asset.getFeeStructure().calculateFee(amount); final double senderstart = ledger.getBalance(asset.getServiceId(), sender.getName()); ledger.transfer(asset.getServiceId(), "bluesky", sender.getName(), amount - senderstart, "bla"); assertEquals(amount, ledger.getBalance(asset.getServiceId(), sender.getName()), 0); ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) receiver.receive(new Exc... [truncated message content] |