本文整理汇总了Python中integration.ggrc.Api.delete方法的典型用法代码示例。如果您正苦于以下问题:Python Api.delete方法的具体用法?Python Api.delete怎么用?Python Api.delete使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类integration.ggrc.Api
的用法示例。
在下文中一共展示了Api.delete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CycleTaskEntryRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class CycleTaskEntryRBACFactory(base.BaseRBACFactory):
"""Cycle Task Entry RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Cycle Task Entry permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_workflow_scope(user_id, acr)
self.api = Api()
self.create()
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Cycle Task Entry object."""
cycle_task = all_models.CycleTaskGroupObjectTask.query.first()
return self.api.post(all_models.CycleTaskEntry, {
"cycle_task_entry": {
"description": "New Comment",
"is_declining_review": "",
"context": None,
"cycle_task_group_object_task": {
"id": cycle_task.id,
"type": "CycleTaskGroupObjectTask",
},
"cycle": {
"id": cycle_task.cycle.id,
"type": "Cycle",
},
}
})
def read(self):
"""Read existing Cycle Task Entry object."""
cycle_task_entry = all_models.CycleTaskEntry.query.first()
return self.api.get(cycle_task_entry, cycle_task_entry.id)
def update(self):
"""Update title of existing Cycle Task Entry object."""
cycle_task_entry = all_models.CycleTaskEntry.query.first()
return self.api.put(
cycle_task_entry,
{"description": factories.random_str()}
)
def delete(self):
"""Delete Cycle Task Entry object."""
cycle_task_entry = all_models.CycleTaskEntry.query.first()
return self.api.delete(cycle_task_entry)
示例2: CycleRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class CycleRBACFactory(base.BaseRBACFactory):
"""Cycle RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Cycle permission tests.
Args:
user_id: Id of user under which all operations will be run.
object_acl: Dict with format: {
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_workflow_scope(user_id, acr)
self.api = Api()
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new cycle for Workflow."""
return self.generate_cycle(self.workflow_id, self.api)
def update(self):
"""Update existing cycle."""
cycle = all_models.Cycle.query.first()
return self.api.put(cycle, {"title": factories.random_str()})
def delete(self):
"""Delete existing cycle."""
cycle = all_models.Cycle.query.first()
return self.api.delete(cycle)
def activate(self):
"""Activate Workflow."""
workflow = all_models.Workflow.query.get(self.workflow_id)
cycle = wf_factories.CycleFactory(workflow=workflow)
return self.api.put(workflow, {
"status": "Active",
"recurrences": bool(workflow.repeat_every and workflow.unit),
"cycles": [{
"id": cycle.id,
"type": "Cycle",
}]
})
def read(self):
"""Read existing Cycle object."""
cycle = all_models.Cycle.query.first()
return self.api.get(cycle, cycle.id)
def end(self):
"""End existing Cycle."""
cycle = all_models.Cycle.query.first()
return self.api.put(cycle, {"is_current": False})
示例3: CycleTaskGroupRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class CycleTaskGroupRBACFactory(base.BaseRBACFactory):
"""Cycle Task Group RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Cycle Task Group permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_workflow_scope(user_id, acr)
self.admin_control_id = {
name: id_ for id_, name
in access_control.role.get_custom_roles_for("Control").items()
}["Admin"]
self.api = Api()
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def read(self):
"""Read existing Cycle Task Group object."""
cycle_tg = all_models.CycleTaskGroup.query.first()
return self.api.get(all_models.CycleTaskGroup, cycle_tg.id)
def update(self):
"""Update title of existing Cycle Task Group object."""
cycle_tg = all_models.CycleTaskGroup.query.first()
return self.api.put(cycle_tg, {"title": factories.random_str()})
def delete(self):
"""Delete Cycle Task Group object."""
cycle_tg = all_models.CycleTaskGroup.query.first()
return self.api.delete(cycle_tg)
示例4: UniversalRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
#.........这里部分代码省略.........
factories.random_str(),
"title":
factories.random_str(),
"context":
None,
"access_control_list": [
{
"ac_role_id": admin_acr_id,
"person": {
"id": self.user_id,
"type": "Person",
}
}
],
}
)
parent = db.session.query(self.parent.__class__).get(self.parent_id)
return self.objgen.generate_relationship(
source=document, destination=parent
)[0]
def read_document(self):
"""Read existing Document object."""
doc_id = self._setup_document()
res = self.api.get(all_models.Document, doc_id)
return res
def update_document(self):
"""Update title of existing Document object."""
doc_id = self._setup_document()
document = all_models.Document.query.get(doc_id)
return self.api.put(document, {"title": factories.random_str()})
def delete_document(self):
"""Delete Document object."""
doc_id = self._setup_document()
document = all_models.Document.query.get(doc_id)
return self.api.delete(document)
def create_and_map_comment(self):
"""Create new Comment object and map to parent."""
_, comment = self.objgen.generate_object(
all_models.Comment, {
"description": factories.random_str(),
"context": None,
}
)
parent = db.session.query(self.parent.__class__).get(self.parent_id)
return self.objgen.generate_relationship(
source=parent, destination=comment
)[0]
def read_comment(self):
"""Read existing Comment object."""
comment_id = self._setup_comment()
res = self.api.get(all_models.Comment, comment_id)
return res
def create_and_map_document_comment(self):
"""Map new comment to document."""
doc_id = self._setup_document()
_, comment = self.objgen.generate_object(
all_models.Comment, {
"description": factories.random_str(),
"context": None,
}
示例5: TestEvidenceRolePropagation
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class TestEvidenceRolePropagation(TestCase):
"""Evidence role propagation test case"""
# pylint: disable=invalid-name
def setUp(self):
super(TestEvidenceRolePropagation, self).setUp()
self.api = Api()
self.generator = ObjectGenerator()
# Propagation isn't work for 'Primary Contacts', 'Secondary Contacts'
# just add them to data list to check if fix works.
@ddt.data("Assignees", "Creators", "Verifiers")
def test_assessment_role_propagation_edit(self, role_name):
"""Asses user with role '{0}' should be able to edit related evidence"""
_, reader = self.generator.generate_person(user_role="Creator")
with factories.single_commit():
assessment = factories.AssessmentFactory()
assessment.add_person_with_role_name(reader, role_name)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=assessment, destination=evidence)
self.api.set_user(reader)
evidence = all_models.Evidence.query.get(evidence_id)
new_description = 'new description'
resp = self.api.modify_object(evidence, {'description': new_description})
evidence = self.refresh_object(evidence)
self.assert200(resp)
self.assertEquals(new_description, evidence.description)
self.assertEquals(reader.id, evidence.modified_by_id)
@ddt.data(
("Creator", "Audit Captains", 200),
("Creator", "Auditors", 403),
("Reader", "Audit Captains", 200),
("Reader", "Auditors", 403),
("Editor", "Audit Captains", 200),
("Editor", "Auditors", 200),
)
@ddt.unpack
def test_audit_role_propagation_edit(self, user_role, audit_role,
status_code):
"""'{0}' assigned as '{1}' should get '{2}' when editing audit evidence"""
_, user = self.generator.generate_person(user_role=user_role)
with factories.single_commit():
audit = factories.AuditFactory()
audit.add_person_with_role_name(user, audit_role)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=audit, destination=evidence)
self.api.set_user(user)
evidence = all_models.Evidence.query.get(evidence_id)
new_description = 'new description'
resp = self.api.modify_object(evidence, {'description': new_description})
evidence = self.refresh_object(evidence)
if status_code == 200:
self.assert200(resp)
self.assertEquals(new_description, evidence.description)
self.assertEquals(user.id, evidence.modified_by_id)
else:
self.assertStatus(resp, status_code)
def test_audit_role_propagation_not_delete(self):
"""Audit user with role Auditors can NOT delete related evidence"""
role_name = "Auditors"
_, reader = self.generator.generate_person(user_role="Reader")
with factories.single_commit():
audit = factories.AuditFactory()
audit.add_person_with_role_name(reader, role_name)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=audit, destination=evidence)
self.api.set_user(reader)
evidence = all_models.Evidence.query.get(evidence_id)
resp = self.api.delete(evidence)
self.assertStatus(resp, 403)
evidence = all_models.Evidence.query.get(evidence_id)
self.assertTrue(evidence)
示例6: EvidenceRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class EvidenceRBACFactory(base.BaseRBACFactory):
"""Evidence RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Evidence permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
self.setup_program_scope(user_id, acr)
with factories.single_commit():
evidence = factories.EvidenceUrlFactory()
if parent == "Audit":
self.mapping_id = factories.RelationshipFactory(
source=self.audit, destination=evidence
).id
elif parent == "Assessment":
self.mapping_id = factories.RelationshipFactory(
source=self.assessment, destination=evidence
).id
self.evidence_id = evidence.id
self.parent = parent
self.admin_acr_id = all_models.AccessControlRole.query.filter_by(
name="Admin",
object_type="Evidence",
).one().id
self.user_id = user_id
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Evidence object."""
result = self.api.post(all_models.Evidence, {
"evidence": {
"access_control_list": [{
"ac_role_id": self.admin_acr_id,
"person": {
"id": self.user_id,
"type": "Person",
}
}],
"link": factories.random_str(),
"title": factories.random_str(),
"context": None,
}
})
return result
def read(self):
"""Read existing Evidence object."""
res = self.api.get(all_models.Evidence, self.evidence_id)
return res
def update(self):
"""Update title of existing Evidence object."""
evidence = all_models.Evidence.query.get(self.evidence_id)
return self.api.put(evidence, {"title": factories.random_str()})
def delete(self):
"""Delete Evidence object."""
evidence = all_models.Evidence.query.get(self.evidence_id)
return self.api.delete(evidence)
def map(self, evidence=None):
"""Map Evidence to parent object."""
if self.parent == "Audit":
parent = all_models.Audit.query.get(self.audit_id)
else:
parent = all_models.Assessment.query.get(self.assessment_id)
map_evidence = evidence if evidence else factories.EvidenceUrlFactory()
return self.api.put(parent, {
"actions": {
"add_related": [{
"id": map_evidence.id,
"type": "Evidence",
}]
}
})
def create_and_map(self):
"""Create new Evidence and map it to parent."""
response = self.create()
evidence_id = None
if response.json and response.json.get("evidence"):
evidence_id = response.json.get("evidence", {}).get("id")
if not evidence_id:
return response
evidence = all_models.Evidence.query.get(evidence_id)
return self.map(evidence)
def add_comment(self):
#.........这里部分代码省略.........
示例7: AssessmentTemplateRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class AssessmentTemplateRBACFactory(base.BaseRBACFactory):
"""Assessment Template RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Assessment Template permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
self.setup_program_scope(user_id, acr, parent)
with factories.single_commit():
template = factories.AssessmentTemplateFactory(audit=self.audit)
factories.RelationshipFactory(source=self.audit, destination=template)
self.template_id = template.id
self.default_assignees = "Admin"
self.default_verifiers = "Admin"
self.api = Api()
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Assessment Template object."""
return self.api.post(all_models.AssessmentTemplate, {
"assessment_template": {
"audit": {"id": self.audit_id, "type": "Audit"},
"context": None,
"default_people": {
"assignees": self.default_assignees,
"verifiers": self.default_verifiers,
},
"title": "New Assessment Template"
}
})
def read(self):
"""Read existing Assessment Template object."""
return self.api.get(all_models.AssessmentTemplate, self.template_id)
def update(self):
"""Update title of existing Assessment Template object."""
template = all_models.AssessmentTemplate.query.get(self.template_id)
return self.api.put(template, {"title": factories.random_str()})
def delete(self):
"""Delete Assessment Template object."""
template = all_models.AssessmentTemplate.query.get(self.template_id)
return self.api.delete(template)
def read_revisions(self):
"""Read revisions for Assessment Template object."""
model_class = get_model("AssessmentTemplate")
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(
model_class,
query.format("assessment_template", self.template_id)
)
)
return responses
示例8: TestAudit
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class TestAudit(TestCase):
""" Test Audit class. """
def setUp(self):
super(TestAudit, self).setUp()
self.api = Api()
self.gen = generator.ObjectGenerator()
def generate_control_mappings(self, control):
"""Map Control to several Assessments"""
acr_creator = all_models.AccessControlRole.query.filter_by(
name="Creators", object_type="Assessment"
).first()
with factories.single_commit():
person = factories.PersonFactory()
asmnt_ids = []
for _ in range(2):
asmnt = factories.AssessmentFactory()
asmnt_ids.append(asmnt.id)
factories.AccessControlListFactory(
object=asmnt, person=person, ac_role=acr_creator
)
for asmnt_id in asmnt_ids:
asmnt = all_models.Assessment.query.get(asmnt_id)
self.gen.generate_relationship(source=asmnt, destination=control)
def test_creation_mapped_control(self):
"""Check creation of new Audit if Program has Control with mapped roles"""
control = factories.ControlFactory()
# Map original of control to several assessments to get propagated roles
self.generate_control_mappings(control)
# Existing control should be updated to create new revision with ACL
self.api.put(control, {"title": "Test Control"})
program = factories.ProgramFactory()
factories.RelationshipFactory(source=program, destination=control)
response = self.api.post(all_models.Audit, [{
"audit": {
"title": "New Audit",
"program": {"id": program.id},
"status": "Planned",
"context": None
}
}])
self.assert200(response)
def test_program_mapping(self):
"""Check creation of new Audit if Program has Control with mapped roles"""
program = factories.ProgramFactory()
self.api.post(all_models.Audit, [{
"audit": {
"title": "New Audit",
"program": {"id": program.id, "type": program.type},
"status": "Planned",
"context": None
}
}])
audit = all_models.Audit.query.first()
program = all_models.Program.query.first()
relationships = all_models.Relationship.find_related(audit, program)
self.assertIsNotNone(audit)
self.assertIsNotNone(program)
self.assertIsNotNone(relationships)
def test_delete_audit(self):
"""Check inability to delete audit in relation with assessment template."""
with factories.single_commit():
audit = factories.AuditFactory()
assessment_template = factories.AssessmentTemplateFactory(audit=audit)
factories.RelationshipFactory(
source=audit,
destination=assessment_template
)
response = self.api.delete(audit)
self.assert400(response)
self.assertEqual(response.json["message"],
"This request will break a mandatory relationship from "
"assessment_templates to audits.")
def test_delete_audit_proper(self):
"""Check delete audit with assessment template. Remove template first"""
with factories.single_commit():
audit = factories.AuditFactory()
audit_id = audit.id
assessment_template = factories.AssessmentTemplateFactory(audit=audit)
assessment_template_id = assessment_template.id
factories.RelationshipFactory(
source=audit,
destination=assessment_template
)
assessment_template = \
all_models.AssessmentTemplate.query.get(assessment_template_id)
response = self.api.delete(assessment_template)
self.assert200(response)
audit = all_models.Audit.query.get(audit_id)
#.........这里部分代码省略.........
示例9: ProgramRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class ProgramRBACFactory(base.BaseRBACFactory):
"""Program RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Program permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_program_scope(user_id, acr, "Program")
self.admin_control_id = {
name: id for id, name
in access_control.role.get_custom_roles_for("Control").items()
}["Admin"]
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
if user_id:
self.user_id = user_id
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Program object."""
return self.api.post(all_models.Program, {
"program": {
"title": "New program",
"program": {"id": self.program_id},
"context": None,
"access_control_list": [],
}
})
def read(self):
"""Read existing Audit object."""
return self.api.get(all_models.Program, self.program_id)
def update(self):
"""Update title of existing Audit object."""
program = all_models.Program.query.get(self.program_id)
return self.api.put(program, {"title": factories.random_str()})
def delete(self):
"""Delete Audit object."""
program = all_models.Program.query.get(self.program_id)
return self.api.delete(program)
def read_revisions(self):
"""Read revisions for Assessment object."""
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(
all_models.Program, query.format("program", self.program_id)
)
)
return responses
def map_control(self):
"""Map new Control to Program."""
with factories.single_commit():
control = factories.ControlFactory()
factories.AccessControlListFactory(
ac_role_id=self.admin_control_id,
object_id=control.id,
object_type="Control",
person_id=self.user_id
)
program = all_models.Program.query.get(self.program_id)
return self.objgen.generate_relationship(
source=program,
destination=control,
)[0]
def unmap_control(self):
"""Unmap Control from Program."""
control = factories.ControlFactory()
program = all_models.Program.query.get(self.program_id)
rel = factories.RelationshipFactory(source=control, destination=program)
return self.api.delete(rel)
def read_mapped(self):
"""Read control mapped to Program."""
program = all_models.Program.query.get(self.program_id)
with factories.single_commit():
control = factories.ControlFactory()
factories.RelationshipFactory(source=control, destination=program)
return self.api.get(control, control.id)
def update_mapped(self):
"""Update control mapped to Program."""
#.........这里部分代码省略.........
示例10: AuditRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class AuditRBACFactory(base.BaseRBACFactory):
"""Audit RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Audit permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_program_scope(user_id, acr, "Audit")
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
self.admin_control_id = {
name: id for id, name
in access_control.role.get_custom_roles_for("Control").items()
}["Admin"]
if user_id:
self.user_id = user_id
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Audit object."""
return self.api.post(all_models.Audit, {
"audit": {
"title": "New audit",
"program": {"id": self.program_id},
"context": None,
"access_control_list": [],
}
})
def read(self):
"""Read existing Audit object."""
return self.api.get(all_models.Audit, self.audit_id)
def update(self):
"""Update title of existing Audit object."""
audit = all_models.Audit.query.get(self.audit_id)
return self.api.put(audit, {"title": factories.random_str()})
def delete(self):
"""Delete Audit object."""
audit = all_models.Audit.query.get(self.audit_id)
return self.api.delete(audit)
def clone(self):
"""Clone existing Audit with Assessment Templates."""
return self.api.post(all_models.Audit, {
"audit": {
"program": {"id": self.program_id, "type": "Program"},
# workaround - title is required for validation
"title": "",
"context": None,
"operation": "clone",
"cloneOptions": {
"sourceObjectId": self.audit_id,
"mappedObjects": "AssessmentTemplate"
}
}
})
def read_revisions(self):
"""Read revisions for Audit object."""
model_class = get_model("Audit")
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(model_class, query.format("audit", self.audit_id))
)
return responses
def map_external_control(self):
"""Map Control (on which current user don't have any rights) to Audit."""
control = factories.ControlFactory()
audit = all_models.Audit.query.get(self.audit_id)
return self.objgen.generate_relationship(
source=audit,
destination=control,
)[0]
def map_control(self):
"""Map new snapshot of Control to Audit."""
with factories.single_commit():
control = factories.ControlFactory()
acl = [
acl
for acl in control._access_control_list
if acl.ac_role_id == self.admin_control_id
][0]
factories.AccessControlPersonFactory(
#.........这里部分代码省略.........
示例11: TestEvidenceRolePropagation
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class TestEvidenceRolePropagation(TestCase):
"""Evidence role propagation test case"""
# pylint: disable=invalid-name
def setUp(self):
super(TestEvidenceRolePropagation, self).setUp()
self.api = Api()
self.generator = ObjectGenerator()
# Propagation isn't work for 'Primary Contacts', 'Secondary Contacts'
# just add them to data list to check if fix works.
@ddt.data("Assignees", "Creators", "Verifiers")
def test_assessment_role_propagation_edit(self, role):
"""Asses user with role '{0}' should be able to edit related evidence"""
_, reader = self.generator.generate_person(user_role="Creator")
assignees_role = all_models.AccessControlRole.query.filter_by(
object_type=all_models.Assessment.__name__, name=role
).first()
with factories.single_commit():
assessment = factories.AssessmentFactory()
factories.AccessControlListFactory(
ac_role=assignees_role,
object=assessment,
person=reader
)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=assessment, destination=evidence)
self.api.set_user(reader)
evidence = all_models.Evidence.query.get(evidence_id)
new_description = 'new description'
resp = self.api.modify_object(evidence, {'description': new_description})
evidence = self.refresh_object(evidence)
self.assert200(resp)
self.assertEquals(new_description, evidence.description)
self.assertEquals(reader.id, evidence.modified_by_id)
@ddt.data("Audit Captains", "Auditors")
def test_audit_role_propagation_edit(self, role):
"""Audit user with role '{0}' should be able to edit related evidence"""
_, reader = self.generator.generate_person(user_role="Reader")
assignees_role = all_models.AccessControlRole.query.filter_by(
object_type=all_models.Audit.__name__, name=role
).first()
with factories.single_commit():
audit = factories.AuditFactory()
factories.AccessControlListFactory(
ac_role=assignees_role,
object=audit,
person=reader
)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=audit, destination=evidence)
self.api.set_user(reader)
evidence = all_models.Evidence.query.get(evidence_id)
new_description = 'new description'
resp = self.api.modify_object(evidence, {'description': new_description})
evidence = self.refresh_object(evidence)
self.assert200(resp)
self.assertEquals(new_description, evidence.description)
self.assertEquals(reader.id, evidence.modified_by_id)
def test_audit_role_propagation_not_delete(self, role="Auditors"):
"""Audit user with role Auditors can NOT delete related evidence"""
_, reader = self.generator.generate_person(user_role="Reader")
assignees_role = all_models.AccessControlRole.query.filter_by(
object_type=all_models.Audit.__name__, name=role
).first()
with factories.single_commit():
audit = factories.AuditFactory()
factories.AccessControlListFactory(
ac_role=assignees_role,
object=audit,
person=reader
)
evidence = factories.EvidenceFactory()
evidence_id = evidence.id
factories.RelationshipFactory(source=audit, destination=evidence)
self.api.set_user(reader)
evidence = all_models.Evidence.query.get(evidence_id)
resp = self.api.delete(evidence)
self.assertStatus(resp, 403)
evidence = all_models.Evidence.query.get(evidence_id)
self.assertTrue(evidence)
示例12: TaskGroupRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class TaskGroupRBACFactory(base.BaseRBACFactory):
"""Task Group RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Task Group permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
# pylint: disable=unused-argument
self.setup_workflow_scope(user_id, acr)
self.admin_control_id = {
name: id_ for id_, name
in access_control.role.get_custom_roles_for("Control").items()
}["Admin"]
self.api = Api()
if user_id:
self.user_id = user_id
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Task Group object."""
person = factories.PersonFactory()
return self.api.post(all_models.TaskGroup, {
"task_group": {
"contact": {
"id": person.id,
"type": "Person",
},
"title": "New Task Group",
"context": None,
"workflow": {
"id": self.workflow_id,
"type": "Workflow",
},
}
})
def read(self):
"""Read existing Task Group object."""
return self.api.get(all_models.TaskGroup, self.task_group_id)
def update(self):
"""Update title of existing Task Group object."""
task_group = all_models.TaskGroup.query.get(self.task_group_id)
return self.api.put(task_group, {"title": factories.random_str()})
def delete(self):
"""Delete Task Group object."""
task_group = all_models.TaskGroup.query.get(self.task_group_id)
return self.api.delete(task_group)
def read_revisions(self):
"""Read revisions for Task Group object."""
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(
all_models.TaskGroup,
query.format("task_group", self.task_group_id)
)
)
return responses
def map_control(self):
"""Map Control on which user don't have any rights to Cycle Task."""
task_group = all_models.TaskGroup.query.get(self.task_group_id)
control = factories.ControlFactory()
return self.api.post(all_models.TaskGroupObject, {
"task_group_object": {
"context": None,
"object": {
"id": control.id,
"type": "Control",
},
"task_group": {
"id": task_group.id,
"type": "TaskGroup",
},
}
})
def map_created_control(self):
"""Map Control that was created by user to Cycle Task."""
task_group = all_models.TaskGroup.query.get(self.task_group_id)
with factories.single_commit():
control = factories.ControlFactory()
factories.AccessControlListFactory(
ac_role_id=self.admin_control_id,
object_id=control.id,
object_type="Control",
person_id=self.user_id
)
#.........这里部分代码省略.........
示例13: AssessmentRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class AssessmentRBACFactory(base.BaseRBACFactory):
"""Assessment RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Assessment permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
self.setup_program_scope(user_id, acr, parent)
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Assessment object."""
return self.api.post(all_models.Assessment, {
"assessment": {
"title": "New Assessment",
"context": None,
"audit": {"id": self.audit_id},
},
})
def generate(self):
"""Generate new Assessment object."""
with factories.single_commit():
control = factories.ControlFactory()
template_id = factories.AssessmentTemplateFactory().id
audit = all_models.Audit.query.get(self.audit_id)
# pylint: disable=protected-access
snapshot = TestCase._create_snapshots(audit, [control])[0]
snapshot_id = snapshot.id
factories.RelationshipFactory(source=snapshot, destination=audit)
responses = []
asmnt_data = {
"assessment": {
"_generated": True,
"audit": {
"id": self.audit_id,
"type": "Audit"
},
"object": {
"id": snapshot_id,
"type": "Snapshot"
},
"context": None,
"title": "New assessment",
}
}
responses.append(self.api.post(all_models.Assessment, asmnt_data))
asmnt_data["assessment"]["template"] = {
"id": template_id,
"type": "AssessmentTemplate"
}
responses.append(self.api.post(all_models.Assessment, asmnt_data))
return responses
def read(self):
"""Read existing Assessment object."""
return self.api.get(all_models.Assessment, self.assessment_id)
def update(self):
"""Update title of existing Assessment object."""
asmnt = all_models.Assessment.query.get(self.assessment_id)
return self.api.put(asmnt, {"title": factories.random_str()})
def delete(self):
"""Delete Assessment object."""
asmnt = all_models.Assessment.query.get(self.assessment_id)
return self.api.delete(asmnt)
def read_revisions(self):
"""Read revisions for Assessment object."""
model_class = get_model("Assessment")
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(
model_class,
query.format("assessment", self.assessment_id)
)
)
return responses
def map_snapshot(self):
"""Map snapshot to assessment."""
audit = all_models.Audit.query.get(self.audit_id)
assessment = all_models.Assessment.query.get(self.assessment_id)
#.........这里部分代码省略.........
示例14: IssueRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class IssueRBACFactory(base.BaseRBACFactory):
"""Issue RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Issue permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
self.setup_program_scope(user_id, acr)
with factories.single_commit():
issue = factories.IssueFactory()
if parent == "Audit":
self.mapping_id = factories.RelationshipFactory(
source=self.audit, destination=issue
).id
elif parent == "Assessment":
self.mapping_id = factories.RelationshipFactory(
source=self.assessment, destination=issue
).id
self.issue_id = issue.id
self.parent = parent
self.admin_acr_id = all_models.AccessControlRole.query.filter_by(
name="Admin",
object_type="Issue",
).one().id
self.user_id = user_id
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
if user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def create(self):
"""Create new Issue object."""
return self.api.post(all_models.Issue, {
"issue": {
"access_control_list": [{
"ac_role_id": self.admin_acr_id,
"person": {
"id": self.user_id,
"type": "Person",
}
}],
"title": factories.random_str(),
"context": None,
}
})
def read(self):
"""Read existing Issue object."""
return self.api.get(all_models.Issue, self.issue_id)
def update(self):
"""Update title of existing Issue object."""
issue = all_models.Issue.query.get(self.issue_id)
return self.api.put(issue, {"title": factories.random_str()})
def delete(self):
"""Delete Issue object."""
issue = all_models.Issue.query.get(self.issue_id)
return self.api.delete(issue)
def read_revisions(self):
"""Read revisions of Issue object."""
model_class = get_model("Issue")
responses = []
for query in ["source_type={}&source_id={}",
"destination_type={}&destination_id={}",
"resource_type={}&resource_id={}"]:
responses.append(
self.api.get_query(
model_class,
query.format("issue", self.issue_id)
)
)
return responses
def map(self, issue=None):
"""Map Issue to parent object."""
if self.parent == "Audit":
parent = all_models.Audit.query.get(self.audit_id)
else:
parent = all_models.Assessment.query.get(self.assessment_id)
map_issue = issue if issue else factories.IssueFactory()
return self.objgen.generate_relationship(
source=parent,
destination=map_issue
)[0]
def create_and_map(self):
"""Create new Issue and map it to parent."""
response = self.create()
#.........这里部分代码省略.........
示例15: DocumentReferenceUrlRBACFactory
# 需要导入模块: from integration.ggrc import Api [as 别名]
# 或者: from integration.ggrc.Api import delete [as 别名]
class DocumentReferenceUrlRBACFactory(base.BaseRBACFactory):
"""Document Reference Url RBAC factory class."""
def __init__(self, user_id, acr, parent=None):
"""Set up objects for Document permission tests.
Args:
user_id: Id of user under which all operations will be run.
acr: Instance of ACR that should be assigned for tested user.
parent: Model name in scope of which objects should be set up.
"""
self.api = Api()
self.objgen = generator.ObjectGenerator()
self.objgen.api = self.api
self.acr = acr
self.user_id = user_id
self.parent_name = parent
self.document_id = None
self.parent = None
self.parent_id = None
self.admin_acr_id = all_models.AccessControlRole.query.filter_by(
name="Admin",
object_type="Document",
).one().id
self.setup_models(self.parent_name)
self.set_user(user_id)
def set_user(self, user_id):
"""Set user to send requests"""
if self.user_id:
user = all_models.Person.query.get(user_id)
self.api.set_user(user)
def setup_models(self, parent_name):
"""Setup document, parent, relationship"""
with factories.single_commit():
document = factories.DocumentReferenceUrlFactory()
self.document_id = document.id
self.parent = self.build_parent(parent_name)
self.parent_id = self.parent.id
factories.RelationshipFactory(source=self.parent, destination=document)
self.assign_person(self.parent, self.acr, self.user_id)
@staticmethod
def build_parent(parent_name):
"""Create parent based on Name"""
try:
parent = FACTORIES_MAPPING[parent_name]()
except KeyError():
raise ValueError("Unknown parent {}".format(parent_name))
return parent
def create(self):
"""Create new Document object."""
result = self.api.post(all_models.Document, {
"document": {
"access_control_list": [{
"ac_role_id": self.admin_acr_id,
"person": {
"id": self.user_id,
"type": "Person",
}
}],
"link": factories.random_str(),
"title": factories.random_str(),
"context": None,
}
})
return result
def read(self):
"""Read existing Document object."""
res = self.api.get(all_models.Document, self.document_id)
return res
def update(self):
"""Update title of existing Document object."""
document = all_models.Document.query.get(self.document_id)
return self.api.put(document, {"title": factories.random_str()})
def delete(self):
"""Delete Document object."""
document = all_models.Document.query.get(self.document_id)
return self.api.delete(document)
def map(self, document=None):
"""Map Document to parent object."""
parent = self.parent.__class__.query.get(self.parent_id)
map_document = document if document \
else factories.DocumentReferenceUrlFactory()
return self.objgen.generate_relationship(
source=parent,
destination=map_document
)[0]
def create_and_map(self):
"""Create new Document and map it to parent."""
#.........这里部分代码省略.........