66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
# SPDX-FileCopyrightText: WTF Kooperative eG <https://wtf-eg.de/>
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
from alembic import command
|
|
import json
|
|
import unittest
|
|
|
|
from app import app, db, migrate
|
|
from ki.actions import seed
|
|
from ki.models import Skill
|
|
|
|
# from sqlalchemy import select
|
|
|
|
|
|
class ApiTest(unittest.TestCase):
|
|
maxDiff = None
|
|
|
|
def setUp(self):
|
|
print("Running setup")
|
|
app.debug = True
|
|
app.config["KI_AUTH"] = "file"
|
|
app.config["TESTING"] = True
|
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"
|
|
|
|
self.client = app.test_client()
|
|
|
|
config = migrate.get_config()
|
|
with app.app_context():
|
|
command.upgrade(config, "head")
|
|
seed(True)
|
|
|
|
# statement = select(Skill).order_by(Skill.id.desc())
|
|
# print(statement)
|
|
# skill_obj = db.session.scalars(statement).all()
|
|
# print(skill_obj)
|
|
# statement = select(Skill.id)
|
|
# print(statement)
|
|
# max_skill = db.session.Skill().order_by(Skill.id.desc()).first()
|
|
# max_skill = Skill.query.order_by(Skill.id.desc()).first() # TODO: problematic
|
|
with db.session.no_autoflush: # only works on first test run
|
|
max_skill = db.session.query(Skill).order_by(Skill.id.desc()).first() # TODO: also problematic,
|
|
# skills = db.session.execute(db.select(Skill)).scalars()
|
|
# print(max_skill)
|
|
# max_skill = db.session.execute(db.select(Skill)
|
|
# .order_by(Skill.id.desc())
|
|
# ).scalar_one()
|
|
print(max_skill)
|
|
print("max_skill done")
|
|
self.max_skill_id = max_skill.id
|
|
|
|
def tearDown(self):
|
|
print("Running teardown")
|
|
with app.app_context():
|
|
db.drop_all()
|
|
db.engine.dispose()
|
|
|
|
def login(self, username, password):
|
|
# with app.app_context():
|
|
login_data = {"username": username, "password": password}
|
|
login_response = self.client.post("/users/login", data=json.dumps(login_data), content_type="application/json")
|
|
|
|
self.assertEqual(login_response.status_code, 200)
|
|
self.assertIn("token", login_response.json)
|
|
|
|
return login_response.json
|