mirror of
				https://github.com/dcarrillo/digaws.git
				synced 2025-10-31 06:29:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 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.match('^Unexpected response from')
 |