from flask import url_for from capsulflask.db import get_model from capsulflask.tests_base import BaseTestCase class ConsoleTests(BaseTestCase): capsul_data = { "size": "f1-xs", "os": "debian10", "ssh_authorized_key_count": 1, "ssh_key_0": "key" } def test_index(self): self._login('test@example.com') with self.client as client: response = client.get(url_for("console.index")) self.assert_200(response) def test_create_loads(self): self._login('test@example.com') with self.client as client: response = client.get(url_for("console.create")) self.assert_200(response) def test_create_fails_capacity(self): with self.client as client: client.get(url_for("console.create")) csrf_token = self.get_context_variable('csrf_token') data = self.capsul_data data['csrf-token'] = csrf_token client.post(url_for("console.create"), data=data) capacity_message = \ '\n host(s) at capacity. no capsuls can be created at this time. sorry. \n ' self.assert_message_flashed(capacity_message, category='message') self.assertEqual( len(get_model().list_vms_for_account('test@example.com')), 0 ) def test_create_fails_invalid(self): with self.client as client: client.get(url_for("console.create")) csrf_token = self.get_context_variable('csrf_token') data = self.capsul_data data['csrf-token'] = csrf_token data['os'] = '' client.post(url_for("console.create"), data=data) self.assert_message_flashed( 'OS is required', category='message' ) self.assertEqual( len(get_model().list_vms_for_account('test@example.com')), 0 ) def test_create_succeeds(self): with self.client as client: client.get(url_for("console.create")) csrf_token = self.get_context_variable('csrf_token') data = self.capsul_data data['csrf-token'] = csrf_token response = client.post(url_for("console.create"), data=data) vms = get_model().list_vms_for_account('test@example.com') self.assertEqual( len(vms), 1 # FIXME: mock create doesn't create, see #83 ) return vm_id = vms[0].id self.assertRedirects( response, url_for("console.index") + f'?{vm_id}' ) def setUp(self): self._login('test@example.com') get_model().create_ssh_public_key('test@example.com', 'key', 'foo') def tearDown(self): get_model().delete_ssh_public_key('test@example.com', 'key')