aboutsummaryrefslogtreecommitdiff
"""Module for fixtures and test utilities"""
import uuid
import datetime
from contextlib import contextmanager

from gn_auth.auth.authentication.oauth2.models.oauth2token import OAuth2Token
from gn_auth.auth.authentication.oauth2.grants.jwt_bearer_grant import JWTBearerTokenGenerator

from .fixtures import * # pylint: disable=[wildcard-import,unused-wildcard-import]

SECRET_KEY = "this is the test secret key"
SCOPE = "profile group role resource register-client"

def _tokengenerator(user, client):
    """Generate a JWT token for tests"""
    _generator = JWTBearerTokenGenerator(
        secret_key=SECRET_KEY,
        alg="HS256")
    return _generator(
        grant_type="urn:ietf:params:oauth:grant-type:jwt-bearer",
        client=client,
        user=user,
        scope=SCOPE,
        expires_in=3600,
        include_refresh_token=False)

def get_tokeniser(user, client):
    """Get contextmanager for mocking token acquisition."""
    @contextmanager
    def __token__(*args, **kwargs):# pylint: disable=[unused-argument]
        yield {
            usr.user_id: OAuth2Token(
                token_id=uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b"),
                client=client,
                token_type="Bearer",
                access_token=_tokengenerator(user, client),
                refresh_token=None,
                revoked=False,
                expires_in=864000,
                user=usr,
                issued_at=int(datetime.datetime.now().timestamp()),
                scope="profile group role resource register-client")
        for usr in TEST_USERS
        }[user.user_id]

    return __token__

def uuid_fn():
    """Return a specific UUID for testing."""
    return uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")