31 lines
996 B
Python
31 lines
996 B
Python
"""
|
|
Utility functions for use in SAMLProviderConfig, SAMLProviderData tests
|
|
"""
|
|
|
|
from edx_rest_framework_extensions.auth.jwt.cookies import jwt_cookie_name
|
|
from edx_rest_framework_extensions.auth.jwt.tests.utils import generate_jwt_token, generate_unversioned_payload
|
|
|
|
|
|
def _jwt_token_from_role_context_pairs(user, role_context_pairs):
|
|
"""
|
|
Generates a new JWT token with roles assigned from pairs of (role name, context).
|
|
"""
|
|
roles = []
|
|
for role, context in role_context_pairs:
|
|
role_data = f'{role}'
|
|
if context is not None:
|
|
role_data += f':{context}'
|
|
roles.append(role_data)
|
|
|
|
payload = generate_unversioned_payload(user)
|
|
payload.update({'roles': roles})
|
|
return generate_jwt_token(payload)
|
|
|
|
|
|
def set_jwt_cookie(client, user, role_context_pairs=None):
|
|
"""
|
|
Set jwt token in cookies
|
|
"""
|
|
jwt_token = _jwt_token_from_role_context_pairs(user, role_context_pairs or [])
|
|
client.cookies[jwt_cookie_name()] = jwt_token
|