mirror of
https://github.com/alexgo-io/stacks-puppet-node.git
synced 2026-04-23 19:31:00 +08:00
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:
@@ -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
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user