def test_download_pypi_release_when_isolated_is_on(requests_mock, rf, settings): file_data = 'Hello from PyPI' md5_digest = md5(file_data).hexdigest() settings.LOCALSHOP_ISOLATED = True CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory(distribution=None, md5_digest=md5_digest) args = (release_file.release.package.name, release_file.pk, release_file.filename) requests_mock.return_value = Mock(**{ 'headers': { 'content-length': len(file_data), 'content-type': 'application/octet-stream', }, 'content': file_data, }) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) assert response.status_code == 200 assert response.content == file_data requests_mock.assert_called_with( u'http://www.example.org/download/test-1.0.0-sdist.zip', proxies=None, stream=True)
def test_download_pypi_release_when_isolated_is_on(requests_mock, rf, settings): file_data = 'Hello from PyPI' md5_digest = md5(file_data).hexdigest() settings.LOCALSHOP_ISOLATED = True CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory(distribution=None, md5_digest=md5_digest) args = (release_file.release.package.name, release_file.pk, release_file.filename) requests_mock.return_value = Mock( **{ 'headers': { 'content-length': len(file_data), 'content-type': 'application/octet-stream', }, 'content': file_data, }) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) assert response.status_code == 200 assert response.content == file_data requests_mock.assert_called_with( u'http://www.example.org/download/test-1.0.0-sdist.zip', proxies=None, stream=True)
def test_download_pypi_release(download_file_mock, rf): CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory(distribution=None) args = (release_file.release.package.name, release_file.pk, release_file.filename) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) # The request is redirected to PyPI assert response.status_code == 302 assert response.url == release_file.url # The download file task must the queued assert download_file_mock.delay.call_count == 1 assert download_file_mock.delay.call_args[1] == {'pk': release_file.pk}
def test_download_local_release(rf, isolated, settings): settings.LOCALSHOP_ISOLATED = isolated CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory() args = (release_file.release.package.name, release_file.pk, release_file.filename) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) # Localshop must return the release file assert response.status_code == 200 assert response.content == 'the file data' assert response.get('Content-Length') == '13' assert response.get('Content-Disposition') == 'attachment; filename=test-1.0.0-sdist.zip'
def test_download_local_release(rf, isolated, settings): settings.LOCALSHOP_ISOLATED = isolated CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory() args = (release_file.release.package.name, release_file.pk, release_file.filename) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) # Localshop must return the release file assert response.status_code == 200 assert response.content == 'the file data' assert response.get('Content-Length') == '13' assert response.get( 'Content-Disposition') == 'attachment; filename=test-1.0.0-sdist.zip'
def test_release_with_a_missing_file(download_file_mock, rf): """ If a local ReleaseFile had a missing file we must set local as False, redirect to the PyPI, requeue the download_file task. """ CIDR.objects.create(cidr='0.0.0.0/0', require_credentials=False) release_file = ReleaseFileFactory() os.remove(release_file.distribution.path) args = (release_file.release.package.name, release_file.pk, release_file.filename) request = rf.get(reverse('packages:download', args=args)) response = download_file(request, *args) # The request is redirected to PyPI assert response.status_code == 302 assert response.url == release_file.url # The download file task must the queued assert download_file_mock.delay.call_count == 1 assert download_file_mock.delay.call_args[1] == {'pk': release_file.pk}