コード例 #1
0
 def test_change_empty_mapping_list(self):
   """Test create mapping list proposal to empty."""
   with factories.single_commit():
     category = factories.ControlCategoryFactory()
     control = factories.ControlFactory(categories=[category])
   data = control.log_json()
   category_id = category.id
   control_id = control.id
   data["categories"] = []
   resp = self.api.post(
       all_models.Proposal,
       {"proposal": {
           "instance": {
               "id": control.id,
               "type": control.type,
           },
           # "content": {"123": 123},
           "full_instance_content": data,
           "agenda": "update categories",
           "context": None,
       }})
   self.assertEqual(201, resp.status_code)
   control = all_models.Control.query.get(control_id)
   category = all_models.ControlCategory.query.get(category_id)
   self.assertEqual(1, len(control.proposals))
   self.assertIn("mapping_list_fields", control.proposals[0].content)
   fields = control.proposals[0].content["mapping_list_fields"]
   self.assertIn("categories", fields)
   self.assertEqual(
       {"added": [],
        "deleted": [json.loads(utils.as_json(category.log_json()))]},
       fields["categories"])
   self.assertEqual(1, len(control.comments))
コード例 #2
0
ファイル: test_snapshots.py プロジェクト: wslukaa/ggrc-core
    def test_categories_filter(self):
        """Control Snapshots are filtered by categories."""
        with factories.single_commit():
            program = factories.ProgramFactory()
            program_id = program.id

            category = factories.ControlCategoryFactory(scope_id=100)
            category_id = category.id
            control = factories.ControlFactory()
            control.categories.append(category)
            control_id = control.id
            factories.RelationshipFactory(source=program, destination=control)
            revision = all_models.Revision.query.filter(
                all_models.Revision.resource_type == "Control",
                all_models.Revision.resource_id == control_id).order_by(
                    all_models.Revision.updated_at.desc()).first()
            revision.content = control.log_json()

        program = models.Program.query.filter_by(id=program_id).one()
        self._create_audit(program=program, title="some title")
        category = models.ControlCategory.query.get(category_id)
        control_result = self._get_first_result_set(
            self._make_snapshot_query_dict(
                "Control",
                expression=["categories", "=", "{}".format(category.name)]),
            "Snapshot",
        )
        self.assertEqual(control_result["count"], 1)
        snapshot_categories = \
            control_result["values"][0]["revision"]["content"]["categories"]
        self.assertEqual(category.name, snapshot_categories[0]["display_name"])
コード例 #3
0
 def test_apply_mapping_list(self):
   """Test apply mapping list proposal."""
   with factories.single_commit():
     category = factories.ControlCategoryFactory()
     control = factories.ControlFactory()
   control_id = control.id
   category_id = category.id
   with factories.single_commit():
     proposal = factories.ProposalFactory(
         instance=control,
         content={
             "mapping_list_fields": {
                 "categories": {
                     "deleted": [],
                     "added": [
                         {"id": category_id, "type": "ControlCategory"},
                     ]
                 }
             }
         },
         agenda="agenda content")
   proposal_id = proposal.id
   with self.number_obj_revisions_for(control):
     self.apply_proposal(proposal, apply_reason="approved")
   control = all_models.Control.query.get(control_id)
   proposal = all_models.Proposal.query.get(proposal_id)
   self.assertEqual(proposal.STATES.APPLIED, proposal.status)
   control = all_models.Control.query.get(control_id)
   self.assertEqual([all_models.ControlCategory.query.get(category_id)],
                    control.categories)
   self.assertEqual(1, len(control.comments))
   comment = control.comments[0]
   self.assertEqual(proposal, comment.initiator_instance)
