示例#1
0
def test_publish_reviewed(mocker):
    mocker.patch.object(Vulnerability,
                        'next_version_number').return_value = 123
    vuln = Vulnerability(state=VulnerabilityState.REVIEWED, version=1)
    vuln.publish_change()

    assert vuln.state == VulnerabilityState.PUBLISHED
    assert vuln.version == 123
    assert not vuln.is_publishable()
    assert not vuln.is_in_review()
示例#2
0
def test_archive_published(mocker):
    # !! mocks all .query getters on all models. Save here as we only use one
    mock_query = mocker.patch(
        'flask_sqlalchemy._QueryProperty.__get__').return_value
    mock_query.filter.return_value.exists.return_value = True
    vuln = Vulnerability(state=VulnerabilityState.PUBLISHED)
    vuln.archive_entry()

    assert vuln.state == VulnerabilityState.ARCHIVED
    assert not vuln.is_publishable()
    assert not vuln.is_in_review()
示例#3
0
def test_archive_requires_published(mocker):
    # !! mocks all .query getters on all models. Save here as we only use one
    mock_query = mocker.patch(
        'flask_sqlalchemy._QueryProperty.__get__').return_value
    mock_query.filter.return_value.first.return_value = False
    vuln = Vulnerability(state=VulnerabilityState.PUBLISHED)

    with pytest.raises(TransitionDenied):
        vuln.archive_entry()

    assert vuln.state == VulnerabilityState.PUBLISHED
    assert not vuln.is_publishable()
    assert not vuln.is_in_review()