コード例 #1
0
    def test_add_admin_permission_in_institution_hierarchy(
            self, verify_token, enqueue_task):
        """Test add admin permissions in institution hierarchy."""
        first_user = mocks.create_user()
        second_user = mocks.create_user()
        third_user = mocks.create_user()

        first_inst = mocks.create_institution()
        second_inst = mocks.create_institution()
        third_inst = mocks.create_institution()

        first_inst.admin = first_user.key
        second_inst.admin = second_user.key
        third_inst.admin = third_user.key

        first_user.institutions_admin.append(first_inst.key)
        second_user.institutions_admin.append(second_inst.key)
        third_user.institutions_admin.append(third_inst.key)

        second_inst.parent_institution = first_inst.key
        third_inst.parent_institution = second_inst.key

        first_inst.children_institutions.append(second_inst.key)

        first_inst.put()
        second_inst.put()
        third_inst.put()

        first_user.put()
        second_user.put()
        third_user.put()
        second_user.add_permission('answer_link_inst_request',
                                   second_inst.key.urlsafe())

        request = RequestInstitutionParent()
        request.admin_key = third_user.key
        request.sender_key = third_user.key
        request.institution_key = third_inst.key
        request.institution_requested_key = second_inst.key
        request.put()

        verify_token._mock_return_value = {'email': second_user.email[0]}
        second_user.add_institution(second_inst.key)
        enqueue_task.side_effect = self.enqueue_task

        self.assertFalse(
            has_permissions(first_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))
        self.assertFalse(
            has_permissions(second_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))

        self.testapp.put(
            "/api/requests/%s/institution_parent" % request.key.urlsafe(),
            headers={'institution-authorization': second_inst.key.urlsafe()})

        first_user = first_user.key.get()
        second_user = second_user.key.get()
        third_user = third_user.key.get()

        self.assertTrue(
            has_permissions(first_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))
        self.assertTrue(
            has_permissions(second_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))
コード例 #2
0
    def test_put_invite_with_not_confirmed_link(self, verify_token,
                                                enqueue_task):
        """Test put invite with not confirmed children link."""
        institution = mocks.create_institution()
        other_institution = mocks.create_institution()
        admin = mocks.create_user()
        other_admin = mocks.create_user()

        institution.add_member(admin)
        other_institution.add_member(other_admin)
        institution.set_admin(admin.key)
        other_institution.set_admin(other_admin.key)
        other_institution.add_child(institution.key)
        other_institution.parent_institution = institution.key

        admin.add_institution_admin(institution)
        other_admin.add_institution_admin(other_institution)
        admin.add_permissions(permissions.DEFAULT_ADMIN_PERMISSIONS,
                              institution.key.urlsafe())
        other_admin.add_permissions(permissions.DEFAULT_ADMIN_PERMISSIONS,
                                    other_institution.key.urlsafe())

        institution.put()
        other_institution.put()
        admin.put()
        other_admin.put()

        request = RequestInstitutionParent()
        request.sender_key = other_admin.key
        request.admin_key = other_admin.key
        request.institution_requested_key = institution.key
        request.institution_key = other_institution.key
        request.put()

        self.assertTrue(
            has_permissions(admin, institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Admin must have administrator permissions for this institution")

        self.assertFalse(
            has_permissions(admin, other_institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Admin should not have administrator permissions for this institution"
        )

        self.assertFalse(
            has_permissions(other_admin, institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Other_admin should not have administrator permissions for this institution"
        )

        self.assertTrue(
            has_permissions(other_admin, other_institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Other_admin must have administrator permissions for this institution"
        )

        self.assertFalse(
            other_institution.verify_connection(institution, 'PARENT'),
            "other_institution should not have confirmed parent link with institution"
        )
        self.assertFalse(
            other_institution.verify_connection(institution, 'CHILDREN'),
            "other_institution should not have confirmed children link with institution"
        )

        verify_token._mock_return_value = {'email': admin.email[0]}
        enqueue_task.side_effect = self.enqueue_task

        self.testapp.put(
            "/api/requests/%s/institution_parent" % request.key.urlsafe(),
            headers={'institution-authorization': institution.key.urlsafe()})

        admin = admin.key.get()
        other_admin = other_admin.key.get()
        institution = institution.key.get()
        other_institution = other_institution.key.get()

        self.assertTrue(
            has_permissions(admin, institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Admin must have administrator permissions for this institution")

        self.assertTrue(
            has_permissions(admin, other_institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Admin must have administrator permissions for this institution")

        self.assertFalse(
            has_permissions(other_admin, institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Other_admin should not have administrator permissions for this institution"
        )

        self.assertTrue(
            has_permissions(other_admin, other_institution.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS),
            "Other_admin must have administrator permissions for this institution"
        )

        self.assertTrue(
            other_institution.verify_connection(institution, 'PARENT'),
            "other_institution should have confirmed parent link with institution"
        )
        self.assertFalse(
            other_institution.verify_connection(institution, 'CHILDREN'),
            "other_institution should not have confirmed children link with institution"
        )