コード例 #4
0
 def test_change_empty_mapping_list(self):
     """Test create mapping list proposal to empty."""
     with factories.single_commit():
         category = factories.ControlCategoryFactory()
         control = factories.ControlFactory(categories=[category])
     data = control.log_json()
     category_id = category.id
     control_id = control.id
     data["categories"] = []
     self.create_proposal(control,
                          full_instance_content=data,
                          agenda="update categories",
                          context=None)
     control = all_models.Control.query.get(control_id)
     category = all_models.ControlCategory.query.get(category_id)
     self.assertEqual(1, len(control.proposals))
     self.assertIn("mapping_list_fields", control.proposals[0].content)
     fields = control.proposals[0].content["mapping_list_fields"]
     self.assertIn("categories", fields)
     self.assertEqual(
         {
             "added": [],
             "deleted": [json.loads(utils.as_json(category.log_json()))]
         }, fields["categories"])
     self.assertEqual(1, len(control.comments))
コード例 #5
0
 def test_change_mapping_list(self):
     """Test create mapping list proposal."""
     with factories.single_commit():
         cat = factories.ControlCategoryFactory()
         control = factories.ControlFactory(title="1")
     data = control.log_json()
     control_id = control.id
     data["categories"] = [{"id": cat.id, "type": cat.type}]
     cat_id = cat.id
     self.create_proposal(control,
                          full_instance_content=data,
                          agenda="update categories",
                          context=None)
     control = all_models.Control.query.get(control_id)
     self.assertEqual(1, len(control.proposals))
     self.assertIn("mapping_list_fields", control.proposals[0].content)
     fields = control.proposals[0].content["mapping_list_fields"]
     self.assertIn("categories", fields)
     self.assertEqual(
         {
             "added": [{
                 "id": cat_id,
                 "type": "ControlCategory"
             }],
             "deleted": []
         }, fields["categories"])
     self.assertEqual(1, len(control.comments))
コード例 #6
0
 def test_simple_categorization(self):
   category = factories.ControlCategoryFactory(scope_id=100)
   control = factories.ControlFactory()
   control.categories.append(category)
   db.session.commit()
   self.assertIn(category, control.categories)
   # be really really sure
   control = db.session.query(Control).get(control.id)
   self.assertIn(category, control.categories)
コード例 #7
0
 def test_simple_categorization(self):
     """Check category append to control."""
     category = factories.ControlCategoryFactory()
     control = factories.ControlFactory()
     control.categories.append(category)
     db.session.commit()
     self.assertIn(category, control.categories)
     # be really really sure
     control = db.session.query(all_models.Control).get(control.id)
     self.assertIn(category, control.categories)
コード例 #8
0
 def test_apply_mapping_list(self):
     """Test apply mapping list proposal."""
     with factories.single_commit():
         category = factories.ControlCategoryFactory()
         control = factories.ControlFactory()
     control_id = control.id
     category_id = category.id
     with factories.single_commit():
         proposal = factories.ProposalFactory(
             instance=control,
             content={
                 "mapping_list_fields": {
                     "categories": {
                         "deleted": [],
                         "added": [
                             {
                                 "id": category_id,
                                 "type": "ControlCategory"
                             },
                         ]
                     }
                 }
             },
             agenda="agenda content")
     proposal_id = proposal.id
     revisions = all_models.Revision.query.filter(
         all_models.Revision.resource_type == control.type,
         all_models.Revision.resource_id == control.id).all()
     self.assertEqual(1, len(revisions))
     resp = self.api.put(
         proposal, {
             "proposal": {
                 "status": proposal.STATES.APPLIED,
                 "apply_reason": "approved",
             }
         })
     self.assertEqual(200, resp.status_code)
     control = all_models.Control.query.get(control_id)
     proposal = all_models.Proposal.query.get(proposal_id)
     self.assertEqual(proposal.STATES.APPLIED, proposal.status)
     control = all_models.Control.query.get(control_id)
     self.assertEqual([all_models.ControlCategory.query.get(category_id)],
                      control.categories)
     revisions = all_models.Revision.query.filter(
         all_models.Revision.resource_type == control.type,
         all_models.Revision.resource_id == control.id).all()
     self.assertEqual(2, len(revisions))
     self.assertEqual(1, len(control.comments))
     comment = control.comments[0]
     self.assertEqual(proposal, comment.initiator_instance)