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()