示例#1
0
def test_json_missing(monkeypatch, project):
    get_project = pretend.call_recorder(lambda n: project)
    get_project_versions = pretend.call_recorder(lambda n: [])
    app = pretend.stub(
        db=pretend.stub(
            packaging=pretend.stub(
                get_project=get_project,
                get_project_versions=get_project_versions,
            )
        )
    )
    request = pretend.stub(args={})

    with pytest.raises(NotFound):
        pypi.project_json(app, request, project_name='spam')
示例#2
0
def test_json_missing(monkeypatch, project, version):
    return_value = {'name': project} if project else None
    get_project = pretend.call_recorder(lambda n: return_value)
    get_project_versions = pretend.call_recorder(lambda n: [])
    app = pretend.stub(
        db=pretend.stub(
            packaging=pretend.stub(
                get_project=get_project,
                get_project_versions=get_project_versions,
            )
        )
    )
    request = pretend.stub(args={})

    with pytest.raises(NotFound):
        pypi.project_json(app, request, project_name='spam', version=version)
示例#3
0
def test_json(monkeypatch, version, callback):
    get_project = pretend.call_recorder(lambda n: {'name': 'spam'})
    get_project_versions = pretend.call_recorder(lambda n: ['2.0', '1.0'])
    get_last_serial = pretend.call_recorder(lambda *n: 42)
    app = pretend.stub(
        config=pretend.stub(cache=pretend.stub(browser=False, varnish=False)),
        db=pretend.stub(
            packaging=pretend.stub(
                get_project=get_project,
                get_project_versions=get_project_versions,
                get_last_serial=get_last_serial,
            )
        )
    )
    request = pretend.stub(args={})
    if callback:
        request.args['callback'] = callback

    release_data = pretend.call_recorder(lambda n, v: dict(some='data'))
    release_urls = pretend.call_recorder(lambda n, v: [dict(
        some='url',
        upload_time=datetime.date(1970, 1, 1)
    )])
    all_release_urls = pretend.call_recorder(lambda *n: {
        '1.0': [dict(some='data', upload_time=datetime.date(1970, 1, 1))],
        '2.0': [dict(some='data', upload_time=datetime.date(1970, 1, 1))],
    })
    Interface = pretend.call_recorder(lambda a, r: pretend.stub(
        release_data=release_data,
        release_urls=release_urls,
        all_release_urls=all_release_urls,
    ))

    monkeypatch.setattr(xmlrpc, 'Interface', Interface)

    resp = pypi.project_json(app, request, project_name='spam',
                             version=version)

    assert get_project.calls == [pretend.call('spam')]
    assert get_project_versions.calls == [pretend.call('spam')]
    assert release_data.calls == [pretend.call('spam', version or '2.0')]
    assert release_urls.calls == [pretend.call('spam', version or '2.0')]
    assert all_release_urls.calls == [pretend.call('spam')]
    assert get_last_serial.calls == [pretend.call()]
    expected = '{"info": {"some": "data"}, ' \
        '"releases": ' \
        '{"1.0": [{"some": "data", "upload_time": "1970-01-01T00:00:00"}], ' \
        '"2.0": [{"some": "data", "upload_time": "1970-01-01T00:00:00"}]}, ' \
        '"urls": [{"some": "url", "upload_time": "1970-01-01T00:00:00"}]}'
    if callback:
        expected = '/**/ %s(%s);' % (callback, expected)
    assert resp.data == expected.encode("utf8")
示例#4
0
def test_jsonp_invalid():
    app = pretend.stub()
    request = pretend.stub(args={'callback': 'quite invalid'})
    with pytest.raises(BadRequest):
        pypi.project_json(app, request, project_name='spam')
示例#5
0
def test_jsonp_invalid():
    app = pretend.stub()
    request = pretend.stub(args={'callback': 'quite invalid'})
    with pytest.raises(BadRequest):
        pypi.project_json(app, request, project_name='spam')