mirror of
https://github.com/monero-project/monero.git
synced 2025-05-02 19:04:55 -04:00
functional_tests: test HTTP digest auth
Test:
1. Can't login to RPC server with --rpc-login enabled, but no auth provided
2. Can access RPC server with correct login
3. Can use internal HTTP client to access RPC server with correct login
With commit 0ae5c91e50
not reverted, we fail test 3.
This commit is contained in:
parent
1bec71279e
commit
8e80585ef5
5 changed files with 135 additions and 17 deletions
|
@ -33,11 +33,12 @@ from .rpc import JSONRPC
|
|||
|
||||
class Daemon(object):
|
||||
|
||||
def __init__(self, protocol='http', host='127.0.0.1', port=0, idx=0, restricted_rpc = False):
|
||||
def __init__(self, protocol='http', host='127.0.0.1', port=0, idx=0, restricted_rpc = False, username=None, password=None):
|
||||
base = 18480 if restricted_rpc else 18180
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.rpc = JSONRPC('{protocol}://{host}:{port}'.format(protocol=protocol, host=host, port=port if port else base+idx))
|
||||
self.rpc = JSONRPC('{protocol}://{host}:{port}'.format(protocol=protocol, host=host, port=port if port else base+idx),
|
||||
username, password)
|
||||
|
||||
def getblocktemplate(self, address, prev_block = "", client = ""):
|
||||
getblocktemplate = {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import requests
|
||||
from requests.auth import HTTPDigestAuth
|
||||
import json
|
||||
|
||||
class Response(dict):
|
||||
|
@ -60,14 +61,17 @@ class Response(dict):
|
|||
return True
|
||||
|
||||
class JSONRPC(object):
|
||||
def __init__(self, url):
|
||||
def __init__(self, url, username=None, password=None):
|
||||
self.url = url
|
||||
self.username = username
|
||||
self.password = password
|
||||
|
||||
def send_request(self, path, inputs, result_field = None):
|
||||
res = requests.post(
|
||||
self.url + path,
|
||||
data=json.dumps(inputs),
|
||||
headers={'content-type': 'application/json'})
|
||||
headers={'content-type': 'application/json'},
|
||||
auth=HTTPDigestAuth(self.username, self.password) if self.username is not None else None)
|
||||
res = res.json()
|
||||
|
||||
assert 'error' not in res, res
|
||||
|
|
|
@ -33,10 +33,11 @@ from .rpc import JSONRPC
|
|||
|
||||
class Wallet(object):
|
||||
|
||||
def __init__(self, protocol='http', host='127.0.0.1', port=0, idx=0):
|
||||
def __init__(self, protocol='http', host='127.0.0.1', port=0, idx=0, username=None, password=None):
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.rpc = JSONRPC('{protocol}://{host}:{port}'.format(protocol=protocol, host=host, port=port if port else 18090+idx))
|
||||
self.rpc = JSONRPC('{protocol}://{host}:{port}'.format(protocol=protocol, host=host,
|
||||
port=port if port else 18090+idx), username, password)
|
||||
|
||||
def transfer(self, destinations, account_index = 0, subaddr_indices = [], priority = 0, ring_size = 0, unlock_time = 0, payment_id = '', get_tx_key = True, do_not_relay = False, get_tx_hex = False, get_tx_metadata = False, subtract_fee_from_outputs = []):
|
||||
transfer = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue