2021-07-20 08:01:56 +02:00
|
|
|
import pytest
|
|
|
|
|
2021-07-20 17:32:04 +02:00
|
|
|
from flask import g
|
2021-07-30 09:36:30 +02:00
|
|
|
from flask_login import login_user, logout_user, current_user
|
2021-07-20 17:32:04 +02:00
|
|
|
|
|
|
|
import app as myapp
|
|
|
|
from app import db, create_app
|
2021-08-09 17:01:47 +02:00
|
|
|
from app import models
|
2021-07-20 08:01:56 +02:00
|
|
|
from app.auth.models import User, Role, Permission
|
2021-07-20 17:32:04 +02:00
|
|
|
from app.scodoc import sco_bulletins_standard
|
|
|
|
from app.scodoc import notesdb as ndb
|
2021-07-20 08:01:56 +02:00
|
|
|
|
|
|
|
|
2021-07-31 22:57:54 +02:00
|
|
|
def truncate_database():
|
|
|
|
"Erase content of all tables from current dept database"
|
|
|
|
# use a stored SQL function, see createtables.sql
|
|
|
|
ndb.SimpleQuery("SELECT truncate_tables('scodoc');", {})
|
|
|
|
|
|
|
|
|
2021-07-20 17:32:04 +02:00
|
|
|
@pytest.fixture()
|
2021-07-20 08:01:56 +02:00
|
|
|
def test_client():
|
|
|
|
# Setup
|
2021-07-20 17:32:04 +02:00
|
|
|
myapp.Config.TESTING = True
|
2021-08-09 17:01:47 +02:00
|
|
|
myapp.Config.SQLALCHEMY_DATABASE_URI = "postgresql://scodoc@localhost/SCOTEST00"
|
2021-07-30 09:36:30 +02:00
|
|
|
myapp.Config.SERVER_NAME = "test.gr"
|
2021-07-20 17:32:04 +02:00
|
|
|
apptest = create_app()
|
2021-07-20 08:01:56 +02:00
|
|
|
# Run tests:
|
2021-07-20 17:32:04 +02:00
|
|
|
with apptest.test_client() as client:
|
|
|
|
with apptest.app_context():
|
2021-07-30 09:36:30 +02:00
|
|
|
with apptest.test_request_context():
|
2021-08-09 17:01:47 +02:00
|
|
|
models.init_scodoc_database()
|
2021-07-30 09:36:30 +02:00
|
|
|
db.create_all()
|
|
|
|
Role.insert_roles()
|
|
|
|
u = User(user_name="admin")
|
2021-08-07 16:32:24 +02:00
|
|
|
super_admin_role = Role.query.filter_by(name="SuperAdmin").first()
|
|
|
|
u.add_role(super_admin_role, "TEST00")
|
2021-07-30 09:36:30 +02:00
|
|
|
# u.set_password("admin")
|
|
|
|
login_user(u)
|
2021-08-07 16:32:24 +02:00
|
|
|
# Vérifie que l'utilisateur bach existe
|
|
|
|
u = User.query.filter_by(user_name="bach").first()
|
|
|
|
if u is None:
|
|
|
|
u = User(user_name="bach")
|
|
|
|
if not "Admin" in {r.name for r in u.roles}:
|
|
|
|
admin_role = Role.query.filter_by(name="Admin").first()
|
|
|
|
u.add_role(admin_role, "TEST00")
|
|
|
|
db.session.add(u)
|
2021-07-31 22:57:54 +02:00
|
|
|
ndb.set_sco_dept("TEST00") # set db connection
|
|
|
|
truncate_database() # erase tables
|
2021-07-30 09:36:30 +02:00
|
|
|
yield client
|
|
|
|
# ndb.close_dept_connection()
|
|
|
|
# Teardown:
|
|
|
|
db.session.remove()
|
|
|
|
db.drop_all()
|