def test_download_server_bad_sha(self, get_version_info, requests_get, mock_open): """ Tests that we handle when the jar download has an incorrect SHA """ get_version_info.return_value = { 'id': 'test', 'downloads': { 'server': { 'url': 'http://example.com/mc/test/server', 'sha1': 'deadbeef', }, }, } mock_response = unittest.mock.Mock(spec = requests.Response) mock_response.ok = True mock_response.iter_content.return_value = io.BytesIO( 'Hello, world!'.encode(), ) requests_get.return_value = mock_response file_stream = io.BytesIO() mock_open.return_value = mock_open mock_open.__enter__.return_value = file_stream Server.download_server_jar( 'test', path = 'home', )
def test_download_server_no_server(self, get_version_info): """ Tests that we handle then there's no server download for this version """ get_version_info.return_value = { 'id': 'test', 'downloads': {}, } Server.download_server_jar('test')
def test_download_server_response(self, get_version_info, requests_get): """ Tests that we handle bad responses while downloading """ get_version_info.return_value = SAMPLE_VERSION mock_response = unittest.mock.Mock(spec = requests.Response) mock_response.ok = False requests_get.return_value = mock_response Server.download_server_jar('my_release')
def _do_server_download_test(self, target, path): root = path if path is not None else os.getcwd() with unittest.mock.patch('mymcadmin.server.Server.get_version_info') as get_version_info, \ unittest.mock.patch('requests.get') as requests_get, \ unittest.mock.patch('builtins.open') as mock_open: get_version_info.return_value = SAMPLE_VERSION mock_response = unittest.mock.Mock(spec = requests.Response) mock_response.ok = True mock_response.iter_content.return_value = io.BytesIO( 'Hello, world!'.encode(), ) requests_get.return_value = mock_response file_stream = io.BytesIO() mock_open.return_value = mock_open mock_open.__enter__.return_value = file_stream jar_path = Server.download_server_jar( version_id = target, path = path, ) self.assertEqual( os.path.join(root, 'minecraft_server_my_release.jar'), jar_path, 'Jar file path did not match expected', ) mock_open.assert_called_with( jar_path, 'wb', ) get_version_info.assert_called_with(target) requests_get.assert_called_with( 'http://example.com/download/myrelease/server', stream = True, )