Ejemplo n.º 1
0
    def test_role_attribute(self):
        """Test access control role collisions with attributes & CADs"""
        db.session.add(
            models.CustomAttributeDefinition(
                title="my custom attribute title",
                definition_type="requirement",
                attribute_type="Text",
            ))
        db.session.commit()

        with self.assertRaises(ValueError):
            db.session.add(
                models.AccessControlRole(
                    name="title",
                    object_type="Market",
                ))
            db.session.commit()

        with self.assertRaises(ValueError):
            db.session.add(
                models.AccessControlRole(
                    name="my custom attribute title",
                    object_type="Requirement",
                ))
            db.session.commit()
Ejemplo n.º 2
0
    def test_setting_global_cad_names(self):
        """Test duplicates with global attribute names."""

        db.session.add(
            models.CustomAttributeDefinition(
                title="global cad",
                definition_type="requirement",
                attribute_type="Text",
            ))
        db.session.add(
            models.CustomAttributeDefinition(
                title="non existing title",
                definition_type="requirement",
                definition_id=1,
                attribute_type="Text",
            ))
        db.session.add(
            models.CustomAttributeDefinition(
                title="non existing title",
                definition_type="requirement",
                definition_id=2,
                attribute_type="Text",
            ))
        db.session.add(
            models.AccessControlRole(
                name="a name for a role",
                object_type="Requirement",
            ))
        db.session.commit()

        with self.assertRaises(IntegrityError):
            db.session.add(
                models.CustomAttributeDefinition(
                    title="non existing title",
                    definition_type="requirement",
                    definition_id=2,
                    attribute_type="Text",
                ))
            db.session.commit()
        db.session.rollback()

        with self.assertRaises(ValueError):
            db.session.add(
                models.CustomAttributeDefinition(
                    title="global cad",
                    definition_type="requirement",
                    definition_id=2,
                    attribute_type="Text",
                ))
            db.session.commit()

        with self.assertRaises(ValueError):
            db.session.add(
                models.CustomAttributeDefinition(
                    title="a name for a role",
                    definition_type="requirement",
                    definition_id=2,
                    attribute_type="Text",
                ))
            db.session.commit()
Ejemplo n.º 3
0
    def test_with_dict_objs_multiple(self):
        """Test access_control_list setter without ids"""
        def acl_query():
            return db.session.query(
                all_models.AccessControlList.person_id,
                all_models.AccessControlList.ac_role_id).filter(
                    all_models.AccessControlList.object_id == obj.id,
                    all_models.AccessControlList.object_type ==
                    "Control").all()

        person_1 = all_models.Person(name="Frodo", email="*****@*****.**")
        person_2 = all_models.Person(name="Bilbo", email="*****@*****.**")
        person_3 = factories.PersonFactory(name="Merry",
                                           email="*****@*****.**")
        role = all_models.AccessControlRole(name="Hobbit")
        obj = all_models.Control(title="Test Control",
                                 access_control_list=[{
                                     "person": person_1,
                                     "ac_role": self.role,
                                 }, {
                                     "person": person_2,
                                     "ac_role": role,
                                 }])
        db.session.commit()
        self.assertIsNotNone(obj.access_control_list)
        self.assertEqual(len(obj.access_control_list), 2)
        self.assertEqual(obj.access_control_list[0].person, person_1)
        self.assertEqual(obj.access_control_list[1].person, person_2)

        acls = acl_query()
        self.assertItemsEqual([(person_1.id, self.role.id),
                               (person_2.id, role.id)], acls)

        obj.access_control_list = [{
            "person": {
                "id": person_2.id,
            },
            "ac_role_id": role.id,
        }, {
            "person": {
                "id": person_3.id,
            },
            "ac_role_id": role.id,
        }]
        db.session.commit()

        acls = acl_query()
        self.assertItemsEqual([(person_2.id, role.id), (person_3.id, role.id)],
                              acls)
 def test_different_models(self):
   """Test unique names over on different models."""
   db.session.add(models.CustomAttributeDefinition(
       title="my custom attribute title",
       definition_type="section",
       attribute_type="Text",
   ))
   db.session.commit()
   db.session.add(models.AccessControlRole(
       name="my custom attribute title",
       object_type="Contract",
   ))
   db.session.commit()
   cad = models.CustomAttributeDefinition(
       title="my custom attribute title",
       definition_type="program",
       attribute_type="Text",
   )
   self.assertEqual(cad.title, "my custom attribute title")
Ejemplo n.º 5
0
 def setUp(self):
     # pylint: disable=protected-access
     self.acr = all_models.AccessControlRole()
     self.acr._get_reserved_names = MagicMock(
         return_value=frozenset({'title'}))
     self.acr._get_global_cad_names = MagicMock(return_value={'reg url': 1})