# 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