Arch/tests/test_admin.py

100 lines
4.2 KiB
Python

import pytest
import json
import os
class TestAdminFunctions:
"""Test administrative functions."""
def test_admin_dashboard(self, logged_in_client):
"""Test access to admin dashboard."""
response = logged_in_client.get('/admin/')
assert response.status_code == 200
assert b'Panel de Administraci' in response.data # "Panel de Administración"
def test_filetypes_management(self, logged_in_client):
"""Test file types management page."""
response = logged_in_client.get('/admin/filetypes')
assert response.status_code == 200
assert b'Tipos de Archivo' in response.data
def test_system_status(self, logged_in_client):
"""Test system status page."""
response = logged_in_client.get('/admin/system')
assert response.status_code == 200
assert b'Estado del Sistema' in response.data
def test_add_filetype(self, logged_in_client, app):
"""Test adding a new file type."""
response = logged_in_client.post('/admin/filetypes/add', data={
'extension': 'docx',
'descripcion': 'Documento Word',
'mime_type': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'tamano_maximo': 15728640 # 15MB in bytes
}, follow_redirects=True)
assert response.status_code == 200
# Verify file type was added
with app.app_context():
filetypes_path = os.path.join(app.config['STORAGE_PATH'], 'filetypes', 'filetypes.json')
with open(filetypes_path, 'r') as f:
filetypes = json.load(f)
assert 'docx' in filetypes
assert filetypes['docx']['descripcion'] == 'Documento Word'
def test_delete_filetype(self, logged_in_client, app):
"""Test deleting a file type."""
# First add a file type to delete
logged_in_client.post('/admin/filetypes/add', data={
'extension': 'xlsx',
'descripcion': 'Hoja de cálculo Excel',
'mime_type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'tamano_maximo': 15728640
}, follow_redirects=True)
# Verify it was added
with app.app_context():
filetypes_path = os.path.join(app.config['STORAGE_PATH'], 'filetypes', 'filetypes.json')
with open(filetypes_path, 'r') as f:
filetypes = json.load(f)
assert 'xlsx' in filetypes
# Now delete it
response = logged_in_client.post('/admin/filetypes/xlsx/delete', follow_redirects=True)
assert response.status_code == 200
# Verify it was deleted
with app.app_context():
filetypes_path = os.path.join(app.config['STORAGE_PATH'], 'filetypes', 'filetypes.json')
with open(filetypes_path, 'r') as f:
filetypes = json.load(f)
assert 'xlsx' not in filetypes
def test_update_filetype(self, logged_in_client, app):
"""Test updating a file type."""
# First add a file type to update
logged_in_client.post('/admin/filetypes/add', data={
'extension': 'png',
'descripcion': 'Imagen PNG',
'mime_type': 'image/png',
'tamano_maximo': 5242880 # 5MB
}, follow_redirects=True)
# Now update it
response = logged_in_client.post('/admin/filetypes/png/update', data={
'descripcion': 'Imagen PNG Actualizada',
'mime_type': 'image/png',
'tamano_maximo': 10485760 # 10MB (increased)
}, follow_redirects=True)
assert response.status_code == 200
# Verify changes
with app.app_context():
filetypes_path = os.path.join(app.config['STORAGE_PATH'], 'filetypes', 'filetypes.json')
with open(filetypes_path, 'r') as f:
filetypes = json.load(f)
assert 'png' in filetypes
assert filetypes['png']['descripcion'] == 'Imagen PNG Actualizada'
assert filetypes['png']['tamano_maximo'] == 10485760