mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Update country filter conditionally instead of changing the default
This commit is contained in:
@@ -926,6 +926,42 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
monitors_delete_mock.assert_has_calls([call('mon-id2')])
|
||||
notifylists_delete_mock.assert_has_calls([call('nl-id2')])
|
||||
|
||||
@patch('octodns.provider.ns1.Ns1Provider._monitor_sync')
|
||||
@patch('octodns.provider.ns1.Ns1Provider._monitors_for')
|
||||
def test_params_for_dynamic_no_country(self, monitors_for_mock,
|
||||
monitor_sync_mock):
|
||||
provider = Ns1Provider('test', 'api-key')
|
||||
|
||||
# pre-fill caches to avoid extranious calls (things we're testing
|
||||
# elsewhere)
|
||||
provider._client._datasource_id = 'foo'
|
||||
provider._client._feeds_for_monitors = {
|
||||
'mon-id': 'feed-id',
|
||||
}
|
||||
|
||||
# provider._params_for_A() calls provider._monitors_for() and
|
||||
# provider._monitor_sync(). Mock their return values so that we don't
|
||||
# make NS1 API calls during tests
|
||||
monitors_for_mock.reset_mock()
|
||||
monitor_sync_mock.reset_mock()
|
||||
monitors_for_mock.side_effect = [{
|
||||
'3.4.5.6': 'mid-3',
|
||||
}]
|
||||
monitor_sync_mock.side_effect = [
|
||||
('mid-1', 'fid-1'),
|
||||
('mid-2', 'fid-2'),
|
||||
('mid-3', 'fid-3'),
|
||||
]
|
||||
|
||||
# For complete test coverage, need a test case where the country is
|
||||
# NOT set.
|
||||
rule0 = self.record.data['dynamic']['rules'][0]
|
||||
saved_geos = rule0['geos']
|
||||
rule0['geos'] = ['AF']
|
||||
ret, _ = provider._params_for_A(self.record)
|
||||
self.assertNotEquals(ret['filters'][2]['filter'], 'geofence_country')
|
||||
rule0['geos'] = saved_geos
|
||||
|
||||
@patch('octodns.provider.ns1.Ns1Provider._monitor_sync')
|
||||
@patch('octodns.provider.ns1.Ns1Provider._monitors_for')
|
||||
def test_params_for_dynamic_oceania(self, monitors_for_mock,
|
||||
@@ -961,6 +997,10 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
ret, _ = provider._params_for_A(self.record)
|
||||
self.assertEquals(set(ret['regions']['lhr']['meta']['country']),
|
||||
Ns1Provider._CONTINENT_TO_LIST_OF_COUNTRIES['OC'])
|
||||
# When rules has 'OC', it is converted to list of countries in the
|
||||
# params. Look for filter 'geofence_country' in the returned filters at
|
||||
# index 2
|
||||
self.assertEquals(ret['filters'][2]['filter'], 'geofence_country')
|
||||
rule0['geos'] = saved_geos
|
||||
|
||||
@patch('octodns.provider.ns1.Ns1Provider._monitor_sync')
|
||||
@@ -987,7 +1027,12 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
]
|
||||
# This indirectly calls into _params_for_dynamic_A and tests the
|
||||
# handling to get there
|
||||
provider._params_for_A(self.record)
|
||||
ret, _ = provider._params_for_A(self.record)
|
||||
|
||||
# Given that self.record has a country in the rules, we should find
|
||||
# the filter 'geofence_country' in the returned filters at index 2
|
||||
self.assertEquals(ret['filters'][2]['filter'], 'geofence_country')
|
||||
|
||||
monitors_for_mock.assert_has_calls([call(self.record)])
|
||||
monitors_sync_mock.assert_has_calls([
|
||||
call(self.record, '1.2.3.4', None),
|
||||
@@ -1012,7 +1057,7 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
ns1_record = {
|
||||
'answers': [],
|
||||
'domain': 'unit.tests',
|
||||
'filters': Ns1Provider._DYNAMIC_FILTERS,
|
||||
'filters': Ns1Provider._DEFAULT_DYNAMIC_FILTERS,
|
||||
'regions': {},
|
||||
'ttl': 42,
|
||||
}
|
||||
@@ -1068,7 +1113,7 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
'region': 'iad',
|
||||
}],
|
||||
'domain': 'unit.tests',
|
||||
'filters': Ns1Provider._DYNAMIC_FILTERS,
|
||||
'filters': Ns1Provider._DEFAULT_DYNAMIC_FILTERS,
|
||||
'regions': {
|
||||
'lhr': {
|
||||
'meta': {
|
||||
|
||||
Reference in New Issue
Block a user