def test_preconditions_failed_with_several_mandatory_evidences(self): """No preconditions failed if evidences required by CAs are present""" ca1 = CustomAttributeMock(self.assessment, attribute_type="Dropdown", dropdown_parameters=("foo,evidence_required", "0,2"), value="evidence_required") ca2 = CustomAttributeMock(self.assessment, attribute_type="Dropdown", dropdown_parameters=("foo,evidence_required", "0,2"), value="evidence_required") # only one evidence provided yet evidence = factories.EvidenceTypeDocumentFactory( title="Mandatory evidence", ) factories.RelationshipFactory( source=self.assessment, destination=evidence, ) # the second evidence evidence = factories.EvidenceTypeDocumentFactory( title="Second mandatory evidence", ) factories.RelationshipFactory( source=self.assessment, destination=evidence, ) preconditions_failed = self.assessment.preconditions_failed self.assertFalse(preconditions_failed) self.assertFalse(ca1.value.preconditions_failed) self.assertFalse(ca2.value.preconditions_failed)
def test_preconditions_failed_with_missing_several_mandatory_evidences( self): """Preconditions failed if count(evidences) < count(evidences_required).""" ca1 = CustomAttributeMock(self.assessment, attribute_type="Dropdown", dropdown_parameters=("foo,evidence_required", "0,2"), value="evidence_required") ca2 = CustomAttributeMock(self.assessment, attribute_type="Dropdown", dropdown_parameters=("foo,evidence_required", "0,2"), value="evidence_required") # only one evidence provided yet evidence = factories.EvidenceTypeDocumentFactory( title="Mandatory evidence", ) factories.RelationshipFactory( source=self.assessment, destination=evidence, ) preconditions_failed = self.assessment.preconditions_failed self.assertTrue(preconditions_failed) self.assertEqual(ca1.value.preconditions_failed, ["evidence"]) self.assertEqual(ca2.value.preconditions_failed, ["evidence"])
def test_filter_document_by_type(self, document_type): """Test filter documents by document type.""" data = { all_models.Document.ATTACHMENT: factories.EvidenceTypeDocumentFactory().id, all_models.Document.URL: factories.UrlTypeDocumentFactory().id, } query_request_data = [{ u'fields': [], u'filters': { u'expression': { u'left': u'document_type', u'op': { u'name': u'=' }, u'right': document_type, } }, u'limit': [0, 5], u'object_name': u'Document', u'permissions': u'read', u'type': u'values', }] resp = self.api.send_request(self.api.client.post, data=query_request_data, api_link="/query") self.assertEqual(1, resp.json[0]["Document"]["count"]) self.assertEqual(data[document_type], resp.json[0]["Document"]["values"][0]["id"])
def test_evidence_create_an_map(self): """Test document is created and mapped to audit""" audit = factories.AuditFactory(slug="Audit") evidence = factories.EvidenceTypeDocumentFactory(title="evidence", ) factories.RelationshipFactory( source=audit, destination=evidence, ) self.assertEqual(audit.document_evidence[0].title, "evidence")
def test_get_documentable_obj_control_type(self): """Test mapping documentable of Control type""" control = factories.ControlFactory() document = factories.EvidenceTypeDocumentFactory(documentable_obj={ 'id': control.id, 'type': 'Control' }) expected_control = document.related_objects( _types=[control.type]).pop() self.assertEqual(expected_control, control)
def test_documentable_obj_validation_wrong_type(self): """Validation documentable_obj type. Type should be in 'Assessment', 'Control', 'Audit', 'Issue', 'RiskAssessment'. """ control = factories.ControlFactory() with self.assertRaises(exceptions.ValidationError): factories.EvidenceTypeDocumentFactory(documentable_obj={ 'id': control.id, 'type': 'Program' })
def test_copy_document(self): """Test copy document.""" control = factories.ControlFactory() factories.EvidenceTypeDocumentFactory( source_gdrive_id='test_gdrive_id', documentable_obj={ 'id': control.id, 'type': 'Control' }) self.assertEqual(len(control.documents), 1) # data from dummy_gdrive_response self.assertEqual(control.document_evidence[0].title, 'test_name') self.assertEqual(control.document_evidence[0].gdrive_id, '1234567')
def test_preconditions_failed_with_present_mandatory_evidence(self): """No preconditions failed if evidence required by CA is present.""" ca = CustomAttributeMock( self.assessment, attribute_type="Dropdown", dropdown_parameters=("foo,evidence_required", "0,2"), value="evidence_required", ) evidence = factories.EvidenceTypeDocumentFactory( title="Mandatory evidence", ) factories.RelationshipFactory( source=self.assessment, destination=evidence, ) preconditions_failed = self.assessment.preconditions_failed self.assertFalse(preconditions_failed) self.assertFalse(ca.value.preconditions_failed)
def test_documentable_postfix_one_control(self): """Test documentable postfix for assessment with one control.""" with factories.single_commit(): audit = factories.AuditFactory() control = factories.ControlFactory() snapshot = self._create_snapshots(audit, [control])[0] assessment = factories.AssessmentFactory(audit=audit) factories.RelationshipFactory(source=assessment, destination=snapshot) document = factories.EvidenceTypeDocumentFactory(documentable_obj={ 'id': assessment.id, 'type': 'Assessment' }) expected = '_ggrc_assessment-{}_control-{}'.format( assessment.id, control.id) # pylint: disable=protected-access result = document._build_file_name_postfix(assessment) self.assertEqual(expected, result)
def test_rename_document(self): """Test rename document.""" with mock.patch( 'ggrc.gdrive.file_actions.process_gdrive_file') as mocked: mocked.return_value = { 'webViewLink': 'http://mega.doc', 'name': 'new_name', 'id': '1234567' } control = factories.ControlFactory() factories.EvidenceTypeDocumentFactory(is_uploaded=True, source_gdrive_id='some link', documentable_obj={ 'id': control.id, 'type': 'Control' }) folder_id = '' mocked.assert_called_with(folder_id, 'some link', '_ggrc_control-{}'.format(control.id), is_uploaded=True, separator='_ggrc') self.assertEqual(len(control.documents), 1) self.assertEqual(control.document_evidence[0].title, 'new_name')
def test_documentable_obj_validation_is_type_presents(self): """Validation documentable_obj type should present.""" control = factories.ControlFactory() with self.assertRaises(exceptions.ValidationError): factories.EvidenceTypeDocumentFactory( documentable_obj={'id': control.id})
def test_documentable_obj_validation_is_id_presents(self): """Validation documentable_obj id should present.""" with self.assertRaises(exceptions.ValidationError): factories.EvidenceTypeDocumentFactory( documentable_obj={'type': 'Control'})