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)
Example #2
0
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)
Example #3
0
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_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}
Example #6
0
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'
Example #7
0
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}
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}