Source code for microraiden.test.test_rest_api

import pytest # noqa
import requests
import json
import gevent

from eth_utils import is_same_address
from microraiden.constants import API_PATH
from microraiden.proxy.paywalled_proxy import PaywalledProxy


[docs]def test_resources(doggo_proxy, api_endpoint_address, users_db): auth_credentials = ('user', 'password') users_db.add_user(auth_credentials[0], auth_credentials[1]) users_db.token_expiry_seconds = 0.5 api_path = "http://" + api_endpoint_address + API_PATH # without auth, refuse access rv = requests.get(api_path + "/admin") assert rv.status_code == 401 # bad login rv = requests.get(api_path + "/login", auth=('user', 'bad_password')) assert rv.status_code == 401 # good login, we got the token rv = requests.get(api_path + "/login", auth=auth_credentials) assert rv.status_code == 200 json_response = json.loads(rv.text) assert 'token' in json_response token_credentials = (json_response['token'], '') # use the token to login rv = requests.get(api_path + "/admin", auth=token_credentials) assert rv.status_code == 200 # logout with an invalid token rv = requests.get(api_path + "/logout", auth=('invalid_token', '')) assert rv.status_code == 401 # logout with a valid token rv = requests.get(api_path + "/logout", auth=token_credentials) assert rv.status_code == 200 # after logout, refuse access rv = requests.get(api_path + "/admin", auth=token_credentials) assert rv.status_code == 401 # TODO: test token expiration. we must set token expiry timeout somehow # login again rv = requests.get(api_path + "/login", auth=auth_credentials) assert rv.status_code == 200 json_response = json.loads(rv.text) assert 'token' in json_response token_credentials = (json_response['token'], '') gevent.sleep(1) # use the token to login rv = requests.get(api_path + "/admin", auth=token_credentials) assert rv.status_code == 401
[docs]def test_stats(doggo_proxy: PaywalledProxy, api_endpoint_address): api_path = "http://" + api_endpoint_address + API_PATH rv = requests.get(api_path + "/stats") assert rv.status_code == 200 stats = json.loads(rv.text) assert 'balance_sum' in stats assert 'deposit_sum' in stats assert 'token_address' in stats assert 'receiver_address' in stats assert 'contract_address' in stats assert stats['sync_block'] == doggo_proxy.channel_manager.blockchain.sync_start_block assert is_same_address(stats['receiver_address'], doggo_proxy.channel_manager.receiver) token_address = doggo_proxy.channel_manager.token_contract.address assert is_same_address(stats['token_address'], token_address) contract_address = doggo_proxy.channel_manager.channel_manager_contract.address assert is_same_address(stats['contract_address'], contract_address)