import time from app import session def test_criar_e_ler_token_valido(): token = session.criar_token("fulano", "Fulano da Silva", "ADMIN") dados = session.ler_token(token) assert dados == {"login": "fulano", "nome": "Fulano da Silva", "perfil": "ADMIN"} def test_ler_token_none_retorna_none(): assert session.ler_token(None) is None def test_ler_token_vazio_retorna_none(): assert session.ler_token("") is None def test_ler_token_sem_ponto_retorna_none(): assert session.ler_token("lixo-sem-formato") is None def test_ler_token_assinatura_adulterada_retorna_none(): token = session.criar_token("fulano", "Fulano", "PADRAO") payload, assinatura = token.rsplit(".", 1) token_adulterado = payload + "." + ("0" if assinatura[0] != "0" else "1") + assinatura[1:] assert session.ler_token(token_adulterado) is None def test_ler_token_payload_adulterado_retorna_none(): token = session.criar_token("fulano", "Fulano", "PADRAO") payload, assinatura = token.rsplit(".", 1) token_adulterado = payload + "X." + assinatura assert session.ler_token(token_adulterado) is None def test_ler_token_expirado_retorna_none(): agora = time.time() token = session.criar_token("fulano", "Fulano", "PADRAO", agora=agora - session.VALIDADE_SEGUNDOS - 1) assert session.ler_token(token, agora=agora) is None def test_ler_token_no_limite_da_validade_ainda_e_valido(): agora = time.time() token = session.criar_token("fulano", "Fulano", "PADRAO", agora=agora - session.VALIDADE_SEGUNDOS + 5) assert session.ler_token(token, agora=agora) is not None