mirror of
https://github.com/dcarrillo/digaws.git
synced 2024-11-01 08:01:11 +00:00
88 lines
2.4 KiB
Python
88 lines
2.4 KiB
Python
import json
|
|
import os
|
|
|
|
import digaws.digaws as digaws
|
|
|
|
import pytest
|
|
|
|
import requests
|
|
|
|
import tests
|
|
|
|
|
|
class MockGetResponse:
|
|
text = tests.AWS_IP_RANGES
|
|
status_code = 200
|
|
|
|
@staticmethod
|
|
def json():
|
|
return json.loads(tests.AWS_IP_RANGES)
|
|
|
|
|
|
def mock_get(*args, **kwargs):
|
|
return MockGetResponse()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_cache_dir(fs):
|
|
digaws.CACHE_DIR.mkdir(parents=True)
|
|
|
|
|
|
@pytest.mark.parametrize('fs', [[None, [digaws]]], indirect=True)
|
|
def test_get_aws_ip_ranges_cached_valid_file(mocker, fs, create_cache_dir) -> None:
|
|
with open(digaws.CACHE_FILE, 'w') as out:
|
|
out.write(tests.AWS_IP_RANGES)
|
|
|
|
response = requests.Response
|
|
response.status_code = 304
|
|
mocker.patch('requests.get', return_value=response)
|
|
|
|
result = digaws.get_aws_ip_ranges()
|
|
|
|
assert result['syncToken'] == '1608245058'
|
|
|
|
|
|
@pytest.mark.parametrize('fs', [[None, [digaws]]], indirect=True)
|
|
def test_get_aws_ip_ranges_cached_invalid_file(mocker, fs, create_cache_dir) -> None:
|
|
with open(digaws.CACHE_FILE, 'w'):
|
|
pass
|
|
|
|
response = requests.Response
|
|
response.status_code = 304
|
|
mocker.patch('requests.get', return_value=response)
|
|
|
|
with pytest.raises(digaws.CachedFileException):
|
|
digaws.get_aws_ip_ranges()
|
|
|
|
|
|
@pytest.mark.parametrize('fs', [[None, [digaws]]], indirect=True)
|
|
def test_get_aws_ip_ranges_cached_deprecated_file(monkeypatch, fs, create_cache_dir) -> None:
|
|
with open(digaws.CACHE_FILE, 'w'):
|
|
pass
|
|
digaws.CACHE_FILE.touch()
|
|
os.utime(digaws.CACHE_FILE, times=(0, 0))
|
|
|
|
monkeypatch.setattr(requests, 'get', mock_get)
|
|
result = digaws.get_aws_ip_ranges()
|
|
|
|
assert result['syncToken'] == '1608245058'
|
|
|
|
|
|
@pytest.mark.parametrize('fs', [[None, [digaws]]], indirect=True)
|
|
def test_get_aws_ip_ranges_no_file(monkeypatch, fs, create_cache_dir) -> None:
|
|
monkeypatch.setattr(requests, 'get', mock_get)
|
|
result = digaws.get_aws_ip_ranges()
|
|
|
|
assert result['syncToken'] == '1608245058'
|
|
|
|
|
|
@pytest.mark.parametrize('fs', [[None, [digaws]]], indirect=True)
|
|
def test_get_aws_ip_ranges_invalid_status(mocker, fs, create_cache_dir) -> None:
|
|
response = requests.Response
|
|
response.status_code = 301
|
|
mocker.patch('requests.get', return_value=response)
|
|
|
|
with pytest.raises(digaws.UnexpectedRequestException) as e:
|
|
digaws.get_aws_ip_ranges()
|
|
assert e.startswith('Unexpected response from')
|