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)
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)