123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- '''
- this file is part of "El Botadero"
- copyright 2018 Rodrigo Garcia <strysg@riseup.net>
- AGPL liberated.
- '''
- import os
- import tempfile
- import random
- import pytest
- from botadero import create_app
- from botadero.shared import globalParams
- from flask import current_app
- # NOTA: para ver los mensajes en print usar: pytest -s
- def test_listaDeArchivos(db):
- from botadero.utils import listaDeArchivos, categorias
- # categorias
- try:
- listaCategorias = categorias()
- for categoria in listaCategorias:
- lista = listaDeArchivos(categoria)
- print ('lista obtenida:', str(lista))
- for l in lista:
- print (l)
- #assert len(lista) > 0
- except:
- print ('Error listando archivos')
- assert 1 == 0
- def test_hashArchivo_sinAceleracion(db):
- from botadero.utils import hashArchivo
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos', '1.txt')
- hexdigest = hashArchivo(archivo)
- print ('hash sin aceleracion 1.txt', hexdigest)
- assert hexdigest == '6e07f20f10664b06c50faa52dd5fad44d0e4461d'
-
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos', 'pingüino.jpg')
- hexdigest = hashArchivo(archivo)
- print ('hash sin aceleracion pingüino.jpg', hexdigest)
- assert hexdigest == 'dce3c92b190dfd3a4a3d82b31f360ded041dcdfa'
- # archivo grande
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos',
- 'pasto1.jpg')
- hexdigest = hashArchivo(archivo)
- print ('hash sin aceleracion pasto1.jpg', hexdigest)
- assert hexdigest == '1da479d184c1cf9a7d8df498c842ab258912a482'
- def test_hashArchivo_conAceleracion(db):
- from botadero.utils import hashArchivo
- # archivo chico
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos', '1.txt')
- hexdigest = hashArchivo(archivo, accelerateHash=True)
- print ('hash con aceleracion 1.txt', hexdigest)
- assert hexdigest == '6e07f20f10664b06c50faa52dd5fad44d0e4461d'
- # archivo mediano
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos', 'pingüino.jpg')
- hexdigest = hashArchivo(archivo, accelerateHash=True)
- print ('hash con aceleracion pingüino.jpg', hexdigest)
- assert hexdigest == 'dce3c92b190dfd3a4a3d82b31f360ded041dcdfa'
- # archivo grande
- archivo = os.path.join(os.path.abspath(os.curdir),
- 'tests', 'fixtures', 'archivos',
- 'pasto1.jpg')
- hexdigest = hashArchivo(archivo, accelerateHash=True)
- print ('hash con aceleracion pasto.jpg', hexdigest)
- assert hexdigest == '04433af3f8541ea34903e6e3cbda075a953cd6f2'
-
- def test_registrarArchivo(db):
- from botadero.utils import registrarArchivo
- from botadero.database.models import Archivo
-
- nombreYRuta = crearArchivoPrueba()
- registrado = registrarArchivo(nombreYRuta)
- print ('ARchivo registrado:', str(registrado))
- assert registrado is not None
- assert Archivo.query.filter_by(name=registrado.name).first() is not None
- def test_existeArchivoEnBD(db):
- from botadero.utils import existeArchivo, registrarArchivo
- from botadero.database.models import Archivo
- nombreYRuta = crearArchivoPrueba()
- registrado = registrarArchivo(nombreYRuta)
- assert existeArchivo(nombreYRuta) is not None
- nombreYRuta = crearArchivoPrueba()
- assert existeArchivo(nombreYRuta) is None
- def test_borrarArchivo(db):
- from botadero.utils import existeArchivo, registrarArchivo, borrarArchivo
- from botadero.database.models import Archivo
- nombreYRuta = crearArchivoPrueba()
- registrado = registrarArchivo(nombreYRuta)
- assert existeArchivo(nombreYRuta) is not None
- assert borrarArchivo(nombreYRuta) is True
- assert existeArchivo(nombreYRuta) is None
- def test_descargarAchivo(db):
- from botadero.utils import descargarArchivo, registrarArchivo
- from botadero.database.models import Archivo
- nombreYRuta = crearArchivoPrueba()
- registrado = registrarArchivo(nombreYRuta)
- assert descargarArchivo(cat='', nombreArchivo=nombreYRuta) is not None
- a = Archivo.query.filter_by(path=nombreYRuta).first()
- assert a.downloads == 1
- def test_hashPassword():
- from botadero.utils import hashPassword, checkHashedPassword
- hashed = hashPassword('abeced')
- assert checkHashedPassword('abeced', hashed) is True
- def test_crearArchivoConPassword(db):
- from botadero.utils import hashPassword, checkHashedPassword
- from botadero.utils import registrarArchivo, comprobarPassword
- from botadero.utils import descargarArchivo, borrarArchivo, existeArchivo
-
- nombreYRuta = crearArchivoPrueba()
- hashedPassword = hashPassword('123456')
- registrado = registrarArchivo(nombreYRuta, hashedPassword=hashedPassword)
- assert descargarArchivo(cat='', nombreArchivo=nombreYRuta) is not None
- assert comprobarPassword(nombreYRuta, '123456')
- assert borrarArchivo(nombreYRuta) is True
- assert existeArchivo(nombreYRuta) is None
-
- # @pytest.fixture
- # def test_crearHtmlListado_forzado(db):
- # #flaskr.app.config['TESTING'] = True
- # print ('listadoooooooooooooooo')
- # from botadero.database.models import HtmlPage
- # from botadero.utils import crearHtmlListado, sincronizarArchivos
- # l1, l2 = sincronizarArchivos()
- # html_page = crearHtmlListado(categoria='Misc', force=True)
- # assert flask.request.path == '/'
- # assert flask.request.args['name'] == 'Peter'
- # #flaskr_app.config['SERVER_NAME'] = 'local'
- # print('------------------------html---------')
- # print ('test_crearHtmlListado_forzado:', str(html_page))
- # assert html_page is not None
- # utils para pruebas
- def crearArchivoPrueba(numCadenas=5000):
- db_fd, db_path = tempfile.mkstemp(suffix='.txt')
-
- with open(db_path, 'w') as file:
- i = int(numCadenas)
- cont = ''
- while i > 10:
- cont += ',' + str(random.randint(1,i))
- i -= 1
- file.write(cont)
- return db_path
|