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