adding integration test case which will attempt to register foo.id (with a transfer at end), but the wallet gets drained. right now the check() doesn't really do anything, but once info will respond with error, I'll add that

This commit is contained in:
Aaron Blankstein
2017-06-06 13:50:29 -04:00
parent b280398457
commit a59da6fab4
2 changed files with 126 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Blockstack
~~~~~
copyright: (c) 2014-2015 by Halfmoon Labs, Inc.
copyright: (c) 2016 by Blockstack.org
This file is part of Blockstack
Blockstack is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Blockstack 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with Blockstack. If not, see <http://www.gnu.org/licenses/>.
"""
import testlib
import pybitcoin
import time
import json
import sys
import os
import blockstack_client
wallets = [
testlib.Wallet( "5JesPiN68qt44Hc2nT8qmyZ1JDwHebfoh9KQ52Lazb1m1LaKNj9", 100000000000 ),
testlib.Wallet( "5KHqsiU9qa77frZb6hQy9ocV7Sus9RWJcQGYYBJJBb2Efj1o77e", 100000000000 ),
testlib.Wallet( "5Kg5kJbQHvk1B64rJniEmgbD83FpZpbw2RjdAZEzTefs9ihN3Bz", 100000000000 ),
testlib.Wallet( "5JuVsoS9NauksSkqEjbUZxWwgGDQbMwPsEfoRBSpLpgDX1RtLX7", 5500 ),
testlib.Wallet( "5KEpiSRr1BrT8vRD7LKGCEmudokTh1iMHbiThMQpLdwBwhDJB1T", 5500 ),
]
consensus = "17ac43c1d8549c3181b200f1bf97eb7d"
def scenario( wallets, **kw ):
testlib.blockstack_namespace_preorder( "id", wallets[1].addr, wallets[0].privkey )
testlib.next_block( **kw )
testlib.blockstack_namespace_reveal( "id", wallets[1].addr, 52595, 250, 4, [6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0], 10, 10, wallets[0].privkey )
testlib.next_block( **kw )
testlib.blockstack_namespace_ready( "id", wallets[1].privkey )
testlib.next_block( **kw )
wallet = testlib.blockstack_client_initialize_wallet( "0123456789abcdef", wallets[2].privkey, wallets[3].privkey, wallets[4].privkey )
resp = testlib.blockstack_cli_register( "foo.id", "0123456789abcdef",
recipient_address = 'mi8mUNSFC9EoGXmjPF8vKqCUSfGE2fbD4V')
if 'error' in resp:
print >> sys.stderr, json.dumps(resp, indent=4, sort_keys=True)
return False
# wait for the preorder to get confirmed
for i in xrange(0, 12):
testlib.next_block( **kw )
# wait for the poller to pick it up
print >> sys.stderr, "Waiting 10 seconds for the backend to submit the register"
time.sleep(10)
# wait for the register to get confirmed
for i in xrange(0, 12):
testlib.next_block( **kw )
print >> sys.stderr, "Waiting 10 seconds for the backend to acknowledge registration"
time.sleep(10)
# wait for the update to go off
for i in xrange(0, 8):
testlib.next_block( **kw )
# drain the wallet
print >> sys.stderr, "Lets drain the wallet."
testlib.blockstack_cli_withdraw( "0123456789abcdef", 'mi8mUNSFC9EoGXmjPF8vKqCUSfGE2fbD4V' )
print >> sys.stderr, "Drained!"
for i in xrange(0, 11):
testlib.next_block( **kw )
print >> sys.stderr, "Waiting 10 seconds for the backend to acknowledge update"
time.sleep(10)
def check( state_engine ):
# not revealed, but ready
ns = state_engine.get_namespace_reveal( "id" )
if ns is not None:
print "namespace reveal exists"
return False
ns = state_engine.get_namespace( "id" )
if ns is None:
print "no namespace"
return False
if ns['namespace_id'] != 'id':
print "wrong namespace"
return False
return True

View File

@@ -623,6 +623,25 @@ def blockstack_cli_namespace_ready( namespace_id, reveal_privkey, config_path=No
return resp
def blockstack_cli_withdraw( password, address, amount = None, config_path = None):
"""
Register a name, using the backend RPC endpoint
"""
test_proxy = make_proxy(password=password, config_path=config_path)
blockstack_client.set_default_proxy( test_proxy )
config_path = test_proxy.config_path if config_path is None else config_path
args = CLIArgs()
args.address = address
args.amount = amount
resp = cli_withdraw(args, config_path = config_path, password = password, interactive = False)
if 'error' not in resp:
assert 'transaction_hash' in resp
return resp
def blockstack_cli_register( name, password, recipient_address=None, zonefile=None, config_path=None):
"""