Any projects which want to use Hush code from now on will need to be licensed as GPLv3 or we will send the lawyers: https://www.softwarefreedom.org/ Notably, Komodo (KMD) is licensed as GPLv2 and is no longer compatible to receive code changes, without causing legal issues. MIT projects, such as Zcash, also cannot pull in changes from the Hush Full Node without permission from The Hush Developers, which may in some circumstances grant an MIT license on a case-by-case basis.
116 lines
3.6 KiB
Python
Executable File
116 lines
3.6 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
# Copyright (c) 2018 SuperNET developers
|
|
# Distributed under the GPLv3 software license, see the accompanying
|
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
|
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
|
from test_framework.authproxy import JSONRPCException
|
|
from test_framework.util import assert_equal, assert_greater_than, \
|
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
|
stop_nodes, sync_blocks, sync_mempools, wait_bitcoinds, rpc_port, assert_raises
|
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
|
|
|
|
|
class CryptoconditionsFaucetTest(CryptoconditionsTestFramework):
|
|
|
|
def run_faucet_tests(self):
|
|
rpc = self.rpc
|
|
rpc1 = self.rpc1
|
|
|
|
# basic sanity tests
|
|
result = rpc.getwalletinfo()
|
|
assert_greater_than(result['txcount'], 100)
|
|
assert_greater_than(result['balance'], 0.0)
|
|
balance = result['balance']
|
|
|
|
result = rpc.faucetaddress()
|
|
assert_equal(result['result'], 'success')
|
|
|
|
# verify all keys look like valid AC addrs, could be better
|
|
for x in result.keys():
|
|
if x.find('ddress') > 0:
|
|
assert_equal(result[x][0], 'R')
|
|
|
|
result = rpc.faucetaddress(self.pubkey)
|
|
assert_success(result)
|
|
for x in result.keys():
|
|
print(x+": "+str(result[x]))
|
|
# test that additional CCaddress key is returned
|
|
|
|
for x in result.keys():
|
|
if x.find('ddress') > 0:
|
|
assert_equal(result[x][0], 'R')
|
|
|
|
# no funds in the faucet yet
|
|
result = rpc.faucetget()
|
|
assert_error(result)
|
|
|
|
result = rpc.faucetinfo()
|
|
assert_success(result)
|
|
|
|
result = rpc.faucetfund("0")
|
|
assert_error(result)
|
|
|
|
result = rpc.faucetfund("-1")
|
|
assert_error(result)
|
|
|
|
# we need at least 1 + txfee to get
|
|
result = rpc.faucetfund("2")
|
|
assert_success(result)
|
|
assert result['hex'], "hex key found"
|
|
|
|
# broadcast the xtn
|
|
result = rpc.sendrawtransaction(result['hex'])
|
|
txid = result[0]
|
|
assert txid, "found txid"
|
|
|
|
# we need the tx above to be confirmed in the next block
|
|
rpc.generate(1)
|
|
self.sync_all()
|
|
|
|
result = rpc.getwalletinfo()
|
|
# minus one block reward
|
|
balance2 = result['balance'] - 100000
|
|
# make sure our balance is less now
|
|
assert_greater_than(balance, balance2)
|
|
|
|
result = rpc.faucetinfo()
|
|
assert_success(result)
|
|
assert_greater_than( result['funding'], 0 )
|
|
|
|
# claiming faucet on second node
|
|
faucetgethex = rpc1.faucetget()
|
|
assert_success(faucetgethex)
|
|
assert faucetgethex['hex'], "hex key found"
|
|
|
|
balance1 = rpc1.getwalletinfo()['balance']
|
|
|
|
# try to broadcast the faucetget transaction
|
|
result = self.send_and_mine(faucetgethex['hex'], rpc1)
|
|
assert txid, "transaction broadcasted"
|
|
|
|
balance2 = rpc1.getwalletinfo()['balance']
|
|
assert_greater_than(balance2, balance1)
|
|
|
|
self.sync_all()
|
|
|
|
def run_test(self):
|
|
print("Mining blocks...")
|
|
rpc = self.nodes[0]
|
|
rpc1 = self.nodes[1]
|
|
# utxos from block 1 become mature in block 101
|
|
rpc.generate(101)
|
|
self.sync_all()
|
|
rpc.getinfo()
|
|
rpc1.getinfo()
|
|
# this corresponds to -pubkey above
|
|
print("Importing privkeys")
|
|
rpc.importprivkey(self.privkey)
|
|
rpc1.importprivkey(self.privkey1)
|
|
self.run_faucet_tests()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
CryptoconditionsFaucetTest ().main()
|