Compare commits
2 Commits
3fb8254c15
...
56b00934be
Author | SHA1 | Date |
---|---|---|
forest | 56b00934be | |
forest | aa67a1e1b2 |
|
@ -96,21 +96,28 @@ def create_app():
|
|||
|
||||
app.config['HUB_URL'] = config.get("HUB_URL", app.config['BASE_URL'])
|
||||
|
||||
log_filters = {
|
||||
'setLogLevelToDebugForHeartbeatRelatedMessages': {
|
||||
'()': SetLogLevelToDebugForHeartbeatRelatedMessagesFilter,
|
||||
}
|
||||
}
|
||||
if app.config['TESTING'] != False:
|
||||
log_filters['captureLogOutputDuringTests'] = {
|
||||
'()': CaptureLogOutputDuringTestsFilter,
|
||||
}
|
||||
|
||||
|
||||
logging_dict_config({
|
||||
'version': 1,
|
||||
'formatters': {'default': {
|
||||
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
|
||||
}},
|
||||
'filters': {
|
||||
'setLogLevelToDebugForHeartbeatRelatedMessages': {
|
||||
'()': SetLogLevelToDebugForHeartbeatRelatedMessagesFilter,
|
||||
}
|
||||
},
|
||||
'filters': log_filters,
|
||||
'handlers': {'wsgi': {
|
||||
'class': 'logging.StreamHandler',
|
||||
'stream': 'ext://flask.logging.wsgi_errors_stream',
|
||||
'formatter': 'default',
|
||||
'filters': ['setLogLevelToDebugForHeartbeatRelatedMessages']
|
||||
'filters': list(log_filters.keys())
|
||||
}},
|
||||
'root': {
|
||||
'level': app.config['LOG_LEVEL'],
|
||||
|
@ -270,3 +277,15 @@ class SetLogLevelToDebugForHeartbeatRelatedMessagesFilter(logging.Filter):
|
|||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
class CaptureLogOutputDuringTestsFilter(logging.Filter):
|
||||
def filter(self, record):
|
||||
file_object = open('unittest-output.log', 'a')
|
||||
file_object.write("%s" % record.msg)
|
||||
for arg in record.args:
|
||||
file_object.write("%s" % arg)
|
||||
|
||||
file_object.write("\n")
|
||||
file_object.close()
|
||||
return True
|
||||
|
|
|
@ -192,7 +192,10 @@ def detail(id):
|
|||
@bp.route("/create", methods=("GET", "POST"))
|
||||
@account_required
|
||||
def create():
|
||||
current_app.logger.debug(f"console.create()!")
|
||||
|
||||
raise "console.create()!"
|
||||
|
||||
current_app.logger.error("console.create()!")
|
||||
|
||||
vm_sizes = get_model().vm_sizes_dict()
|
||||
operating_systems = get_model().operating_systems_dict()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import logging
|
||||
|
||||
from copy import deepcopy
|
||||
|
||||
from unittest.mock import patch
|
||||
|
@ -80,6 +82,10 @@ class ConsoleTests(BaseTestCase):
|
|||
len(get_model().list_vms_for_account('test@example.com')),
|
||||
0
|
||||
)
|
||||
|
||||
file_object = open('unittest-output.log', 'a')
|
||||
file_object.write(f"{self.id()} captured output:\n{self.logs_from_test.getvalue()}\n")
|
||||
file_object.close()
|
||||
|
||||
def test_create_fails_invalid(self):
|
||||
with self.client as client:
|
||||
|
@ -129,7 +135,7 @@ class ConsoleTests(BaseTestCase):
|
|||
)
|
||||
|
||||
vm_id = vms[0]['id']
|
||||
|
||||
|
||||
self.assertRedirects(
|
||||
response,
|
||||
url_for("console.index") + f'?created={vm_id}'
|
||||
|
@ -190,10 +196,12 @@ class ConsoleTests(BaseTestCase):
|
|||
)
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._login('test@example.com')
|
||||
get_model().create_ssh_public_key('test@example.com', 'key', 'foo')
|
||||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
get_model().cursor.execute("DELETE FROM ssh_public_keys")
|
||||
get_model().cursor.execute("DELETE FROM login_tokens")
|
||||
get_model().cursor.execute("DELETE FROM vms")
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
from io import StringIO
|
||||
import logging
|
||||
import unittest
|
||||
import os
|
||||
from nanoid import generate
|
||||
|
||||
from flask_testing import TestCase
|
||||
from flask import current_app
|
||||
|
||||
from capsulflask import create_app
|
||||
from capsulflask.db import get_model
|
||||
|
@ -14,16 +18,18 @@ class BaseTestCase(TestCase):
|
|||
os.environ['LOG_LEVEL'] = 'DEBUG'
|
||||
os.environ['SPOKE_MODEL'] = 'mock'
|
||||
os.environ['HUB_MODEL'] = 'capsul-flask'
|
||||
return create_app()
|
||||
self.app = create_app()
|
||||
return self.app
|
||||
|
||||
def setUp(self):
|
||||
pass
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
pass
|
||||
|
||||
def _login(self, user_email):
|
||||
get_model().login(user_email)
|
||||
with self.client.session_transaction() as session:
|
||||
session['account'] = user_email
|
||||
session['csrf-token'] = generate()
|
||||
|
||||
|
|
Loading…
Reference in New Issue