forked from 3wordchant/capsul-flask
trying to get tests to pass with hub_model=capsulflask
This commit is contained in:
parent
5e682cc705
commit
2348191990
@ -114,7 +114,7 @@ def init_app(app, is_running_server):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_model():
|
def get_model() -> DBModel:
|
||||||
if 'db_model' not in g:
|
if 'db_model' not in g:
|
||||||
connection = current_app.config['PSYCOPG2_CONNECTION_POOL'].getconn()
|
connection = current_app.config['PSYCOPG2_CONNECTION_POOL'].getconn()
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
|
@ -381,7 +381,7 @@ class DBModel:
|
|||||||
def list_all_operations(self):
|
def list_all_operations(self):
|
||||||
self.cursor.execute("""
|
self.cursor.execute("""
|
||||||
SELECT operations.id, operations.email, operations.created, operations.payload,
|
SELECT operations.id, operations.email, operations.created, operations.payload,
|
||||||
host_operation.host host_operation.assignment_status, host_operation.assigned,
|
host_operation.host, host_operation.assignment_status, host_operation.assigned,
|
||||||
host_operation.completed, host_operation.results FROM operations
|
host_operation.completed, host_operation.results FROM operations
|
||||||
JOIN host_operation ON host_operation.operation = operations.id
|
JOIN host_operation ON host_operation.operation = operations.id
|
||||||
""")
|
""")
|
||||||
|
@ -196,7 +196,7 @@ class CapsulFlaskHub(VirtualizationInterface):
|
|||||||
def create(self, email: str, id: str, os: str, size: str, template_image_file_name: str, vcpus: int, memory_mb: int, ssh_authorized_keys: list):
|
def create(self, email: str, id: str, os: str, size: str, template_image_file_name: str, vcpus: int, memory_mb: int, ssh_authorized_keys: list):
|
||||||
validate_capsul_id(id)
|
validate_capsul_id(id)
|
||||||
online_hosts = get_model().get_online_hosts()
|
online_hosts = get_model().get_online_hosts()
|
||||||
#current_app.logger.debug(f"hub_model.create(): ${len(online_hosts)} hosts")
|
current_app.logger.debug(f"hub_model.create(): ${len(online_hosts)} hosts")
|
||||||
payload = json.dumps(dict(
|
payload = json.dumps(dict(
|
||||||
type="create",
|
type="create",
|
||||||
email=email,
|
email=email,
|
||||||
|
@ -6,7 +6,7 @@ from flask import url_for
|
|||||||
|
|
||||||
from capsulflask.db import get_model
|
from capsulflask.db import get_model
|
||||||
from capsulflask.tests_base import BaseTestCase
|
from capsulflask.tests_base import BaseTestCase
|
||||||
from capsulflask.hub_model import MockHub
|
from capsulflask.spoke_model import MockSpoke
|
||||||
|
|
||||||
|
|
||||||
class ConsoleTests(BaseTestCase):
|
class ConsoleTests(BaseTestCase):
|
||||||
@ -65,9 +65,11 @@ class ConsoleTests(BaseTestCase):
|
|||||||
get_model().create_payment_session('fake', 'test', 'test@example.com', 20)
|
get_model().create_payment_session('fake', 'test', 'test@example.com', 20)
|
||||||
get_model().consume_payment_session('fake', 'test', 20)
|
get_model().consume_payment_session('fake', 'test', 20)
|
||||||
|
|
||||||
with patch.object(MockHub, 'capacity_avaliable', return_value=False) as mock_method:
|
with patch.object(MockSpoke, 'capacity_avaliable', return_value=False) as mock_method:
|
||||||
response = client.post(url_for("console.create"), data=data)
|
response = client.post(url_for("console.create"), data=data)
|
||||||
|
|
||||||
|
self.assert200(response)
|
||||||
|
|
||||||
mock_method.assert_called()
|
mock_method.assert_called()
|
||||||
|
|
||||||
capacity_message = \
|
capacity_message = \
|
||||||
@ -112,6 +114,14 @@ class ConsoleTests(BaseTestCase):
|
|||||||
|
|
||||||
response = client.post(url_for("console.create"), data=data)
|
response = client.post(url_for("console.create"), data=data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
len(get_model().list_all_operations()),
|
||||||
|
1
|
||||||
|
)
|
||||||
|
|
||||||
vms = get_model().list_vms_for_account('test@example.com')
|
vms = get_model().list_vms_for_account('test@example.com')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(vms),
|
len(vms),
|
||||||
@ -125,6 +135,7 @@ class ConsoleTests(BaseTestCase):
|
|||||||
url_for("console.index") + f'?created={vm_id}'
|
url_for("console.index") + f'?created={vm_id}'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_keys_loads(self):
|
def test_keys_loads(self):
|
||||||
self._login('test@example.com')
|
self._login('test@example.com')
|
||||||
with self.client as client:
|
with self.client as client:
|
||||||
|
@ -11,8 +11,9 @@ class BaseTestCase(TestCase):
|
|||||||
# Use default connection paramaters
|
# Use default connection paramaters
|
||||||
os.environ['POSTGRES_CONNECTION_PARAMETERS'] = "host=localhost port=5432 user=postgres password=dev dbname=capsulflask_test"
|
os.environ['POSTGRES_CONNECTION_PARAMETERS'] = "host=localhost port=5432 user=postgres password=dev dbname=capsulflask_test"
|
||||||
os.environ['TESTING'] = '1'
|
os.environ['TESTING'] = '1'
|
||||||
|
os.environ['LOG_LEVEL'] = 'DEBUG'
|
||||||
os.environ['SPOKE_MODEL'] = 'mock'
|
os.environ['SPOKE_MODEL'] = 'mock'
|
||||||
os.environ['HUB_MODEL'] = 'mock'
|
os.environ['HUB_MODEL'] = 'capsul-flask'
|
||||||
return create_app()
|
return create_app()
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -4,9 +4,9 @@ Automated tests could make it safer to contribute code, easier to review new cod
|
|||||||
|
|
||||||
To run tests:
|
To run tests:
|
||||||
1. create a Postgres database called `capsulflask_test`
|
1. create a Postgres database called `capsulflask_test`
|
||||||
- e.g.: `docker exec -it d1702306f409 psql -U postgres createdb -O postgres capsulflask_test;`
|
- e.g.: `docker exec -it 98e1ddfbbffb createdb -U postgres -O postgres capsulflask_test`
|
||||||
- (`d1702306f409` is the docker container ID of the postgres container)
|
- (`98e1ddfbbffb` is the docker container ID of the postgres container)
|
||||||
2. run `python -m unittest`
|
2. run `python3 -m unittest`
|
||||||
|
|
||||||
### Architecture
|
### Architecture
|
||||||
|
|
||||||
@ -19,13 +19,13 @@ One outstanding question is how to initialise/reinitialise the test database.
|
|||||||
Currently, the tests rely on the existence of a capsulflask_test database on localhost, accessible by the postgres user with password dev.
|
Currently, the tests rely on the existence of a capsulflask_test database on localhost, accessible by the postgres user with password dev.
|
||||||
|
|
||||||
I create this manually using:
|
I create this manually using:
|
||||||
`docker exec -it d1702306f409 psql -U postgres createdb -O postgres capsulflask_test;`
|
`docker exec -it 98e1ddfbbffb createdb -U postgres -O postgres capsulflask_test`
|
||||||
|
|
||||||
where `d1702306f409` is the docker container ID of the postgres container.
|
where `98e1ddfbbffb` is the docker container ID of the postgres container.
|
||||||
|
|
||||||
In between test runs, you can either drop and recreate that database, or manually clear data using:
|
In between test runs, you can either drop and recreate that database, or manually clear data using:
|
||||||
|
|
||||||
`docker exec -it d1702306f409 psql -U postgres capsulflask_test -c "DELETE FROM vms; DELETE FROM login_tokens; DELETE FROM ssh_public_keys; DELETE FROM api_tokens; DELETE FROM accounts;`
|
`docker exec -it 98e1ddfbbffb psql -U postgres capsulflask_test -c "DELETE FROM vm_ssh_authorized_key; DELETE FROM vm_ssh_host_key; DELETE FROM vms; DELETE FROM login_tokens; DELETE FROM ssh_public_keys; DELETE FROM unresolved_btcpay_invoices; DELETE FROM payments; DELETE FROM payment_sessions; DELETE FROM host_operation; DELETE FROM operations; DELETE FROM api_tokens; DELETE FROM accounts;" `
|
||||||
|
|
||||||
### Test coverage
|
### Test coverage
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user