Closed gruyaume closed 2 months ago
And trying to use the "certificate_expired" string does not work either (for a different reason):
state_out = self.ctx.run("secret_expired", state_in)
Traceback (most recent call last):
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/runtime.py", line 448, in exec
yield ops
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 637, in _run
yield ops
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 521, in _run_event
yield ops
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 551, in run
ops.emit()
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/ops_main_mock.py", line 218, in emit
_emit_charm_event(charm, dispatcher.event_name, self.event)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/ops_main_mock.py", line 78, in _emit_charm_event
args, kwargs = _get_event_args(charm, event_to_emit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/ops/main.py", line 173, in _get_event_args
os.environ['JUJU_SECRET_ID'],
~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "<frozen os>", line 685, in __getitem__
KeyError: 'JUJU_SECRET_ID'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
result: Optional[TResult] = func()
^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/runner.py", line 241, in <lambda>
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook
yield
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook
yield
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/logging.py", line 833, in _runtest_for
yield
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/capture.py", line 878, in pytest_runtest_call
return (yield)
^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
return (yield)
^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/runner.py", line 183, in pytest_runtest_call
raise e
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/runner.py", line 173, in pytest_runtest_call
item.runtest()
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/python.py", line 1632, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall
return outcome.get_result()
^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result
raise exc.with_traceback(exc.__traceback__)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/_pytest/python.py", line 162, in pytest_pyfunc_call
result = testfunction(**testargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/tests/unit/charms/tls_certificates_interface/v4/test_tls_certificates_v4_requires.py", line 553, in test_given_certificate_when_certificate_secret_expires_then_new_certificate_is_requested
state_out = self.ctx.run("secret_expired", state_in)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 547, in run
with self._run_event(event=event, state=state) as ops:
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 520, in _run_event
with self._run(event=_event, state=state) as ops:
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/context.py", line 632, in _run
with runtime.exec(
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/home/guillaume/code/tls-certificates-interface/.tox/unit/lib/python3.12/site-packages/scenario/runtime.py", line 456, in exec
raise UncaughtCharmError(
scenario.runtime.UncaughtCharmError: Uncaught exception (<class 'KeyError'>) in operator/charm code: KeyError('JUJU_SECRET_ID')
Thank you for the quick fix!
Description
I am getting
NoObserverError
when trying to expired secret events.Library code
Scenario code
Logs
Possible root cause
The event path is
secret_expire
instead ofsecret_expired
.Reference: