Esempio n. 1
0
    def test_refuse_membership(self):
        user = self.login()
        applicant = UserFactory()
        membership_request = MembershipRequest(user=applicant, comment='test')
        member = Member(user=user, role='admin')
        organization = OrganizationFactory(members=[member],
                                           requests=[membership_request])
        data = {'comment': 'no'}

        api_url = url_for('api.refuse_membership',
                          org=organization,
                          id=membership_request.id)
        response = self.post(api_url, data)
        self.assert200(response)

        organization.reload()
        self.assertEqual(len(organization.requests), 1)
        self.assertEqual(len(organization.pending_requests), 0)
        self.assertEqual(len(organization.refused_requests), 1)
        self.assertEqual(len(organization.accepted_requests), 0)
        self.assertFalse(organization.is_member(applicant))

        request = organization.requests[0]
        self.assertEqual(request.user, applicant)
        self.assertEqual(request.status, 'refused')
        self.assertEqual(request.comment, 'test')
        self.assertEqual(request.refusal_comment, 'no')
        self.assertEqual(request.handled_by, user)
        self.assertIsNotNone(request.handled_on)
    def test_refuse_membership(self, api):
        user = api.login()
        applicant = UserFactory()
        membership_request = MembershipRequest(user=applicant, comment='test')
        member = Member(user=user, role='admin')
        organization = OrganizationFactory(members=[member],
                                           requests=[membership_request])
        data = {'comment': 'no'}

        api_url = url_for('api.refuse_membership',
                          org=organization,
                          id=membership_request.id)
        response = api.post(api_url, data)
        assert200(response)

        organization.reload()
        assert len(organization.requests) is 1
        assert len(organization.pending_requests) is 0
        assert len(organization.refused_requests) is 1
        assert len(organization.accepted_requests) is 0
        assert not organization.is_member(applicant)

        request = organization.requests[0]
        assert request.user == applicant
        assert request.status == 'refused'
        assert request.comment == 'test'
        assert request.refusal_comment == 'no'
        assert request.handled_by == user
        assert request.handled_on is not None
    def test_refuse_membership_404(self, api):
        user = api.login()
        member = Member(user=user, role='admin')
        organization = OrganizationFactory(members=[member])

        api_url = url_for('api.refuse_membership',
                          org=organization,
                          id=MembershipRequest().id)
        response = api.post(api_url)
        assert404(response)

        assert response.json['message'] == 'Unknown membership request id'
    def test_only_admin_can_accept_membership(self, api):
        user = api.login()
        applicant = UserFactory()
        membership_request = MembershipRequest(user=applicant, comment='test')
        member = Member(user=user, role='editor')
        organization = OrganizationFactory(members=[member],
                                           requests=[membership_request])

        api_url = url_for('api.accept_membership',
                          org=organization,
                          id=membership_request.id)
        response = api.post(api_url)
        assert403(response)
Esempio n. 5
0
    def test_accept_membership_404(self):
        user = self.login()
        member = Member(user=user, role='admin')
        organization = OrganizationFactory(members=[member])

        api_url = url_for('api.accept_membership',
                          org=organization,
                          id=MembershipRequest().id)
        response = self.post(api_url)
        self.assert404(response)

        self.assertEqual(response.json['message'],
                         'Unknown membership request id')
Esempio n. 6
0
    def test_accept_membership(self, api):
        user = api.login()
        applicant = UserFactory()
        membership_request = MembershipRequest(user=applicant, comment='test')
        member = Member(user=user, role='admin')
        organization = OrganizationFactory(
            members=[member], requests=[membership_request])

        api_url = url_for(
            'api.accept_membership',
            org=organization,
            id=membership_request.id)
        response = api.post(api_url)
        assert200(response)

        assert response.json['role'] == 'editor'

        organization.reload()
        assert len(organization.requests) is 1
        assert len(organization.pending_requests) is 0
        assert len(organization.refused_requests) is 0
        assert len(organization.accepted_requests) is 1
        assert organization.is_member(applicant)

        request = organization.requests[0]
        assert request.user == applicant
        assert request.status == 'accepted'
        assert request.comment == 'test'
        assert request.handled_by == user
        assert request.handled_on is not None
        assert request.refusal_comment is None

        # test accepting twice will raise 409
        api_url = url_for(
            'api.accept_membership',
            org=organization,
            id=membership_request.id)
        response = api.post(api_url)
        assert_status(response, 409)
    def test_request_existing_pending_membership(self, api):
        user = api.login()
        previous_request = MembershipRequest(user=user, comment='previous')
        organization = OrganizationFactory(requests=[previous_request])
        data = {'comment': 'a comment'}

        api_url = url_for('api.request_membership', org=organization)
        response = api.post(api_url, data)
        assert200(response)

        organization.reload()
        assert len(organization.requests) is 1
        assert len(organization.pending_requests) is 1
        assert len(organization.refused_requests) is 0
        assert len(organization.accepted_requests) is 0

        request = organization.requests[0]
        assert request.user == user
        assert request.status == 'pending'
        assert request.comment == 'a comment'
        assert request.handled_on is None
        assert request.handled_by is None
        assert request.refusal_comment is None
Esempio n. 8
0
    def test_request_existing_pending_membership(self):
        user = self.login()
        previous_request = MembershipRequest(user=user, comment='previous')
        organization = OrganizationFactory(requests=[previous_request])
        data = {'comment': 'a comment'}

        api_url = url_for('api.request_membership', org=organization)
        response = self.post(api_url, data)
        self.assert200(response)

        organization.reload()
        self.assertEqual(len(organization.requests), 1)
        self.assertEqual(len(organization.pending_requests), 1)
        self.assertEqual(len(organization.refused_requests), 0)
        self.assertEqual(len(organization.accepted_requests), 0)

        request = organization.requests[0]
        self.assertEqual(request.user, user)
        self.assertEqual(request.status, 'pending')
        self.assertEqual(request.comment, 'a comment')
        self.assertIsNone(request.handled_on)
        self.assertIsNone(request.handled_by)
        self.assertIsNone(request.refusal_comment)
Esempio n. 9
0
    def test_pending_membership_requests(self):
        admin = UserFactory()
        editor = UserFactory()
        applicant = UserFactory()
        request = MembershipRequest(user=applicant, comment='test')
        members = [
            Member(user=editor, role='editor'),
            Member(user=admin, role='admin')
        ]
        org = OrganizationFactory(members=members, requests=[request])

        assert len(membership_request_notifications(applicant)) is 0
        assert len(membership_request_notifications(editor)) is 0

        notifications = membership_request_notifications(admin)
        assert len(notifications) is 1
        dt, details = notifications[0]
        assert_equal_dates(dt, request.created)
        assert details['id'] == request.id
        assert details['organization'] == org.id
        assert details['user']['id'] == applicant.id
        assert details['user']['fullname'] == applicant.fullname
        assert details['user']['avatar'] == str(applicant.avatar)
    def test_pending_membership_requests(self):
        admin = UserFactory()
        editor = UserFactory()
        applicant = UserFactory()
        request = MembershipRequest(user=applicant, comment='test')
        members = [
            Member(user=editor, role='editor'),
            Member(user=admin, role='admin')
        ]
        org = OrganizationFactory(members=members, requests=[request])

        self.assertEqual(len(membership_request_notifications(applicant)), 0)
        self.assertEqual(len(membership_request_notifications(editor)), 0)

        notifications = membership_request_notifications(admin)
        self.assertEqual(len(notifications), 1)
        dt, details = notifications[0]
        self.assertEqualDates(dt, request.created)
        self.assertEqual(details['id'], request.id)
        self.assertEqual(details['organization'], org.id)
        self.assertEqual(details['user']['id'], applicant.id)
        self.assertEqual(details['user']['fullname'], applicant.fullname)
        self.assertEqual(details['user']['avatar'], str(applicant.avatar))