78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
import unittest
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
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):
|
|
def setUp(self):
|
|
self.group_id = 1
|
|
self.provider = 'test_provider'
|
|
self.region = 'test_region'
|
|
self.instance_id = 'test_instance_id'
|
|
app.config['TESTING'] = True
|
|
self.app = app.test_client()
|
|
|
|
@patch('app.terraform.proxy.SmartProxy')
|
|
@patch('app.terraform.proxy.db')
|
|
def test_update_smart_proxy_instance_new(self, mock_db, mock_smart_proxy):
|
|
# Configure the mocked SmartProxy query to return None
|
|
mock_smart_proxy.query.filter.return_value.first.return_value = None
|
|
|
|
# Call the function
|
|
update_smart_proxy_instance(self.group_id, self.provider, self.region, self.instance_id)
|
|
|
|
# Assert that a new SmartProxy instance was created and added to the session
|
|
mock_smart_proxy.assert_called_once()
|
|
mock_db.session.add.assert_called_once()
|
|
|
|
@patch('app.terraform.proxy.SmartProxy')
|
|
@patch('app.terraform.proxy.db')
|
|
def test_update_smart_proxy_instance_existing(self, mock_db, mock_smart_proxy):
|
|
# Configure the mocked SmartProxy query to return an existing instance
|
|
mock_instance = MagicMock()
|
|
mock_smart_proxy.query.filter.return_value.first.return_value = mock_instance
|
|
|
|
# Call the function
|
|
update_smart_proxy_instance(self.group_id, self.provider, self.region, self.instance_id)
|
|
|
|
# Assert that the existing SmartProxy instance was updated
|
|
self.assertEqual(mock_instance.instance_id, self.instance_id)
|
|
|
|
|
|
@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
|
|
|
|
|
|
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
|