cic-stack/apps/cic-ussd/tests/cic_ussd/metadata/test_base.py
2021-08-06 16:29:01 +00:00

45 lines
1.9 KiB
Python

# standard imports
import json
import os
# external imports
import requests_mock
from chainlib.hash import strip_0x
from cic_types.processor import generate_metadata_pointer
# local imports
from cic_ussd.metadata.base import MetadataRequestsHandler
# external imports
def test_metadata_requests_handler(activated_account,
init_cache,
load_config,
person_metadata,
setup_metadata_request_handler,
setup_metadata_signer):
identifier = bytes.fromhex(strip_0x(activated_account.blockchain_address))
cic_type = ':cic.person'
metadata_client = MetadataRequestsHandler(cic_type, identifier)
assert metadata_client.cic_type == cic_type
assert metadata_client.engine == 'pgp'
assert metadata_client.identifier == identifier
assert metadata_client.metadata_pointer == generate_metadata_pointer(identifier, cic_type)
assert metadata_client.url == os.path.join(load_config.get('CIC_META_URL'), metadata_client.metadata_pointer)
with requests_mock.Mocker(real_http=False) as request_mocker:
request_mocker.register_uri('POST', metadata_client.url, status_code=200, reason='OK', json=person_metadata)
person_metadata['digest'] = os.urandom(20).hex()
request_mocker.register_uri('PUT', metadata_client.url, status_code=200, reason='OK', json=person_metadata)
result = metadata_client.create(person_metadata)
assert result.json() == person_metadata
assert result.status_code == 200
person_metadata.pop('digest')
request_mocker.register_uri('GET', metadata_client.url, status_code=200, reason='OK', json=person_metadata)
result = metadata_client.query()
assert result == person_metadata
cached_metadata = metadata_client.get_cached_metadata()
assert json.loads(cached_metadata) == person_metadata