diff --git a/capsulflask/tests/test_console.py b/capsulflask/tests/test_console.py index 1b9f4ca..7d4abee 100644 --- a/capsulflask/tests/test_console.py +++ b/capsulflask/tests/test_console.py @@ -12,6 +12,12 @@ class ConsoleTests(BaseTestCase): "ssh_key_0": "key" } + ssh_key_data = { + "name": "key2", + "method": "POST", + "content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDntq1t8Ddsa2q4p+PM7W4CLYYmxakokRRVLlf7AQlsTJFPsgBe9u0zuoOaKDMkBr0dlnuLm4Eub1Mj+BrdqAokto0YDiAnxUKRuYQKuHySKK8bLkisi2k47jGBDikx/jihgiuFTawo1mYsJJepC7PPwZGsoCImJEgq1L+ug0p3Zrj3QkUx4h25MpCSs2yvfgWjDyN8hEC76O42P+4ETezYrzrd1Kj26hdzHRnrxygvIUOtfau+5ydlaz8xQBEPrEY6/+pKDuwtXg1pBL7GmoUxBXVfHQSgq5s9jIJH+G0CR0ZoHMB25Ln4X/bsCQbLOu21+IGYKSDVM5TIMLtkKUkERQMVWvnpOp1LZKir4dC0m7SW74wpA8+2b1IsURIr9ARYGJpCEv1Q1Wz/X3yTf6Mfey7992MjUc9HcgjgU01/+kYomoXHprzolk+22Gjfgo3a4dRIoTY82GO8kkUKiaWHvDkkVURCY5dpteLA05sk3Z9aRMYsNXPLeOOPfzTlDA0=" + } + def test_index(self): self._login('test@example.com') with self.client as client: @@ -86,6 +92,59 @@ class ConsoleTests(BaseTestCase): url_for("console.index") + f'?{vm_id}' ) + def test_keys_loads(self): + self._login('test@example.com') + with self.client as client: + response = client.get(url_for("console.ssh_public_keys")) + self.assert_200(response) + keys = self.get_context_variable('ssh_public_keys') + self.assertEqual(keys[0]['name'], 'key') + + def test_keys_add_fails_invalid(self): + self._login('test@example.com') + with self.client as client: + client.get(url_for("console.ssh_public_keys")) + csrf_token = self.get_context_variable('csrf_token') + + data = self.ssh_key_data + data['csrf-token'] = csrf_token + + data_invalid_content = data + data_invalid_content['content'] = 'foo' + client.post( + url_for("console.ssh_public_keys"), + data=data_invalid_content + ) + + self.assert_message_flashed( + 'Content must match "^(ssh|ecdsa)-[0-9A-Za-z+/_=@:. -]+$"', + category='message' + ) + + data_missing_content = data + data_missing_content['content'] = '' + client.post(url_for("console.ssh_public_keys"), data=data_missing_content) + + self.assert_message_flashed( + 'Content is required', category='message' + ) + + def test_keys_add_fails_duplicate(self): + self._login('test@example.com') + with self.client as client: + client.get(url_for("console.ssh_public_keys")) + csrf_token = self.get_context_variable('csrf_token') + + data = self.ssh_key_data + data['csrf-token'] = csrf_token + data['name'] = 'key' + client.post(url_for("console.ssh_public_keys"), data=data) + + self.assert_message_flashed( + 'A key with that name already exists', + category='message' + ) + def setUp(self): self._login('test@example.com')