Exemplo n.º 1
0
def test_deny_reviewed():
    vuln = Vulnerability(state=VulnerabilityState.REVIEWED)
    vuln.deny_change('merge conflict')

    assert vuln.state == VulnerabilityState.NEW
    assert vuln.review_feedback == 'merge conflict'
    assert not vuln.is_publishable()
    assert not vuln.is_reviewable()
Exemplo n.º 2
0
def test_return_review():
    rev = reviewer()
    vuln = Vulnerability(state=VulnerabilityState.IN_REVIEW, reviewer=rev)
    vuln.return_to_review_pool()

    assert vuln.state == VulnerabilityState.READY
    assert vuln.reviewer is None
    assert not vuln.is_publishable()
    assert vuln.is_reviewable()
Exemplo n.º 3
0
def test_deny_reviewed():
    vuln = Vulnerability(state=VulnerabilityState.REVIEWED)
    rev = reviewer()
    vuln.deny_change(rev, 'merge conflict')

    assert vuln.state == VulnerabilityState.NEEDS_IMPROVEMENT
    assert vuln.review_feedback == 'merge conflict'
    assert not vuln.is_publishable()
    assert not vuln.is_reviewable()
Exemplo n.º 4
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()
Exemplo n.º 5
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()
Exemplo n.º 6
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()
Exemplo n.º 7
0
def test_accept_change_after_review():
    vuln = Vulnerability(state=VulnerabilityState.IN_REVIEW)
    vuln.accept_change()

    assert vuln.state == VulnerabilityState.REVIEWED
    assert vuln.is_publishable()