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()
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()
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()
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()
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()
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()
def test_accept_change_after_review(): vuln = Vulnerability(state=VulnerabilityState.IN_REVIEW) vuln.accept_change() assert vuln.state == VulnerabilityState.REVIEWED assert vuln.is_publishable()