def test_get_for_json_body_required(): """ Verify that an HTTP POST body containing JSON is loaded correctly. """ req = Request.blank('/provenance/DE/view/list-dir') req.method = 'POST' req.body = '{ "uuid": "7872424154123412", "service_name" : "DWAAWA", ' + \ '"category_name": "view", "event_name": "list-root-dir", ' + \ '"username": "******" }' req.remote_addr = '10.0.6.50' req.environ['CONTENT_LENGTH'] = str(len(req.body)) req.environ['CONTENT_TYPE'] = 'application/json' # load the body and see if it's "valid" JSON json.loads(req.body) prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None assert prov.created_date is not None assert prov.uuid == '7872424154123412' assert prov.service_name == 'DWAAWA' assert prov.category_name == 'view' assert prov.event_name == 'list-root-dir' assert prov.username == 'rhunter' assert prov.request_ipaddress == '10.0.6.50' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None req.body = '{ "uuid": "7872424154123412", "service_name" : "DWAAWA", ' + \ '"category_name": "view", "event_name": "list-root-dir", ' + \ '"username": "******", "proxy_username": "******", ' + \ '"event_data": "skull%20squadron%20forever", "version": "1.0" }' req.environ['CONTENT_LENGTH'] = str(len(req.body)) # load the body and see if it's "valid" JSON json.loads(req.body) prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None # webob.Request isn't URL decoding the JSON data, so we expect %20's/etc. assert prov.event_data == 'skull%20squadron%20forever' assert prov.version == '1.0' assert prov.proxy_username == 'de-irods'
def test_get_for_form_encoded_without_uuid(): """ Verify tuple construction when body is form-urlencoded without a ``uuid`` value. """ req = Request.blank('/provenance/DE/view/list-dir') req.method = 'POST' req.body = 'service_name=DE&category_name=view&event_name=list-dir&' + \ 'username=lenards&service_object_id=650&object_name=fileb' + \ '&object_desc=a%20really%20useful%20file' req.remote_addr = '10.0.6.50' req.environ['CONTENT_LENGTH'] = str(len(req.body)) req.environ['CONTENT_TYPE'] = 'application/x-www-form-urlencoded' prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None assert prov.uuid is None assert prov.service_name == 'DE' assert prov.category_name == 'view' assert prov.event_name == 'list-dir' assert prov.username == 'lenards' assert prov.request_ipaddress == '10.0.6.50' assert prov.object_name == 'fileb' assert prov.object_desc == 'a really useful file' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None req.body = 'service_name=DE&category_name=view&event_name=list-dir&' + \ 'username=lenards&service_object_id=650&object_name=fileb' + \ '&object_desc=a%20really%20useful%20file&parent_uuid=' + \ '898989898989898987' req.environ['CONTENT_LENGTH'] = str(len(req.body)) prov, json_data, webstatus = _get_post_body(req) assert prov.uuid is None assert prov.parent_uuid == '898989898989898987' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None
def test_get_for_form_encoded_with_missing_key(): """ Verify that a key error is thrown when a required value is missing from the HTTP POST body. """ req = Request.blank('/provenance/DE/view/list-dir') req.method = 'POST' req.body = 'uuid=89797989898989&service_name__=DE&category_name=view' + \ '&event_name=list-dir&username=lenards&protoculture=true' # note that "extra data", like the above ``protoculture`` will just # be ignored by the ``_get_post_body()`` method. req.environ['CONTENT_LENGTH'] = str(len(req.body)) req.environ['CONTENT_TYPE'] = 'application/x-www-form-urlencoded' prov, json_data, webstatus = _get_post_body(req)
def test_get_for_form_encoding_with_uuid(): """ Verify that an HTTP POST with form-encoded creates correct tuple... We're Look at the docstring for ``ProvTuple`` in the ``provenance_agent`` module for the required attributes and optional attributes. """ req = Request.blank('/provenance/DE/view/list-dir') req.method = 'POST' req.body = 'uuid=89797989898989&service_name=DE&category_name=view' + \ '&event_name=list-dir&username=lenards' req.remote_addr = '10.0.6.50' req.environ['CONTENT_LENGTH'] = str(len(req.body)) req.environ['CONTENT_TYPE'] = 'application/x-www-form-urlencoded' prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None assert prov.created_date is not None assert prov.uuid == '89797989898989' assert prov.service_name == 'DE' assert prov.category_name == 'view' assert prov.event_name == 'list-dir' assert prov.username == 'lenards' assert prov.request_ipaddress == '10.0.6.50' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None req.body = 'uuid=89797989898989&service_name=DE&category_name=view' + \ '&event_name=list-dir&username=lenards&' + \ 'proxy_username=de-irods&event_data=%20%20hjhkjhkjhkjhkjhk' + \ '&version=1.0' req.environ['CONTENT_LENGTH'] = str(len(req.body)) prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None assert prov.uuid == '89797989898989' assert prov.service_name == 'DE' assert prov.category_name == 'view' assert prov.event_name == 'list-dir' assert prov.username == 'lenards' assert prov.request_ipaddress == '10.0.6.50' assert prov.version == '1.0' assert prov.proxy_username == 'de-irods' assert prov.event_data == ' hjhkjhkjhkjhkjhk' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None req.body = 'uuid=89797989898989&service_name=DE&category_name=view' + \ '&event_name=list-dir&username=lenards&' + \ 'proxy_username=de-irods&event_data=%20%20hjhkjhkjhkjhkjhk' + \ '&version=1.0&track_history=1&track_history_code=' + \ '9031954fc3a2afd8f0943972a6d4bba2' req.environ['CONTENT_LENGTH'] = str(len(req.body)) prov, json_data, webstatus = _get_post_body(req) print json_data print webstatus assert prov is not None assert prov.track_history == '1' assert prov.track_history_code == '9031954fc3a2afd8f0943972a6d4bba2' # We expect that ``json_data`` & ``webstatus`` will be ``None`` assert json_data is None assert webstatus is None