Stoobly / stoobly-agent

Record, mock, and test HTTP/HTTPS requests. CLI agent for Stoobly.
Other
6 stars 0 forks source link

Error after running tests #70

Closed stoobmmelier closed 2 years ago

stoobmmelier commented 2 years ago

Version

stoobly-agent, version 0.14.2

Output of stoobly-agent test ...

INFO:root:GET http://localhost:8081/recent?limit=3
[{"spotify_id":"7rZ5VNIFZo8nC8XSSCvv7K","title":"Into the Sky","artists":["SawanoHiroyuki[nZk]:Tielle"],"played_at":"2022-07-27T08:17:31.056Z","Album":{"spotify_id":"3ncBgCOeYrUJ9hGmySHiUb","name":"2V-Alk"}},{"spotify_id":"7rZ5VNIFZo8nC8XSSCvv7K","title":"Into the Sky","artists":["SawanoHiroyuki[nZk]:Tielle"],"played_at":"2022-07-26T06:05:58.542Z","Album":{"spotify_id":"3ncBgCOeYrUJ9hGmySHiUb","name":"2V-Alk"}},{"spotify_id":"00IREbRMZctdMtu6vSBtdT","title":"パパパ","artists":["斉藤 朱夏"],"played_at":"2022-07-26T04:57:42.15Z","Album":{"spotify_id":"44Jbo1p4sZrPXoNE1ByTyl","name":"パッチワーク"}}]

Completed 200 in 363ms$

Test failed to run

Agent error log

127.0.0.1:33974: GET http://localhost:8081/recent?limit=3
              << 200 OK 618b
Addon error: Traceback (most recent call last):
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/intercept_handler.py", line 68, in response
    return handle_response_test(context)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/handle_test_service.py", line 31, in handle_response_test
    handle_request_mock_generic(
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/handle_mock_service.py", line 80, in handle_request_mock_generic
    res = handle_success(context) or res
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/handle_test_service.py", line 35, in <lambda>
    success=lambda mock_context: __handle_mock_success(TestContext(context, mock_context))
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/handle_test_service.py", line 49, in __handle_mock_success
    passed, log = test(test_context)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/test/test_service.py", line 43, in test
    response_matches, log = test_default(context, match_handlers)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/test/test_service.py", line 70, in test_default
    expected_content: FuzzyContent = context.rewritten_expected_response_content
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/test/context.py", line 150, in rewritten_expected_response_content
    rewrite_params(_decoded_expected_response_content, aliased_response_param_names, id_to_alias_map, alias_resolver)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/app/proxy/replay/rewrite_params_service.py", line 63, in rewrite_params
    jmespath.search(
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/jmespath.py", line 16, in search
    return jmespath.search(query, o, options)
  File "/home/user/.local/lib/python3.8/site-packages/jmespath/__init__.py", line 12, in search
    return parser.Parser().parse(expression).search(data, options=options)
  File "/home/user/.local/lib/python3.8/site-packages/jmespath/parser.py", line 509, in search
    result = interpreter.visit(self.parsed, value)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 105, in visit
    return method(node, *args, **kwargs)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 388, in visit_projection
    current = self.visit(child, element)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 105, in visit
    return method(node, *args, **kwargs)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 232, in visit_field
    self.on_visit_leaf(value, node['value']) # ADDED
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 193, in on_visit_leaf
    self.replace(obj, key)
  File "/home/user/.local/lib/python3.8/site-packages/stoobly_agent/lib/utils/visitor.py", line 212, in replace
    obj[key] = self.replacements[replacement_index]
TypeError: list indices must be integers or slices, not NoneType

Then the test report gets marked as passing

Jvlythical commented 2 years ago

I suspect it's caused by: https://github.com/Stoobly/stoobly-agent/blob/969ed950ad60c148f39e9d668cb90eefe7d7779e/stoobly_agent/app/proxy/replay/rewrite_params_service.py#L18