Package com.exonum.binding.service
Class NodeFake
- java.lang.Object
 - 
- com.exonum.binding.service.NodeFake
 
 
- 
- All Implemented Interfaces:
 Node
public final class NodeFake extends java.lang.Object implements Node
An implementation of a Node interface for testing purposes. Use it in tests of your handlers that need some data in the database:try (MemoryDb db = MemoryDb.newInstance(); Cleaner cleaner = new Cleaner()) { // Setup database to include some test data Fork fork = db.createFork(cleaner); MapIndex balance = MapIndexProxy.newInstance("balance", fork, stringSerializer, stringSerializer); balance.put("John Doe", "$1000.00"); db.merge(fork); // Create a node fake from the database NodeFake node = new NodeFake(db); WalletController controller = new WalletController(node); assertThat(controller.getBalance("John Doe"), equalTo("$1000.00")); } 
- 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MemoryDbgetDatabase()Returns the underlying database.com.exonum.binding.common.crypto.PublicKeygetPublicKey()Returns the service public key of this node.com.exonum.binding.common.hash.HashCodesubmitTransaction(RawTransaction transaction)Returns a zero hash always, ignoring the transaction.<ResultT> ResultTwithSnapshot(java.util.function.Function<Snapshot,ResultT> snapshotFunction)Performs a given function with a snapshot of the current database state. 
 - 
 
- 
- 
Constructor Detail
- 
NodeFake
public NodeFake(MemoryDb database)
Creates a new node fake with the given database and an empty public key.- Parameters:
 database- a database to provide snapshots of
 
- 
NodeFake
public NodeFake(MemoryDb database, com.exonum.binding.common.crypto.PublicKey publicKey)
Creates a new node fake with the given database.- Parameters:
 database- a database to provide snapshots ofpublicKey- a public key of the node
 
 - 
 
- 
Method Detail
- 
submitTransaction
public com.exonum.binding.common.hash.HashCode submitTransaction(RawTransaction transaction)
Returns a zero hash always, ignoring the transaction.- Specified by:
 submitTransactionin interfaceNode- Parameters:
 transaction- a transaction to send- Returns:
 - hash of the transaction message created by the framework
 - Throws:
 java.lang.NullPointerException- if the transaction is null- See Also:
 Blockchain.getTxMessages()
 
- 
withSnapshot
public <ResultT> ResultT withSnapshot(java.util.function.Function<Snapshot,ResultT> snapshotFunction)
Description copied from interface:NodePerforms a given function with a snapshot of the current database state.- Specified by:
 withSnapshotin interfaceNode- Type Parameters:
 ResultT- a type the function returns- Parameters:
 snapshotFunction- a function to execute- Returns:
 - the result of applying the given function to the database state
 
 
- 
getPublicKey
public com.exonum.binding.common.crypto.PublicKey getPublicKey()
Description copied from interface:NodeReturns the service public key of this node. The corresponding private key is used for signing transactions inNode.submitTransaction(RawTransaction).This key is stored under "service_public_key" key in the node configuration file.
- Specified by:
 getPublicKeyin interfaceNode
 
- 
getDatabase
public MemoryDb getDatabase()
Returns the underlying database. 
 - 
 
 -