PR #1219 #3555
884 tests run, 798 passed, 6 skipped, 80 failed.
Annotations
Check failure on line 186 in app/tests/e2e/test_tenants.py
github-actions / JUnit Test Report
test_tenants.test_create_tenant_issuer
fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7ba40>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'group_id': 'TestGroup', 'image_url': 'https://image.ca', 'roles': ['issuer'], 'wallet_label': '0a58a3096f1849809e56d4a1e099d65d'}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
tenant_admin_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7ba40>
tenant_admin_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f61e1d7bec0>
governance_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f61e1d6b050>
@pytest.mark.anyio
@pytest.mark.skipif(
TestMode.regression_run in TestMode.fixture_params,
reason=skip_regression_test_reason,
)
async def test_create_tenant_issuer(
tenant_admin_client: RichAsyncClient,
tenant_admin_acapy_client: AcaPyClient,
governance_acapy_client: AcaPyClient,
):
wallet_label = uuid4().hex
> response = await tenant_admin_client.post(
TENANTS_BASE_PATH,
json={
"image_url": "https://image.ca",
"wallet_label": wallet_label,
"roles": ["issuer"],
"group_id": group_id,
},
)
app/tests/e2e/test_tenants.py:186:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7ba40>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_bbs.py
github-actions / JUnit Test Report
test_ld_proof_did_key_bbs.test_send_jsonld_key_bbs[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e593df2f0>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'alias': 'AliceFaberConnection', 'their_public_did': 'did:sov:L47MKM6MMmdKb5SSRdNxcg'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3AL47MKM6MMmdKb5SSRdNxcg&alias=AliceFaberConnection'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_and_alice_connection' for <Function test_send_jsonld_key_bbs[clean-clean-clean]>>
args = ()
kwargs = {'alice_member_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e593df2f0>, 'faber_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58378dd0>, 'test_mode': 'clean'}
local_func = <function faber_and_alice_connection at 0x7f0e6072f2e0>
backend_name = 'asyncio', backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f0e58ff9070>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
yield from runner.run_asyncgen_fixture(local_func, kwargs)
else:
> yield runner.run_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2300: in run_fixture
retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_connections.py:46: in faber_and_alice_connection
bob_alice_connection = await create_connection_by_test_mode(
app/tests/util/connections.py:202: in create_connection_by_test_mode
return await create_did_exchange(
app/tests/util/connections.py:321: in create_did_exchange
await alice_member_client.post(
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e593df2f0>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...alias=AliceFaberConnection'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_bbs.py
github-actions / JUnit Test Report
test_ld_proof_did_key_bbs.test_send_jsonld_request[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58385d30>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'alias': 'AliceFaberConnection', 'their_public_did': 'did:sov:L47MKM6MMmdKb5SSRdNxcg'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3AL47MKM6MMmdKb5SSRdNxcg&alias=AliceFaberConnection'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_and_alice_connection' for <Function test_send_jsonld_request[clean-clean-clean]>>
args = ()
kwargs = {'alice_member_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58385d30>, 'faber_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58378dd0>, 'test_mode': 'clean'}
local_func = <function faber_and_alice_connection at 0x7f0e6072f2e0>
backend_name = 'asyncio', backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f0e58ff9070>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
yield from runner.run_asyncgen_fixture(local_func, kwargs)
else:
> yield runner.run_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2300: in run_fixture
retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_connections.py:46: in faber_and_alice_connection
bob_alice_connection = await create_connection_by_test_mode(
app/tests/util/connections.py:202: in create_connection_by_test_mode
return await create_did_exchange(
app/tests/util/connections.py:321: in create_did_exchange
await alice_member_client.post(
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58385d30>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...alias=AliceFaberConnection'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_bbs.py
github-actions / JUnit Test Report
test_ld_proof_did_key_bbs.test_issue_jsonld_bbs[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e59366570>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'alias': 'AliceFaberConnection', 'their_public_did': 'did:sov:L47MKM6MMmdKb5SSRdNxcg'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3AL47MKM6MMmdKb5SSRdNxcg&alias=AliceFaberConnection'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_and_alice_connection' for <Function test_issue_jsonld_bbs[clean-clean-clean]>>
args = ()
kwargs = {'alice_member_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e59366570>, 'faber_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58378dd0>, 'test_mode': 'clean'}
local_func = <function faber_and_alice_connection at 0x7f0e6072f2e0>
backend_name = 'asyncio', backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f0e58ff9070>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
yield from runner.run_asyncgen_fixture(local_func, kwargs)
else:
> yield runner.run_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2300: in run_fixture
retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_connections.py:46: in faber_and_alice_connection
bob_alice_connection = await create_connection_by_test_mode(
app/tests/util/connections.py:202: in create_connection_by_test_mode
return await create_did_exchange(
app/tests/util/connections.py:321: in create_did_exchange
await alice_member_client.post(
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e59366570>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...alias=AliceFaberConnection'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 76 in app/tests/e2e/test_did_exchange.py
github-actions / JUnit Test Report
test_did_exchange.test_create_did_exchange_request[clean-clean-None-None-False]
fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b1b3b0>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'their_public_did': 'did:sov:7pC3r1dzKcPoe2GQ1y6NDZ'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3A7pC3r1dzKcPoe2GQ1y6NDZ'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
alice_member_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b1b3b0>
faber_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b18470>
alice_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f1569b19310>
faber_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f1569b1b1d0>
use_did = None, use_did_method = None, use_public_did = False
@pytest.mark.anyio
@pytest.mark.parametrize(
"use_did,use_did_method,use_public_did",
[
(None, None, False),
(True, None, False),
(None, "did:peer:2", False),
(None, "did:peer:4", False),
(True, "did:peer:4", False),
(None, None, True),
],
)
async def test_create_did_exchange_request(
alice_member_client: RichAsyncClient,
faber_client: RichAsyncClient,
alice_acapy_client: AcaPyClient,
faber_acapy_client: AcaPyClient,
use_did: Optional[str],
use_did_method: Optional[str],
use_public_did: bool,
):
faber_public_did = await acapy_wallet.get_public_did(controller=faber_acapy_client)
request_data = {"their_public_did": qualified_did_sov(faber_public_did.did)}
if use_did:
new_did = await acapy_wallet.create_did(controller=alice_acapy_client)
request_data["use_did"] = new_did.did
if use_did_method:
request_data["use_did_method"] = use_did_method
if use_public_did:
request_data["use_public_did"] = use_public_did
if use_public_did: # Alice doesn't have a public DID
with pytest.raises(HTTPException) as exc_info:
response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert exc_info.value.detail == """{"detail":"No public DID configured."}"""
elif use_did and use_did_method:
with pytest.raises(HTTPException) as exc_info:
await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert (
exc_info.value.detail
== """{"detail":"Cannot specify both use_did and use_did_method."}"""
)
else:
> response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request", params=request_data
)
app/tests/e2e/test_did_exchange.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b1b3b0>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...v%3A7pC3r1dzKcPoe2GQ1y6NDZ'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_bbs.py
github-actions / JUnit Test Report
test_ld_proof_did_key_bbs.test_send_jsonld_mismatch_sov_bbs[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58f6ac60>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'alias': 'AliceFaberConnection', 'their_public_did': 'did:sov:L47MKM6MMmdKb5SSRdNxcg'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3AL47MKM6MMmdKb5SSRdNxcg&alias=AliceFaberConnection'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_and_alice_connection' for <Function test_send_jsonld_mismatch_sov_bbs[clean-clean-clean]>>
args = ()
kwargs = {'alice_member_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58f6ac60>, 'faber_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58378dd0>, 'test_mode': 'clean'}
local_func = <function faber_and_alice_connection at 0x7f0e6072f2e0>
backend_name = 'asyncio', backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f0e58ff9070>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
yield from runner.run_asyncgen_fixture(local_func, kwargs)
else:
> yield runner.run_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2300: in run_fixture
retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_connections.py:46: in faber_and_alice_connection
bob_alice_connection = await create_connection_by_test_mode(
app/tests/util/connections.py:202: in create_connection_by_test_mode
return await create_did_exchange(
app/tests/util/connections.py:321: in create_did_exchange
await alice_member_client.post(
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58f6ac60>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...alias=AliceFaberConnection'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 76 in app/tests/e2e/test_did_exchange.py
github-actions / JUnit Test Report
test_did_exchange.test_create_did_exchange_request[clean-clean-True-None-False]
fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b31670>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'their_public_did': 'did:sov:7pC3r1dzKcPoe2GQ1y6NDZ', 'use_did': 'ED5Ea532m5kKqCh2S68mYE'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3A7pC3r1dzKcPoe2GQ1y6NDZ&use_did=ED5Ea532m5kKqCh2S68mYE'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
alice_member_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b31670>
faber_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b18470>
alice_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f1569b318e0>
faber_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f1569b31730>
use_did = True, use_did_method = None, use_public_did = False
@pytest.mark.anyio
@pytest.mark.parametrize(
"use_did,use_did_method,use_public_did",
[
(None, None, False),
(True, None, False),
(None, "did:peer:2", False),
(None, "did:peer:4", False),
(True, "did:peer:4", False),
(None, None, True),
],
)
async def test_create_did_exchange_request(
alice_member_client: RichAsyncClient,
faber_client: RichAsyncClient,
alice_acapy_client: AcaPyClient,
faber_acapy_client: AcaPyClient,
use_did: Optional[str],
use_did_method: Optional[str],
use_public_did: bool,
):
faber_public_did = await acapy_wallet.get_public_did(controller=faber_acapy_client)
request_data = {"their_public_did": qualified_did_sov(faber_public_did.did)}
if use_did:
new_did = await acapy_wallet.create_did(controller=alice_acapy_client)
request_data["use_did"] = new_did.did
if use_did_method:
request_data["use_did_method"] = use_did_method
if use_public_did:
request_data["use_public_did"] = use_public_did
if use_public_did: # Alice doesn't have a public DID
with pytest.raises(HTTPException) as exc_info:
response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert exc_info.value.detail == """{"detail":"No public DID configured."}"""
elif use_did and use_did_method:
with pytest.raises(HTTPException) as exc_info:
await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert (
exc_info.value.detail
== """{"detail":"Cannot specify both use_did and use_did_method."}"""
)
else:
> response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request", params=request_data
)
app/tests/e2e/test_did_exchange.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b31670>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...did=ED5Ea532m5kKqCh2S68mYE'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_bbs.py
github-actions / JUnit Test Report
test_ld_proof_did_key_bbs.test_send_jsonld_mismatch_bbs_ed[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58384d40>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'alias': 'AliceFaberConnection', 'their_public_did': 'did:sov:L47MKM6MMmdKb5SSRdNxcg'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3AL47MKM6MMmdKb5SSRdNxcg&alias=AliceFaberConnection'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_and_alice_connection' for <Function test_send_jsonld_mismatch_bbs_ed[clean-clean-clean]>>
args = ()
kwargs = {'alice_member_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58384d40>, 'faber_client': <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58378dd0>, 'test_mode': 'clean'}
local_func = <function faber_and_alice_connection at 0x7f0e6072f2e0>
backend_name = 'asyncio', backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f0e58ff9070>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
yield from runner.run_asyncgen_fixture(local_func, kwargs)
else:
> yield runner.run_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2300: in run_fixture
retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_connections.py:46: in faber_and_alice_connection
bob_alice_connection = await create_connection_by_test_mode(
app/tests/util/connections.py:202: in create_connection_by_test_mode
return await create_did_exchange(
app/tests/util/connections.py:321: in create_did_exchange
await alice_member_client.post(
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f0e58384d40>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec...alias=AliceFaberConnection'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:L47MKM6MMmdKb5SSRdNxcg: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 76 in app/tests/e2e/test_did_exchange.py
github-actions / JUnit Test Report
test_did_exchange.test_create_did_exchange_request[clean-clean-None-did:peer:2-False]
fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab27d70>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'their_public_did': 'did:sov:7pC3r1dzKcPoe2GQ1y6NDZ', 'use_did_method': 'did:peer:2'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3A7pC3r1dzKcPoe2GQ1y6NDZ&use_did_method=did%3Apeer%3A2'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
alice_member_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab27d70>
faber_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b18470>
alice_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f1569f3a690>
faber_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f156ab275f0>
use_did = None, use_did_method = 'did:peer:2', use_public_did = False
@pytest.mark.anyio
@pytest.mark.parametrize(
"use_did,use_did_method,use_public_did",
[
(None, None, False),
(True, None, False),
(None, "did:peer:2", False),
(None, "did:peer:4", False),
(True, "did:peer:4", False),
(None, None, True),
],
)
async def test_create_did_exchange_request(
alice_member_client: RichAsyncClient,
faber_client: RichAsyncClient,
alice_acapy_client: AcaPyClient,
faber_acapy_client: AcaPyClient,
use_did: Optional[str],
use_did_method: Optional[str],
use_public_did: bool,
):
faber_public_did = await acapy_wallet.get_public_did(controller=faber_acapy_client)
request_data = {"their_public_did": qualified_did_sov(faber_public_did.did)}
if use_did:
new_did = await acapy_wallet.create_did(controller=alice_acapy_client)
request_data["use_did"] = new_did.did
if use_did_method:
request_data["use_did_method"] = use_did_method
if use_public_did:
request_data["use_public_did"] = use_public_did
if use_public_did: # Alice doesn't have a public DID
with pytest.raises(HTTPException) as exc_info:
response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert exc_info.value.detail == """{"detail":"No public DID configured."}"""
elif use_did and use_did_method:
with pytest.raises(HTTPException) as exc_info:
await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert (
exc_info.value.detail
== """{"detail":"Cannot specify both use_did and use_did_method."}"""
)
else:
> response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request", params=request_data
)
app/tests/e2e/test_did_exchange.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab27d70>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec..._did_method=did%3Apeer%3A2'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 76 in app/tests/e2e/test_did_exchange.py
github-actions / JUnit Test Report
test_did_exchange.test_create_did_exchange_request[clean-clean-None-did:peer:4-False]
fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab25910>
method = 'post', url = '/v1/connections/did-exchange/create-request'
kwargs = {'params': {'their_public_did': 'did:sov:7pC3r1dzKcPoe2GQ1y6NDZ', 'use_did_method': 'did:peer:4'}}
attempt = 0, response = <Response [400 Bad Request]>, code = 400
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [400 Bad Request]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connections/did-exchange/create-request?their_public_did=did%3Asov%3A7pC3r1dzKcPoe2GQ1y6NDZ&use_did_method=did%3Apeer%3A4'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
alice_member_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab25910>
faber_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f1569b18470>
alice_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f156ab27260>
faber_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f156ab27980>
use_did = None, use_did_method = 'did:peer:4', use_public_did = False
@pytest.mark.anyio
@pytest.mark.parametrize(
"use_did,use_did_method,use_public_did",
[
(None, None, False),
(True, None, False),
(None, "did:peer:2", False),
(None, "did:peer:4", False),
(True, "did:peer:4", False),
(None, None, True),
],
)
async def test_create_did_exchange_request(
alice_member_client: RichAsyncClient,
faber_client: RichAsyncClient,
alice_acapy_client: AcaPyClient,
faber_acapy_client: AcaPyClient,
use_did: Optional[str],
use_did_method: Optional[str],
use_public_did: bool,
):
faber_public_did = await acapy_wallet.get_public_did(controller=faber_acapy_client)
request_data = {"their_public_did": qualified_did_sov(faber_public_did.did)}
if use_did:
new_did = await acapy_wallet.create_did(controller=alice_acapy_client)
request_data["use_did"] = new_did.did
if use_did_method:
request_data["use_did_method"] = use_did_method
if use_public_did:
request_data["use_public_did"] = use_public_did
if use_public_did: # Alice doesn't have a public DID
with pytest.raises(HTTPException) as exc_info:
response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert exc_info.value.detail == """{"detail":"No public DID configured."}"""
elif use_did and use_did_method:
with pytest.raises(HTTPException) as exc_info:
await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request",
params=request_data,
)
assert exc_info.value.status_code == 400
assert (
exc_info.value.detail
== """{"detail":"Cannot specify both use_did and use_did_method."}"""
)
else:
> response = await alice_member_client.post(
f"{CONNECTIONS_BASE_PATH}/did-exchange/create-request", params=request_data
)
app/tests/e2e/test_did_exchange.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f156ab25910>
e = HTTPStatusError("Client error '400 Bad Request' for url 'https://tenant-web.cloudapi.dev.didxtech.com/tenant/v1/connec..._did_method=did%3Apeer%3A4'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400")
url = '/v1/connections/did-exchange/create-request', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 400: {"detail":"Failed to resolve DIDComm services from did:sov:7pC3r1dzKcPoe2GQ1y6NDZ: Cannot connect via DID that has no associated services. Cannot connect via DID that has no associated services."}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 402 in app/tests/e2e/test_tenants.py
github-actions / JUnit Test Report
test_tenants.test_update_tenant_verifier_to_issuer
fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7d700>
method = 'put'
url = '/v1/tenants/7b9ec8ba-6c65-4785-8815-a6db00db996a?group_id=TestGroup'
kwargs = {'json': {'image_url': 'https://some-ssi-site.org/image.png', 'roles': ['issuer', 'verifier'], 'wallet_label': '44934c2abe614a12aa992e5c5514482c'}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants/7b9ec8ba-6c65-4785-8815-a6db00db996a?group_id=TestGroup'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
tenant_admin_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7d700>
tenant_admin_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f61e1d7dd30>
governance_acapy_client = <aries_cloudcontroller.acapy_client.AcaPyClient object at 0x7f61e1d6b050>
@pytest.mark.anyio
@pytest.mark.skipif(
TestMode.regression_run in TestMode.fixture_params,
reason=skip_regression_test_reason,
)
async def test_update_tenant_verifier_to_issuer(
tenant_admin_client: RichAsyncClient,
tenant_admin_acapy_client: AcaPyClient,
governance_acapy_client: AcaPyClient,
):
wallet_label = uuid4().hex
image_url = "https://image.ca"
response = await tenant_admin_client.post(
TENANTS_BASE_PATH,
json={
"image_url": image_url,
"wallet_label": wallet_label,
"roles": ["verifier"],
"group_id": group_id,
},
)
verifier_tenant = response.json()
verifier_wallet_id = verifier_tenant["wallet_id"]
try:
verifier_actor = await trust_registry.fetch_actor_by_id(verifier_wallet_id)
assert verifier_actor
assert_that(verifier_actor).has_name(wallet_label)
assert_that(verifier_actor).has_roles(["verifier"])
wallet = await tenant_admin_acapy_client.multitenancy.get_wallet(
wallet_id=verifier_wallet_id
)
assert_that(wallet.settings["wallet.name"]).is_length(32)
acapy_token: str = verifier_tenant["access_token"].split(".", 1)[1]
async with get_tenant_controller(acapy_token) as tenant_controller:
connections = await tenant_controller.connection.get_connections(
alias=f"Trust Registry {wallet_label}"
)
connection = connections.results[0]
# Connection invitation
assert_that(connection).has_state("invitation")
assert_that(verifier_actor).has_did(
ed25519_verkey_to_did_key(connection.invitation_key)
)
# Tenant
assert_that(verifier_tenant).has_wallet_id(wallet.wallet_id)
assert_that(verifier_tenant).has_image_url(image_url)
assert_that(verifier_tenant).has_wallet_label(wallet_label)
assert_that(verifier_tenant).has_created_at(wallet.created_at)
assert_that(verifier_tenant).has_updated_at(wallet.updated_at)
new_wallet_label = uuid4().hex
new_image_url = "https://some-ssi-site.org/image.png"
new_roles = ["issuer", "verifier"]
json_request = {
"image_url": new_image_url,
"wallet_label": new_wallet_label,
"roles": new_roles,
}
# Attempting to update with incorrect wallet_id will fail with 404
with pytest.raises(HTTPException) as exc:
await tenant_admin_client.put(
f"{TENANTS_BASE_PATH}/bad_wallet_id", json=json_request
)
assert exc.value.status_code == 404
# Attempting to update with incorrect group_id will fail with 404
with pytest.raises(HTTPException) as exc:
await tenant_admin_client.put(
f"{TENANTS_BASE_PATH}/{verifier_wallet_id}?group_id=wrong_group",
json=json_request,
)
assert exc.value.status_code == 404
# Successful update with correct group
> update_response = await tenant_admin_client.put(
f"{TENANTS_BASE_PATH}/{verifier_wallet_id}?group_id={group_id}",
json=json_request,
)
app/tests/e2e/test_tenants.py:402:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:90: in put
return await self._request_with_retries("put", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f61e1d7d700>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/t...0db996a?group_id=TestGroup'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants/7b9ec8ba-6c65-4785-8815-a6db00db996a?group_id=TestGroup'
method = 'put'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/test_indy_credentials.py
github-actions / JUnit Test Report
test_indy_credentials.test_send_credential_oob[clean-clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f19c719f880>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f19c3972d20>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/test_indy_credentials.py
github-actions / JUnit Test Report
test_indy_credentials.test_send_credential[clean-clean-clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f19c719f880>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f19c3972d20>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_sov.py
github-actions / JUnit Test Report
test_ld_proof_did_sov.test_send_jsonld_credential_sov[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f9504b57100>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f94fd591be0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_ed25519.py
github-actions / JUnit Test Report
test_ld_proof_did_key_ed25519.test_send_jsonld_key_ed25519[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f97b35d1800>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f97af325820>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/test_indy_credentials.py
github-actions / JUnit Test Report
test_indy_credentials.test_send_credential_request[clean-clean-clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f19c719f880>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f19c3972d20>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_sov.py
github-actions / JUnit Test Report
test_ld_proof_did_sov.test_send_jsonld_oob_sov[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f9504b57100>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f94fd591be0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/test_definitions.py
github-actions / JUnit Test Report
test_definitions.test_create_credential_definition_issuer_tenant[clean-clean-False]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7ff2c25c4ef0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_create_credential_definition_issuer_tenant[clean-clean-False]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_create_credential_definition_issuer_tenant[clean-clean-False]>>}
local_func = <function faber_issuer at 0x7ff2c6c971a0>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7ff2c258dca0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7ff2c25c4ef0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_ed25519.py
github-actions / JUnit Test Report
test_ld_proof_did_key_ed25519.test_send_jsonld_request[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f97b35d1800>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f97af325820>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/test_indy_credentials.py
github-actions / JUnit Test Report
test_indy_credentials.test_create_offer[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f19c719f880>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f19c3972d20>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_sov.py
github-actions / JUnit Test Report
test_ld_proof_did_sov.test_send_jsonld_request_sov[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f9504b57100>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f94fd591be0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/test_definitions.py
github-actions / JUnit Test Report
test_definitions.test_create_credential_definition_issuer_tenant[clean-clean-True]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7ff2c25c4ef0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_create_credential_definition_issuer_tenant[clean-clean-False]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_create_credential_definition_issuer_tenant[clean-clean-False]>>}
local_func = <function faber_issuer at 0x7ff2c6c971a0>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7ff2c258dca0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7ff2c25c4ef0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_key_ed25519.py
github-actions / JUnit Test Report
test_ld_proof_did_key_ed25519.test_issue_jsonld_ed[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_key_ed25519[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f97b35d1800>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f97af325820>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f97b0775cd0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/test_indy_credentials.py
github-actions / JUnit Test Report
test_indy_credentials.test_revoke_credential[clean-clean-clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_credential_oob[clean-clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f19c719f880>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f19c3972d20>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f19c39429c0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException
Check failure on line 1 in app/tests/e2e/issuer/ld_proof/test_ld_proof_did_sov.py
github-actions / JUnit Test Report
test_ld_proof_did_sov.test_issue_jsonld_sov[clean-clean-clean]
failed on setup with "fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}"
Raw output
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
method = 'post', url = '/v1/tenants'
kwargs = {'json': {'extra_settings': None, 'group_id': 'IssuerGroup', 'image_url': None, 'roles': ['issuer'], ...}}
attempt = 0, response = <Response [500 Internal Server Error]>, code = 500
async def _request_with_retries(self, method: str, url: str, **kwargs) -> Response:
for attempt in range(self.retries):
try:
response = await getattr(super(), method)(url, **kwargs)
> return await self._handle_response(response)
shared/util/rich_async_client.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
shared/util/rich_async_client.py:50: in _handle_response
response.raise_for_status() # Raise exception for 4xx and 5xx status codes
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Response [500 Internal Server Error]>
def raise_for_status(self) -> Response:
"""
Raise the `HTTPStatusError` if one occurred.
"""
request = self._request
if request is None:
raise RuntimeError(
"Cannot call `raise_for_status` as the request "
"instance has not been set on this response."
)
if self.is_success:
return self
if self.has_redirect_location:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"Redirect location: '{0.headers[location]}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
else:
message = (
"{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}'\n"
"For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}"
)
status_class = self.status_code // 100
error_types = {
1: "Informational response",
3: "Redirect response",
4: "Client error",
5: "Server error",
}
error_type = error_types.get(status_class, "Invalid status code")
message = message.format(self, error_type=error_type)
> raise HTTPStatusError(message, request=request, response=self)
E httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'
E For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
/usr/local/lib/python3.12/site-packages/httpx/_models.py:829: HTTPStatusError
The above exception was the direct cause of the following exception:
anyio_backend = 'asyncio'
request = <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>
args = ()
kwargs = {'request': <SubRequest 'faber_issuer' for <Function test_send_jsonld_credential_sov[clean-clean-clean]>>}
local_func = <function faber_issuer at 0x7f9504b57100>, backend_name = 'asyncio'
backend_options = {}
runner = <anyio._backends._asyncio.TestRunner object at 0x7f94fd591be0>
def wrapper(
*args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any
) -> Any:
# Rebind any fixture methods to the request instance
if (
request.instance
and ismethod(func)
and type(func.__self__) is type(request.instance)
):
local_func = func.__func__.__get__(request.instance)
else:
local_func = func
backend_name, backend_options = extract_backend_and_options(anyio_backend)
if has_backend_arg:
kwargs["anyio_backend"] = anyio_backend
if has_request_arg:
kwargs["request"] = request
with get_runner(backend_name, backend_options) as runner:
if isasyncgenfunction(local_func):
> yield from runner.run_asyncgen_fixture(local_func, kwargs)
/usr/local/lib/python3.12/site-packages/anyio/pytest_plugin.py:98:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2278: in run_asyncgen_fixture
fixturevalue: T_Retval = self.get_loop().run_until_complete(
/usr/local/lib/python3.12/asyncio/base_events.py:686: in run_until_complete
return future.result()
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2270: in _call_in_runner_task
return await future
/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:2237: in _run_tests_and_fixtures
retval = await coro
app/tests/fixtures/member_wallets.py:83: in faber_issuer
issuer_tenant = await create_issuer_tenant(admin_client, "faber")
app/tests/util/tenants.py:26: in create_issuer_tenant
return await post_tenant_request(admin_client, request)
app/tests/util/tenants.py:16: in post_tenant_request
response = await admin_client.post(TENANT_BASE_PATH, json=request.model_dump())
shared/util/rich_async_client.py:81: in post
return await self._request_with_retries("post", url, **kwargs)
shared/util/rich_async_client.py:78: in _request_with_retries
await self._handle_error(e, url, method)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <shared.util.rich_async_client.RichAsyncClient object at 0x7f94fcd084d0>
e = HTTPStatusError("Server error '500 Internal Server Error' for url 'https://multitenant-web.cloudapi.dev.didxtech.com/tenant-admin/v1/tenants'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500")
url = '/v1/tenants', method = 'post'
async def _handle_error(self, e: HTTPStatusError, url: str, method: str) -> None:
code = e.response.status_code
message = e.response.text
log_message = (
f"{self.name} {method} `{url}` failed. "
f"Status code: {code}. Response: `{message}`."
)
logger.error(log_message)
> raise HTTPException(status_code=code, detail=message) from e
E fastapi.exceptions.HTTPException: 500: {"detail":"Error creating connection with endorser: "}
shared/util/rich_async_client.py:61: HTTPException