Update python-keycloak requirement from <=2.12.0,>=1.5.0 to >=1.5.0,<=3.7.0 #873
81 tests run, 66 passed, 5 skipped, 10 failed.
Annotations
Check failure on line 52 in tests/auth/test_api.py
github-actions / Test Report ubuntu-latest:3.10
test_api.test_get_users
AttributeError: 'NoneType' object has no attribute 'get'
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
keycloak_client = <keycloak.keycloak_admin.KeycloakAdmin object at 0x7f5a33ef94b0>
def test_get_users(client, keycloak_client):
api = AuthApi(client)
# create a new non-admin user
username = f"test_user_{uuid.uuid4()}"
new_user = User(
username=username,
password="test_auth_client",
email=f"{username}@test.com",
first_name="Test",
last_name="User",
)
new_user = create_user(keycloak_client, new_user)
assert new_user.first_name == "Test"
> users = api.get_users(max=10)
tests/auth/test_api.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:96: in get_users
return get_users(self.keycloak_admin_client, as_objects=as_objects, **query_params)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:199: in get_users
users = admin_client.get_users(query=query_params)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:696: in get_users
return self.__fetch_paginated(url, query)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:517: in __fetch_paginated
return raise_error_from_response(self.connection.raw_get(url, **query), KeycloakGetError)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a33d4ae90>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError
Check failure on line 41 in tests/jms/test_algorithms.py
github-actions / Test Report ubuntu-latest:3.10
test_algorithms
ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_algorithms(client):
log.debug("=== Client ===")
client = client
jms_api = JmsApi(client)
proj_name = f"rep_client_test_jms_AlgorithmsTest"
proj = Project(name=proj_name, active=True)
> proj = jms_api.create_project(proj, replace=True)
tests/jms/test_algorithms.py:41:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:120: in create_project
return create_project(self.client, self.url, project, replace, as_objects)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:334: in create_project
r = client.session.post(f"{url}", data=json_data)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:637: in post
return self.request("POST", url, data=data, json=json, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:589: in request
resp = self.send(prep, **send_kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:710: in send
r = dispatch_hook("response", hooks, r, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/hooks.py:30: in dispatch_hook
_hook_data = hook(hook_data, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [503]>, args = ()
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...}
r_content = {}, reason = 'Service Unavailable', description = None
error_msg = '503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all'
def raise_for_status(response, *args, **kwargs):
"""Automatically checks HTTP errors.
This method mimics the requests.Response.raise_for_status() method.
"""
if 400 <= response.status_code < 600:
r_content = {}
try:
r_content = response.json()
except ValueError:
pass
reason = r_content.get("title", None) # jms api
if not reason:
reason = r_content.get("error", None) # auth api
if not reason:
reason = response.reason
description = r_content.get("description", None) # jms api
if not description:
description = r_content.get("error_description", None) # auth api
if 400 <= response.status_code < 500:
error_msg = "%s Client Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
raise ClientError(error_msg, reason=reason, description=description, response=response)
elif 500 <= response.status_code < 600:
error_msg = "%s Server Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
> raise APIError(error_msg, reason=reason, description=description, response=response)
E ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/exceptions.py:105: APIError
Check failure on line 39 in tests/jms/test_files.py
github-actions / Test Report ubuntu-latest:3.10
test_files
ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_files(client):
jms_api = JmsApi(client)
> proj = jms_api.create_project(
Project(name=f"rep_client_test_jms_FilesTest", active=False), replace=True
)
tests/jms/test_files.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:120: in create_project
return create_project(self.client, self.url, project, replace, as_objects)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:334: in create_project
r = client.session.post(f"{url}", data=json_data)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:637: in post
return self.request("POST", url, data=data, json=json, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:589: in request
resp = self.send(prep, **send_kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:710: in send
r = dispatch_hook("response", hooks, r, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/hooks.py:30: in dispatch_hook
_hook_data = hook(hook_data, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [503]>, args = ()
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...}
r_content = {}, reason = 'Service Unavailable', description = None
error_msg = '503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all'
def raise_for_status(response, *args, **kwargs):
"""Automatically checks HTTP errors.
This method mimics the requests.Response.raise_for_status() method.
"""
if 400 <= response.status_code < 600:
r_content = {}
try:
r_content = response.json()
except ValueError:
pass
reason = r_content.get("title", None) # jms api
if not reason:
reason = r_content.get("error", None) # auth api
if not reason:
reason = response.reason
description = r_content.get("description", None) # jms api
if not description:
description = r_content.get("error_description", None) # auth api
if 400 <= response.status_code < 500:
error_msg = "%s Client Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
raise ClientError(error_msg, reason=reason, description=description, response=response)
elif 500 <= response.status_code < 600:
error_msg = "%s Server Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
> raise APIError(error_msg, reason=reason, description=description, response=response)
E ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/exceptions.py:105: APIError
Check failure on line 137 in tests/jms/test_files.py
github-actions / Test Report ubuntu-latest:3.10
test_files.test_download_file_in_subdir
ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_download_file_in_subdir(client):
jms_api = JmsApi(client)
> proj = jms_api.create_project(Project(name=f"rep_test_download_file_in_subdir", active=False))
tests/jms/test_files.py:137:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:120: in create_project
return create_project(self.client, self.url, project, replace, as_objects)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:334: in create_project
r = client.session.post(f"{url}", data=json_data)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:637: in post
return self.request("POST", url, data=data, json=json, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:589: in request
resp = self.send(prep, **send_kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:710: in send
r = dispatch_hook("response", hooks, r, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/hooks.py:30: in dispatch_hook
_hook_data = hook(hook_data, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [503]>, args = ()
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...}
r_content = {}, reason = 'Service Unavailable', description = None
error_msg = '503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all'
def raise_for_status(response, *args, **kwargs):
"""Automatically checks HTTP errors.
This method mimics the requests.Response.raise_for_status() method.
"""
if 400 <= response.status_code < 600:
r_content = {}
try:
r_content = response.json()
except ValueError:
pass
reason = r_content.get("title", None) # jms api
if not reason:
reason = r_content.get("error", None) # auth api
if not reason:
reason = response.reason
description = r_content.get("description", None) # jms api
if not description:
description = r_content.get("error_description", None) # auth api
if 400 <= response.status_code < 500:
error_msg = "%s Client Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
raise ClientError(error_msg, reason=reason, description=description, response=response)
elif 500 <= response.status_code < 600:
error_msg = "%s Server Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
> raise APIError(error_msg, reason=reason, description=description, response=response)
E ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/exceptions.py:105: APIError
Check failure on line 140 in tests/jms/test_fitness_definition.py
github-actions / Test Report ubuntu-latest:3.10
test_fitness_definition.test_fitness_definition_integration
ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_fitness_definition_integration(client):
proj_name = f"test_jms_FitnessDefinitionTest"
proj = Project(name=proj_name, active=True)
jms_api = JmsApi(client)
> proj = jms_api.create_project(proj, replace=True)
tests/jms/test_fitness_definition.py:140:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:120: in create_project
return create_project(self.client, self.url, project, replace, as_objects)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/jms/api/jms_api.py:334: in create_project
r = client.session.post(f"{url}", data=json_data)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:637: in post
return self.request("POST", url, data=data, json=json, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:589: in request
resp = self.send(prep, **send_kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/sessions.py:710: in send
r = dispatch_hook("response", hooks, r, **kwargs)
.tox/py310-coverage/lib/python3.10/site-packages/requests/hooks.py:30: in dispatch_hook
_hook_data = hook(hook_data, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [503]>, args = ()
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...}
r_content = {}, reason = 'Service Unavailable', description = None
error_msg = '503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all'
def raise_for_status(response, *args, **kwargs):
"""Automatically checks HTTP errors.
This method mimics the requests.Response.raise_for_status() method.
"""
if 400 <= response.status_code < 600:
r_content = {}
try:
r_content = response.json()
except ValueError:
pass
reason = r_content.get("title", None) # jms api
if not reason:
reason = r_content.get("error", None) # auth api
if not reason:
reason = response.reason
description = r_content.get("description", None) # jms api
if not description:
description = r_content.get("error_description", None) # auth api
if 400 <= response.status_code < 500:
error_msg = "%s Client Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
raise ClientError(error_msg, reason=reason, description=description, response=response)
elif 500 <= response.status_code < 600:
error_msg = "%s Server Error: %s for: %s %s" % (
response.status_code,
reason,
response.request.method,
response.url,
)
if description:
error_msg += f"\n{description}"
> raise APIError(error_msg, reason=reason, description=description, response=response)
E ansys.hps.client.exceptions.APIError: 503 Server Error: Service Unavailable for: POST https://localhost:8443/rep/jms/api/v1/projects/?fields=all
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/exceptions.py:105: APIError
Check failure on line 94 in tests/jms/test_job_definitions.py
github-actions / Test Report ubuntu-latest:3.10
test_job_definitions.test_task_definition_fields
AttributeError: 'NoneType' object has no attribute 'get'
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_task_definition_fields(client):
# verify that:
# - store_output is defaulted to True when undefined,
# - memory and disk_space are correctly stored in bytes
jms_api = JmsApi(client)
proj_name = f"test_store_output"
project = Project(name=proj_name, active=False, priority=10)
project = jms_api.create_project(project)
project_api = ProjectApi(client, project.id)
auth_api = AuthApi(client)
task_def = TaskDefinition(
name="Task.1",
execution_command="%executable%",
max_execution_time=10.0,
execution_level=0,
resource_requirements=ResourceRequirements(
memory=256 * 1024 * 1024 * 1024, # 256GB
disk_space=2 * 1024 * 1024 * 1024 * 1024, # 2TB
hpc_resources=HpcResources(num_cores_per_node=2),
),
)
assert task_def.resource_requirements.hpc_resources.num_cores_per_node == 2
task_def = project_api.create_task_definitions([task_def])[0]
assert task_def.store_output == True
assert task_def.resource_requirements.memory == 274877906944
assert task_def.resource_requirements.disk_space == 2199023255552
assert task_def.resource_requirements.hpc_resources.num_cores_per_node == 2
assert task_def.modified_by is not missing
assert task_def.created_by is not missing
> assert auth_api.get_user(id=task_def.created_by).username == client.username
tests/jms/test_job_definitions.py:94:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:100: in get_user
return get_user(self.keycloak_admin_client, id)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:218: in get_user
user = admin_client.get_user(user_id=id)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:925: in get_user
data_raw = self.connection.raw_get(urls_patterns.URL_ADMIN_USER.format(**params_path))
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a33dc3340>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError
Check failure on line 190 in tests/jms/test_jobs.py
github-actions / Test Report ubuntu-latest:3.10
test_jobs.test_job_integration
AttributeError: 'NoneType' object has no attribute 'get'
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
def test_job_integration(client):
proj_name = f"test_jobs_JobTest"
proj = Project(name=proj_name, active=True)
jms_api = JmsApi(client)
proj = jms_api.create_project(proj, replace=True)
project_api = ProjectApi(client, proj.id)
job_def = JobDefinition(name="New Config", active=True)
job_def = project_api.create_job_definitions([job_def])[0]
assert job_def.modified_by is not missing
assert job_def.created_by is not missing
# test creating, update and delete with no jobs
jobs = project_api.create_jobs([])
assert len(jobs) == 0
jobs = project_api.create_jobs([], as_objects=True)
assert len(jobs) == 0
jobs = project_api.update_jobs([])
assert len(jobs) == 0
jobs = project_api.update_jobs([], as_objects=True)
assert len(jobs) == 0
project_api.delete_jobs([])
jobs = [
Job(name=f"dp_{i}", eval_status="inactive", job_definition_id=job_def.id) for i in range(10)
]
jobs = project_api.create_jobs(jobs)
for job in jobs:
# check that all fields are populated (i.e. request params include fields="all")
assert job.creator == None
assert job.note == None
assert job.fitness == None
assert job.executed_level is not None
assert job.modified_by is not missing
assert job.created_by is not missing
jobs = project_api.get_jobs()
auth_api = AuthApi(client)
for job in jobs:
# check that all fields are populated (i.e. request params include fields="all")
assert job.creator == None
assert job.note == None
assert job.fitness == None
assert job.executed_level is not None
assert job.modified_by is not missing
assert job.created_by is not missing
> assert auth_api.get_user(id=job.created_by).username == client.username
tests/jms/test_jobs.py:190:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:100: in get_user
return get_user(self.keycloak_admin_client, id)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:218: in get_user
user = admin_client.get_user(user_id=id)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:925: in get_user
data_raw = self.connection.raw_get(urls_patterns.URL_ADMIN_USER.format(**params_path))
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a33c7acb0>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError
Check failure on line 92 in tests/jms/test_project_permissions.py
github-actions / Test Report ubuntu-latest:3.10
test_project_permissions.test_modify_project_permissions
AttributeError: 'NoneType' object has no attribute 'get'
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
keycloak_client = <keycloak.keycloak_admin.KeycloakAdmin object at 0x7f5a33bca410>
def test_modify_project_permissions(client, keycloak_client):
user_credentials = {
"user1": {"username": f"testuser-{uuid.uuid4().hex[:8]}", "password": "test"},
"user2": {"username": f"testuser-{uuid.uuid4().hex[:8]}", "password": "test"},
}
proj_name = f"test_jms_get_permissions_test_{uuid.uuid4().hex[:8]}"
auth_api = AuthApi(client)
> existing_users = [u.username for u in auth_api.get_users()]
tests/jms/test_project_permissions.py:92:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:96: in get_users
return get_users(self.keycloak_admin_client, as_objects=as_objects, **query_params)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:199: in get_users
users = admin_client.get_users(query=query_params)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:698: in get_users
return self.__fetch_all(url, query)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:496: in __fetch_all
self.connection.raw_get(url, **query), KeycloakGetError
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a33bcba60>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError
Check failure on line 1 in tests/jms/test_task_definition_templates.py
github-actions / Test Report ubuntu-latest:3.10
test_task_definition_templates.test_template_permissions
failed on setup with "AttributeError: 'NoneType' object has no attribute 'get'"
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
@pytest.fixture(scope="session")
def is_admin(client: Client):
api = AuthApi(client)
> users = api.get_users(username=client.username)
tests/conftest.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:96: in get_users
return get_users(self.keycloak_admin_client, as_objects=as_objects, **query_params)
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:199: in get_users
users = admin_client.get_users(query=query_params)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:698: in get_users
return self.__fetch_all(url, query)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:496: in __fetch_all
self.connection.raw_get(url, **query), KeycloakGetError
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a33a46f50>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError
Check failure on line 366 in tests/jms/test_task_definition_templates.py
github-actions / Test Report ubuntu-latest:3.10
test_task_definition_templates.test_template_delete
AttributeError: 'NoneType' object has no attribute 'get'
Raw output
client = <ansys.hps.client.client.Client object at 0x7f5a33e7dae0>
keycloak_client = <keycloak.keycloak_admin.KeycloakAdmin object at 0x7f5a33d350f0>
def test_template_delete(client, keycloak_client):
auth_api = AuthApi(client)
# create 2 non-admin users
jms_api = JmsApi(client)
user1, client1 = create_new_user_client(client.url, keycloak_client)
> assert not auth_api.user_is_admin(user1.id)
tests/jms/test_task_definition_templates.py:366:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:122: in user_is_admin
user_keys = [f"groups.{name}" for name in self.get_user_groups(id)] + [
.tox/py310-coverage/lib/python3.10/site-packages/ansys/hps/client/auth/api/auth_api.py:104: in get_user_groups
return [g["name"] for g in self.keycloak_admin_client.get_user_groups(id)]
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:955: in get_user_groups
return self.__fetch_all(url, query)
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/keycloak_admin.py:496: in __fetch_all
self.connection.raw_get(url, **query), KeycloakGetError
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:367: in raw_get
self._refresh_if_required()
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:352: in _refresh_if_required
self.refresh_token()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <keycloak.openid_connection.KeycloakOpenIDConnection object at 0x7f5a3396e8c0>
def refresh_token(self):
"""Refresh the token.
:raises KeycloakPostError: In case the refresh token request failed.
"""
refresh_token = self.token.get("refresh_token", None) if self.token else None
if refresh_token is None:
self.get_token()
else:
try:
self.token = self.keycloak_openid.refresh_token(refresh_token)
except KeycloakPostError as e:
list_errors = [
b"Refresh token expired",
b"Token is not active",
b"Session not active",
]
if e.response_code == 400 and any(err in e.response_body for err in list_errors):
self.get_token()
else:
raise
> self.add_param_headers("Authorization", "Bearer " + self.token.get("access_token"))
E AttributeError: 'NoneType' object has no attribute 'get'
.tox/py310-coverage/lib/python3.10/site-packages/keycloak/openid_connection.py:348: AttributeError