81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
|
# standard imports
|
||
|
import json
|
||
|
|
||
|
# third-party imports
|
||
|
import pytest
|
||
|
import requests
|
||
|
import requests_mock
|
||
|
|
||
|
# local imports
|
||
|
from cic_ussd.error import UnsupportedMethodError
|
||
|
from cic_ussd.metadata import blockchain_address_to_metadata_pointer, make_request
|
||
|
|
||
|
|
||
|
def test_make_request(define_metadata_pointer_url, mock_meta_get_response, mock_meta_post_response, person_metadata):
|
||
|
with requests_mock.Mocker(real_http=False) as request_mocker:
|
||
|
request_mocker.register_uri(
|
||
|
'GET',
|
||
|
define_metadata_pointer_url,
|
||
|
status_code=200,
|
||
|
reason='OK',
|
||
|
content=json.dumps(mock_meta_get_response).encode('utf-8')
|
||
|
)
|
||
|
response = make_request(method='GET', url=define_metadata_pointer_url)
|
||
|
assert response.content == requests.get(define_metadata_pointer_url).content
|
||
|
|
||
|
with requests_mock.Mocker(real_http=False) as request_mocker:
|
||
|
request_mocker.register_uri(
|
||
|
'POST',
|
||
|
define_metadata_pointer_url,
|
||
|
status_code=201,
|
||
|
reason='CREATED',
|
||
|
content=json.dumps(mock_meta_post_response).encode('utf-8')
|
||
|
)
|
||
|
response = make_request(
|
||
|
method='POST',
|
||
|
url=define_metadata_pointer_url,
|
||
|
data=json.dumps(person_metadata).encode('utf-8'),
|
||
|
headers={
|
||
|
'X-CIC-AUTOMERGE': 'server',
|
||
|
'Content-Type': 'application/json'
|
||
|
}
|
||
|
)
|
||
|
assert response.content == requests.post(define_metadata_pointer_url).content
|
||
|
|
||
|
with requests_mock.Mocker(real_http=False) as request_mocker:
|
||
|
request_mocker.register_uri(
|
||
|
'PUT',
|
||
|
define_metadata_pointer_url,
|
||
|
status_code=200,
|
||
|
reason='OK'
|
||
|
)
|
||
|
response = make_request(
|
||
|
method='PUT',
|
||
|
url=define_metadata_pointer_url,
|
||
|
data=json.dumps(person_metadata).encode('utf-8'),
|
||
|
headers={
|
||
|
'X-CIC-AUTOMERGE': 'server',
|
||
|
'Content-Type': 'application/json'
|
||
|
}
|
||
|
)
|
||
|
assert response.content == requests.put(define_metadata_pointer_url).content
|
||
|
|
||
|
with pytest.raises(UnsupportedMethodError) as error:
|
||
|
with requests_mock.Mocker(real_http=False) as request_mocker:
|
||
|
request_mocker.register_uri(
|
||
|
'DELETE',
|
||
|
define_metadata_pointer_url,
|
||
|
status_code=200,
|
||
|
reason='OK'
|
||
|
)
|
||
|
make_request(
|
||
|
method='DELETE',
|
||
|
url=define_metadata_pointer_url
|
||
|
)
|
||
|
assert str(error.value) == 'Unsupported method: DELETE'
|
||
|
|
||
|
|
||
|
def test_blockchain_address_to_metadata_pointer(create_activated_user):
|
||
|
blockchain_address = create_activated_user.blockchain_address
|
||
|
assert type(blockchain_address_to_metadata_pointer(blockchain_address)) == bytes
|