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