Exemplo n.º 1
0
def processa(ses, dados):
  ses_nova = ses # Caso o login falhe.

  if ses != None:
    # Não deveria acontecer, mas por via das dúvidas:
    pag = html_pag_mensagem_de_erro.gera(ses, "Favor sair da sessão corrente primeiro")
  else:
    erro_email = None # Email não especificado ou não cadastrado.
    erro_senha = None # Senha não especificada ou inválida.

    if 'senha' not in dados:
      erro_senha = "campo 'senha' é obrigatório"
      senha = None
    else:
      senha = dados['senha'] 

    if 'email' not in dados:
      erro_email = "campo 'email' é obrigatório"
      email = None
    else:
      email = dados['email']

    usr = None
    if email != None and senha != None:
      # Obtem o usuário pelo email:
      id_usuario = usuario.busca_por_email(email)
      if id_usuario == None:
        erro_email = "Usuário " + email + " não está cadastrado"
      else:
        usr = usuario.busca_por_identificador(id_usuario)
        assert usr != None
        atrs_usr = usuario.obtem_atributos(usr)
        if atrs_usr["senha"] != senha:
          erro_senha = "Senha incorreta"
          usr = None

    if usr != None:
      cookie = secrets.token_urlsafe(32)
      carrinho = define_carrinho(usr, id_usuario)
      ses_nova = sessao.cria(usr, cookie, carrinho)
      pag = html_pag_principal.gera(ses_nova, None)
    else:
      erros = [ erro_email, erro_senha ]
      pag = html_pag_mensagem_de_erro.gera(None, erros)

  return pag, ses_nova
import sys

# Conecta no banco e alimenta com as informações para o teste

sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res is None

sys.stderr.write("Criando alguns objetos...\n")
tabelas.cria_todos_os_testes(False)

# Sessões de teste
ses_nao_admin = sessao.busca_por_identificador("S-00000001")

admin = usuario.busca_por_identificador("U-00000003")
ses_admin = sessao.cria(admin, "NOPQRSTUVWX", None)


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_solicitar_pag_buscar_usuarios
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


testa("NL-e0", None, None)
testa("NA-e2", ses_nao_admin, ["banana", "abacate"])
id_usr_nao_admin = "U-00000001"
id_usr_admin = "U-00000003"

usr_nao_admin = usuario.busca_por_identificador(id_usr_nao_admin)
usr_admin = usuario.busca_por_identificador(id_usr_admin)

# Teste sem sessao
testa("sem_sessao", None, pag_conteudo, None)

# Fecha todas as sessoes
fecha_sessoes(id_usr_nao_admin)
fecha_sessoes(id_usr_admin)

# Teste com apenas uma sessao
# - Nao admin
ses = sessao.cria(usr_nao_admin, "ASDIHADBH", None)
testa("uma_sessao_nao_admin", ses, pag_conteudo, None)

# - Admin
ses = sessao.cria(usr_admin, "DASDASDD", None)
testa("uma_sessao_admin", ses, pag_conteudo, None)

# Teste com multiplas sessoes
# - Nao admin
ses = sessao.cria(usr_nao_admin, "GFHFGHHFG", None)
testa("varias_sessoes_nao_admin", ses, pag_conteudo, None)

# - Admin
ses = sessao.cria(usr_admin, "XCVJXCVVL", None)
testa("varias_sessoes_admin", ses, pag_conteudo, None)
Exemplo n.º 4
0
    carrinho1 = sessao.obtem_carrinho(ses)
    if carrinho1 != carrinho:
      aviso_prog("retornou " + str(carrinho1) + ", deveria ter retornado " + str(carrinho),True)
      ok = False
 
  if not ok:
    aviso_prog("teste falhou",True)
    ok_global = False

  sys.stderr.write("%s\n" % ("-" * 70))
  return

# ----------------------------------------------------------------------
sys.stderr.write("testando {sessao.cria}:\n")
scook1 = "ABCDEFGHIJK"
s1 = sessao.cria(usr1, scook1, cmp1)
sindice1 = 1
sident1 = "S-00000001"
verifica_sessao("s1", s1, sident1, usr1, True, scook1, cmp1)

scook2 = "BCDEFGHIJKL"
s2 = sessao.cria(usr2, scook2, cmp2)
sindice2 = 2
sident2 = "S-00000002"
verifica_sessao("s2", s2, sident2, usr2, True, scook2, cmp2)

scook3 = "CDEFGHIJKLM"
s3 = sessao.cria(usr1, scook3, cmp1)
sindice3 = 3
sident3 = "S-00000003"
verifica_sessao("s3", s3, sident3, usr1, True, scook3, cmp1)