feat(proxy): rewrite the meta module to support hot spares

This commit is contained in:
Iain Learmonth 2023-05-30 16:38:00 +01:00
parent 9f726731c6
commit 8115966aca
4 changed files with 327 additions and 99 deletions

View file

@ -1,7 +1,11 @@
import unittest
from unittest.mock import MagicMock, patch
from app.terraform.proxy import ProxyAutomation, update_smart_proxy_instance
import pytest
from app import app
from app.terraform.proxy import update_smart_proxy_instance
from app.terraform.proxy.meta import random_slug, next_subgroup, Proxy
class TestUpdateSmartProxyInstance(unittest.TestCase):
@ -40,17 +44,35 @@ class TestUpdateSmartProxyInstance(unittest.TestCase):
self.assertEqual(mock_instance.instance_id, self.instance_id)
class TestProxyAutomation(unittest.TestCase):
def setUp(self):
app.config['TESTING'] = True
self.app = app.test_client()
def test_proxy_automation_abstract_methods(self):
# Test NotImplementedError for import_state
with self.assertRaises(NotImplementedError):
proxy_automation = ProxyAutomation()
proxy_automation.import_state(None)
@pytest.fixture
def active_proxies():
proxies = [MagicMock(spec=Proxy) for _ in range(5)]
for proxy in proxies:
proxy.deprecated = None
proxy.destroyed = None
return proxies
if __name__ == '__main__':
unittest.main()
def test_random_slug():
slug = random_slug("example.com")
assert slug[:5] == "examp"
assert len(slug) == 17
def test_next_subgroup():
subgroup_count = {
'provider1': {
1: {
1: 3
},
2: {
1: 2,
2: 5
},
3: {}
}
}
assert next_subgroup(subgroup_count, 'provider1', 1, 3, 5) == 1
assert next_subgroup(subgroup_count, 'provider1', 1, 5, 3) == 2
assert next_subgroup(subgroup_count, 'provider1', 2, 3, 2) == 3
assert next_subgroup(subgroup_count, 'provider1', 3, 3, 5) == 1