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"])
예제 #3
0
 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"])
예제 #4
0
 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)
예제 #10
0
 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')
예제 #11
0
 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})
예제 #12
0
 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'})