@ -15,9 +15,23 @@
# include "util.h"
# include "util.h"
# include <QDir>
# include <QDir>
# include <QtGlobal>
# include <boost/filesystem.hpp>
# include <boost/filesystem.hpp>
static UniValue rpcNestedTest_rpc ( const JSONRPCRequest & request )
{
if ( request . fHelp ) {
return " help message " ;
}
return request . params . write ( 0 , 0 ) ;
}
static const CRPCCommand vRPCCommands [ ] =
{
{ " test " , " rpcNestedTest " , & rpcNestedTest_rpc , true } ,
} ;
void RPCNestedTests : : rpcNestedTests ( )
void RPCNestedTests : : rpcNestedTests ( )
{
{
UniValue jsonRPCError ;
UniValue jsonRPCError ;
@ -26,6 +40,7 @@ void RPCNestedTests::rpcNestedTests()
// could be moved to a more generic place when we add more tests on QT level
// could be moved to a more generic place when we add more tests on QT level
const CChainParams & chainparams = Params ( ) ;
const CChainParams & chainparams = Params ( ) ;
RegisterAllCoreRPCCommands ( tableRPC ) ;
RegisterAllCoreRPCCommands ( tableRPC ) ;
tableRPC . appendCommand ( " rpcNestedTest " , & vRPCCommands [ 0 ] ) ;
ClearDatadirCache ( ) ;
ClearDatadirCache ( ) ;
std : : string path = QDir : : tempPath ( ) . toStdString ( ) + " / " + strprintf ( " test_bitcoin_qt_%lu_%i " , ( unsigned long ) GetTime ( ) , ( int ) ( GetRand ( 100000 ) ) ) ;
std : : string path = QDir : : tempPath ( ) . toStdString ( ) + " / " + strprintf ( " test_bitcoin_qt_%lu_%i " , ( unsigned long ) GetTime ( ) , ( int ) ( GetRand ( 100000 ) ) ) ;
QDir dir ( QString : : fromStdString ( path ) ) ;
QDir dir ( QString : : fromStdString ( path ) ) ;
@ -63,16 +78,6 @@ void RPCNestedTests::rpcNestedTests()
RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo " ) ; //whitespace at the end will be tolerated
RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo " ) ; //whitespace at the end will be tolerated
QVERIFY ( result . substr ( 0 , 1 ) = = " { " ) ;
QVERIFY ( result . substr ( 0 , 1 ) = = " { " ) ;
# if QT_VERSION >= 0x050300
// do the QVERIFY_EXCEPTION_THROWN checks only with Qt5.3 and higher (QVERIFY_EXCEPTION_THROWN was introduced in Qt5.3)
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo() . \n " ) , std : : runtime_error ) ; //invalid syntax
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo() getblockchaininfo() " ) , std : : runtime_error ) ; //invalid syntax
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo( " ) ) ; //tolerate non closing brackets if we have no arguments
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo()()() " ) ) ; //tolerate non command brackts
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo(True) " ) , UniValue ) ; //invalid argument
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " a(getblockchaininfo(True)) " ) , UniValue ) ; //method not found
# endif
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo()[ \" chain \" ] " ) ) ; //Quote path identifier are allowed, but look after a child contaning the quotes in the key
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo()[ \" chain \" ] " ) ) ; //Quote path identifier are allowed, but look after a child contaning the quotes in the key
QVERIFY ( result = = " null " ) ;
QVERIFY ( result = = " null " ) ;
@ -85,6 +90,40 @@ void RPCNestedTests::rpcNestedTests()
RPCConsole : : RPCExecuteCommandLine ( result , " getblock(getbestblockhash())[tx][0] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " getblock(getbestblockhash())[tx][0] " ) ;
QVERIFY ( result = = " 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b " ) ;
QVERIFY ( result = = " 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest " ) ;
QVERIFY ( result = = " [] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest '' " ) ;
QVERIFY ( result = = " [ \" \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest \" \" " ) ;
QVERIFY ( result = = " [ \" \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest '' abc " ) ;
QVERIFY ( result = = " [ \" \" , \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest abc '' abc " ) ;
QVERIFY ( result = = " [ \" abc \" , \" \" , \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest abc abc " ) ;
QVERIFY ( result = = " [ \" abc \" , \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest abc \t \t abc " ) ;
QVERIFY ( result = = " [ \" abc \" , \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest(abc ) " ) ;
QVERIFY ( result = = " [ \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest( abc ) " ) ;
QVERIFY ( result = = " [ \" abc \" ] " ) ;
RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest( abc , cba ) " ) ;
QVERIFY ( result = = " [ \" abc \" , \" cba \" ] " ) ;
# if QT_VERSION >= 0x050300
// do the QVERIFY_EXCEPTION_THROWN checks only with Qt5.3 and higher (QVERIFY_EXCEPTION_THROWN was introduced in Qt5.3)
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo() . \n " ) , std : : runtime_error ) ; //invalid syntax
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo() getblockchaininfo() " ) , std : : runtime_error ) ; //invalid syntax
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo( " ) ) ; //tolerate non closing brackets if we have no arguments
( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo()()() " ) ) ; //tolerate non command brackts
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " getblockchaininfo(True) " ) , UniValue ) ; //invalid argument
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " a(getblockchaininfo(True)) " ) , UniValue ) ; //method not found
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest abc,,abc " ) , std : : runtime_error ) ; //don't tollerate empty arguments when using ,
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest(abc,,abc) " ) , std : : runtime_error ) ; //don't tollerate empty arguments when using ,
QVERIFY_EXCEPTION_THROWN ( RPCConsole : : RPCExecuteCommandLine ( result , " rpcNestedTest(abc,,) " ) , std : : runtime_error ) ; //don't tollerate empty arguments when using ,
# endif
delete pcoinsTip ;
delete pcoinsTip ;
delete pcoinsdbview ;
delete pcoinsdbview ;
delete pblocktree ;
delete pblocktree ;