def test_post_phase_project_archived(phase_factory, user, member_factory): phase, module, project, _ = setup_phase(phase_factory, None, phases.DebatePhase, module__project__is_archived=True) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_archived with freeze_post_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert not rules.has_perm(perm_name, member.member, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_post_phase_project_archived(phase_factory, chapter_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase, module__project__is_archived=True) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_archived with freeze_post_phase(phase): assert rules.has_perm(perm_name, anonymous, item) assert rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, member.member, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_draft(phase_factory, proposal_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, member.member, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active(phase_factory, chapter_factory, paragraph_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) paragraph = paragraph_factory(chapter=item) assert project.is_public with freeze_phase(phase): assert rules.has_perm(perm_name, anonymous, paragraph) assert rules.has_perm(perm_name, user, paragraph) assert rules.has_perm(perm_name, member.member, paragraph) assert rules.has_perm(perm_name, moderator, paragraph) assert rules.has_perm(perm_name, initiator, paragraph)
def test_post_phase_project_archived(phase_factory, chapter_factory, user): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase, module__project__is_archived=True) anonymous, moderator, initiator = setup_users(project) creator = item.creator assert project.is_archived with freeze_post_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, creator, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_idea_rate_rules(admin, user, idea_factory, module): idea = idea_factory(module=module) user = UserFactory() assert not rules.has_perm('civic_europe_ideas.rate_idea', user, idea) idea.creator = user assert not rules.has_perm('civic_europe_ideas.rate_idea', user, idea) idea.co_workers.add(user) assert not rules.has_perm('civic_europe_ideas.rate_idea', user, idea) user2 = UserFactory() idea2 = idea_factory(creator=user2, module=module) with active_phase(module, phases.CommunityAwardRatingPhase): assert not rules.has_perm('civic_europe_ideas.rate_idea', user, idea) assert not rules.has_perm('civic_europe_ideas.rate_idea', user, idea2)
def test_phase_active_project_draft(phase_factory, proposal_factory, user): phase, _, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) creator = item.creator assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, creator, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_draft(phase_factory, chapter_factory, paragraph_factory, user): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) paragraph = paragraph_factory(chapter=item) assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, paragraph) assert not rules.has_perm(perm_name, user, paragraph) assert rules.has_perm(perm_name, moderator, paragraph) assert rules.has_perm(perm_name, initiator, paragraph)
def test_phase_active_project_draft(phase_factory, poll_factory, question, choice, vote, user, member_factory): phase, module, project, _ = setup_phase(phase_factory, poll_factory, phases.VotingPhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert not rules.has_perm(perm_name, member.member, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_phase_active_project_private(phase_factory, maptopic_factory, user, user2): phase, _, project, item = setup_phase(phase_factory, maptopic_factory, phases.PrioritizePhase, module__project__is_public=False) anonymous, moderator, initiator = setup_users(project) participant = user2 project.participants.add(participant) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, participant, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_private(phase_factory, user, user2): phase, module, project, _ = setup_phase(phase_factory, None, phases.CollectPhase, module__project__is_public=False) anonymous, moderator, initiator = setup_users(project) participant = user2 project.participants.add(participant) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, participant, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_phase_active_project_private(phase_factory, live_question_factory, user, user2): phase, _, project, item = setup_phase(phase_factory, live_question_factory, phases.IssuePhase, module__project__access=Access. PRIVATE) anonymous, moderator, initiator = setup_users(project) participant = user2 project.participants.add(participant) assert not project.is_public with freeze_phase(phase): assert rules.has_perm(perm_name, anonymous, item) assert rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, participant, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_private(phase_factory, chapter_factory, paragraph_factory, user, user2): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase, module__project__is_public=False) anonymous, moderator, initiator = setup_users(project) participant = user2 project.participants.add(participant) paragraph = paragraph_factory(chapter=item) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, paragraph) assert not rules.has_perm(perm_name, user, paragraph) assert rules.has_perm(perm_name, participant, paragraph) assert rules.has_perm(perm_name, moderator, paragraph) assert rules.has_perm(perm_name, initiator, paragraph)
def test_change_project(user_factory, group_factory, organisation, project_factory): anonymous = AnonymousUser() user = user_factory() initiator = user_factory() admin = user_factory(is_superuser=True) group1 = group_factory() group2 = group_factory() group3 = group_factory() group4 = group_factory() group_member_in_orga = user_factory.create(groups=(group1, group2)) group_member_out = user_factory.create(groups=(group2, group3)) group_member_in_project = user_factory.create(groups=(group2, group4)) organisation.initiators.add(initiator) organisation.groups.add(group1) project = project_factory(group=group4, organisation=organisation) assert not rules.has_perm(perm_name_change, anonymous, project) assert not rules.has_perm(perm_name_change, user, project) assert rules.has_perm(perm_name_change, initiator, project) assert rules.has_perm(perm_name_change, admin, project) assert not rules.has_perm(perm_name_change, group_member_in_orga, project) assert not rules.has_perm(perm_name_change, group_member_out, project) assert rules.has_perm(perm_name_change, group_member_in_project, project)
def test_view_project_live(user_factory, group_factory, organisation, project_factory, phase_factory): anonymous = AnonymousUser() user = user_factory() initiator = user_factory() admin = user_factory(is_superuser=True) group1 = group_factory() group2 = group_factory() group3 = group_factory() group4 = group_factory() group_member_in_orga = user_factory.create(groups=(group1, group2)) group_member_out = user_factory.create(groups=(group2, group3)) group_member_in_project = user_factory.create(groups=(group2, group4)) organisation.initiators.add(initiator) organisation.groups.add(group1) project = project_factory(group=group4, organisation=organisation, is_draft=False) assert rules.has_perm(perm_name_view, anonymous, project) assert rules.has_perm(perm_name_view, user, project) assert rules.has_perm(perm_name_view, initiator, project) assert rules.has_perm(perm_name_view, admin, project) assert rules.has_perm(perm_name_view, group_member_in_orga, project) assert rules.has_perm(perm_name_view, group_member_out, project) assert rules.has_perm(perm_name_view, group_member_in_project, project)
def test_phase_active(phase_factory, user): phase, module, project, _ = setup_phase(phase_factory, None, phases.CollectPhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_pre_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module) assert not rules.has_perm(perm_name_2, anonymous, module) assert not rules.has_perm(perm_name_2, user, module) assert rules.has_perm(perm_name_2, moderator, module) assert rules.has_perm(perm_name_2, initiator, module)
def test_rule(project, user, member_factory, admin): organisation = project.organisation anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=organisation) assert not rules.has_perm(perm_name, anonymous, organisation) assert not rules.has_perm(perm_name, user, organisation) assert not rules.has_perm(perm_name, moderator, organisation) assert not rules.has_perm(perm_name, member.member, organisation) assert rules.has_perm(perm_name, initiator, organisation) assert rules.has_perm(perm_name, admin, organisation)
def test_journey_rules(admin, user, idea_factory): idea = idea_factory() creator = UserFactory() idea.creator = creator co_worker = UserFactory() idea.co_workers.set([co_worker]) # proposal not winner assert not rules.has_perm('civic_europe_ideas.add_journey', user, idea) assert not rules.has_perm('civic_europe_ideas.add_journey', creator, idea) assert not rules.has_perm('civic_europe_ideas.add_journey', co_worker, idea) assert rules.has_perm('civic_europe_ideas.add_journey', admin, idea) # proposal is winner! idea.is_winner = True assert not rules.has_perm('civic_europe_ideas.add_journey', user, idea) assert rules.has_perm('civic_europe_ideas.add_journey', creator, idea) assert rules.has_perm('civic_europe_ideas.add_journey', co_worker, idea) assert rules.has_perm('civic_europe_ideas.add_journey', admin, idea)
def test_phase_active(phase_factory, topic_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) creator = item.creator assert project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, member.member, item) assert not rules.has_perm(perm_name, creator, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_pre_phase(phase_factory, proposal_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase) anonymous, moderator, initiator = setup_users(project) creator = item.creator member = member_factory(organisation=project.organisation) assert project.is_public with freeze_pre_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, creator, item) assert not rules.has_perm(perm_name, member.member, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_rule_project_private(offline_event_factory, user, user2, member_factory): offline_event = offline_event_factory(project__is_public=False) project = offline_event.project anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) participant = user2 project.participants.add(participant) assert not project.is_public assert not rules.has_perm(perm_name, anonymous, offline_event) assert not rules.has_perm(perm_name, user, offline_event) assert rules.has_perm(perm_name, member.member, offline_event) assert rules.has_perm(perm_name, participant, offline_event) assert rules.has_perm(perm_name, moderator, offline_event) assert rules.has_perm(perm_name, initiator, offline_event)
def test_phase_active_project_private(phase_factory, subject_factory, user, user2, member_factory): phase, _, project, item = setup_phase(phase_factory, subject_factory, phases.DebatePhase, module__project__is_public=False) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) participant = user2 project.participants.add(participant) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, member.member, item) assert rules.has_perm(perm_name, participant, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_private(phase_factory, user, user2, member_factory): phase, module, project, _ = setup_phase(phase_factory, None, phases.CollectPhase, module__project__access=Access. PRIVATE) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) participant = user2 project.participants.add(participant) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, member.member, module) assert rules.has_perm(perm_name, participant, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_add_project(user_factory, group_factory, organisation): anonymous = AnonymousUser() user = user_factory() initiator = user_factory() admin = user_factory(is_superuser=True) group1 = group_factory() group2 = group_factory() group3 = group_factory() group_member_in = user_factory.create(groups=(group1, group2)) group_member_out = user_factory.create(groups=(group2, group3)) organisation.initiators.add(initiator) organisation.groups.add(group1) assert not rules.has_perm(perm_name_add, anonymous, organisation) assert not rules.has_perm(perm_name_add, user, organisation) assert rules.has_perm(perm_name_add, initiator, organisation) assert rules.has_perm(perm_name_add, admin, organisation) assert rules.has_perm(perm_name_add, group_member_in, organisation) assert not rules.has_perm(perm_name_add, group_member_out, organisation)
def test_phase_active_project_private(phase_factory, chapter_factory, paragraph_factory, user, user2, member_factory): phase, _, project, item = setup_phase( phase_factory, chapter_factory, phases.CommentPhase, module__project__access=Access.PRIVATE) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) participant = user2 project.participants.add(participant) paragraph = paragraph_factory(chapter=item) assert not project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, paragraph) assert not rules.has_perm(perm_name, user, paragraph) assert rules.has_perm(perm_name, member.member, paragraph) assert rules.has_perm(perm_name, participant, paragraph) assert rules.has_perm(perm_name, moderator, paragraph) assert rules.has_perm(perm_name, initiator, paragraph)
def test_idea_add_rule_idea_phase(user, module): with active_phase(module, phases.IdeaPhase): assert rules.has_perm('civic_europe_ideas.add_idea', user, module)
def test_idea_view_rule(user): assert rules.has_perm('civic_europe_ideas.view_idea', user)
def would_have_perm(self, perm, obj): return rules.has_perm(perm, self, obj)
def has_perm(self, perm, *args, **kwargs): return rules.has_perm(perm, self, *args, **kwargs)
def has_module_perms(self, app_label): return rules.has_perm(app_label, self)
def test_idea_add_rule_idea_community_rating_phase(user, module): with active_phase(module, phases.CommunityAwardRatingPhase): assert not rules.has_perm('civic_europe_ideas.add_idea', user, module)
def has_perm(self, user, rule): """ Return True if user has permission. """ return user.is_superuser or _rules.has_perm(rule, user, self.model)