Beispiel #1
0
    def test_make(self):
        """Test make method."""
        invite_institution = InviteInstitution.create(self.data)
        invite_institution.put()
        stub_institution = invite_institution.stub_institution_key.get()

        maked_invite = invite_institution.make()

        expected_maked_invite = {
            'admin_name':
            self.admin.name,
            'sender_name':
            self.invite.sender_name,
            'key':
            invite_institution.key.urlsafe(),
            'status':
            self.invite.status,
            'institution_admin':
            self.institution.make(["name"]),
            'institution':
            self.institution.make(InviteInstitution.INST_PROPS_TO_MAKE),
            'invitee':
            self.user.email[0],
            'suggestion_institution_name':
            'new Institution',
            'stub_institution':
            stub_institution.make(['name', 'key', 'state']),
            'type_of_invite':
            'INSTITUTION'
        }

        self.assertEquals(
            maked_invite, expected_maked_invite,
            "The maked invite should be equal to the expected one")
Beispiel #2
0
    def test_patch_with_a_wrong_invite(self, verify_token):
        """Test patch with a wrong invite."""
        data = {
            'invitee': '*****@*****.**',
            'admin_key': self.user_admin.key.urlsafe(),
            'institution_key': self.inst_test.key.urlsafe(),
            'suggestion_institution_name': 'test',
            'type_of_invite': 'INSTITUTION'
        }
        self.invite = InviteInstitution.create(data)
        self.invite.put()

        with self.assertRaises(Exception) as raises_context:
            self.testapp.patch('/api/invites/user/%s' %
                               self.invite.key.urlsafe())

        message_exception = self.get_message_exception(
            str(raises_context.exception))

        invite_class_name = self.invite.__class__.__name__
        expected_message = "Error! The invite's type is %s, but InviteUser is the expected one" % invite_class_name

        self.assertEqual(
            message_exception, expected_message,
            "Expected exception message must be equal to %s" %
            expected_message)
    def setUp(cls):
        """Provide the base for the tests."""
        super(InviteInstitutionHandlerTest, cls).setUp()

        app = cls.webapp2.WSGIApplication(
            [(InviteInstitutionHandlerTest.INVITE_INSTITUTION_URI, InviteInstitutionHandler),
             ], debug=True)
        cls.testapp = cls.webtest.TestApp(app)

        # create models
        # new User
        cls.user_admin = mocks.create_user('*****@*****.**')
        # Other user
        cls.other_user = mocks.create_user('*****@*****.**')
        # new Institution inst test
        cls.inst_test = mocks.create_institution()
        cls.inst_test.admin = cls.user_admin.key
        cls.inst_test.state = "active"
        cls.inst_test.put()
        # New invite user
        cls.data = {
            'invitee': '*****@*****.**',
            'admin_key': cls.user_admin.key.urlsafe(),
            'institution_key': cls.inst_test.key.urlsafe(),
            'suggestion_institution_name': 'test'
        }
        cls.invite = InviteInstitution.create(cls.data)
        cls.invite.put()
Beispiel #4
0
    def get(self, user):
        """Get all invite whose type is institution."""
        invites = []

        queryInvites = InviteInstitution.query()

        invites = [invite.make() for invite in queryInvites]

        self.response.write(json.dumps(invites))
Beispiel #5
0
 def test_create_accept_notification(self, mock_method):
     """Test create a regular accept response notification."""
     invite = InviteInstitution.create(self.data)
     invite.put()
     self.user.current_institution = self.institution.key
     self.user.put()
     id = invite.create_accept_response_notification(
         'ACCEPT_INVITE_INSTITUTION', self.institution.key,
         invite.admin_key.urlsafe(), self.user)
     mock_method.assert_called()
     self.assertTrue(id != None)
Beispiel #6
0
 def test_create_system_notification(self, mock_method):
     """Test create a system notification."""
     invite = InviteInstitution.create(self.data)
     invite.put()
     self.user.current_institution = self.institution.key
     self.user.put()
     id = invite.create_accept_response_notification(
         'ADD_ADM_PERMISSIONS', self.institution.key,
         self.user.key.urlsafe())
     mock_method.assert_called()
     self.assertTrue(id != None)
    def test_delete(self, verify_token, send_notification):
        """Test method delete of InviteInstitutionHandler."""
        invite_institution = InviteInstitution.create(self.data)
        invite_institution.put()

        self.testapp.delete('/api/invites/institution/%s' %
                            invite_institution.key.urlsafe())

        invite_institution = invite_institution.key.get()
        self.assertTrue(invite_institution.status == "rejected")

        # assert the notification was sent
        send_notification.assert_called()
Beispiel #8
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)
        second_inst.children_institutions.append(third_inst.key)

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

        first_user.put()
        second_user.put()
        third_user.put()

        invite = InviteInstitution()
        invite.invitee = third_user.email[0]
        invite.institution_key = third_inst.key
        invite.admin_key = second_user.key
        invite.stub_institution_key = third_inst.key
        invite.put()

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

        self.assertEqual(first_user.permissions, {})
        self.assertEqual(second_user.permissions, {})
        self.assertEqual(third_user.permissions, {})

        self.body['data'] = {'sender_name': 'user name updated'}
        self.testapp.put_json(
            "/api/institutions/%s/invites/%s" %
            (third_inst.key.urlsafe(), invite.key.urlsafe()), self.body)

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

        self.assertTrue(
            has_permissions(third_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))
        self.assertTrue(
            has_permissions(second_user, third_inst.key.urlsafe(),
                            permissions.DEFAULT_ADMIN_PERMISSIONS))
Beispiel #9
0
    def setUp(cls):
        """Provide the base for the tests."""
        super(InstitutionHandlerTest, cls).setUp()
        methods = set(cls.webapp2.WSGIApplication.allowed_methods)
        methods.add('PATCH')
        cls.webapp2.WSGIApplication.allowed_methods = frozenset(methods)
        app = cls.webapp2.WSGIApplication(
            [("/api/institutions/(.*)/invites/(.*)", InstitutionHandler),
             ("/api/institutions/(.*)", InstitutionHandler),
             ("/api/queue/add-admin-permissions",
              AddAdminPermissionsInInstitutionHierarchy),
             ('/api/queue/remove-admin-permissions',
              RemoveAdminPermissionsInInstitutionHierarchy),
             ('/api/queue/remove-inst', RemoveInstitutionHandler)],
            debug=True)
        cls.testapp = cls.webtest.TestApp(app)

        # create models
        # new User
        cls.user = mocks.create_user('*****@*****.**')
        cls.user.name = "User"
        # new User Other
        cls.other_user = mocks.create_user('*****@*****.**')
        cls.other_user.state = "pending"
        cls.other_user.put()
        # new Institution FIRST INST
        cls.first_inst = mocks.create_institution()
        cls.first_inst.name = 'FIRST INST'
        cls.first_inst.acronym = 'FIRST INST'
        cls.first_inst.cnpj = '18.104.068/0001-86'
        cls.first_inst.email = '*****@*****.**'
        cls.first_inst.members = [cls.user.key, cls.other_user.key]
        cls.first_inst.followers = [cls.user.key, cls.other_user.key]
        cls.first_inst.admin = cls.user.key
        cls.first_inst.put()
        cls.user.institutions_admin = [cls.first_inst.key]
        cls.user.institutions = [cls.first_inst.key]
        cls.user.follows = [cls.first_inst.key]
        cls.user.add_permission("update_inst", cls.first_inst.key.urlsafe())
        cls.user.add_permission("remove_inst", cls.first_inst.key.urlsafe())
        cls.user.put()
        # new Institution SECOND INST
        cls.second_inst = mocks.create_institution()
        cls.second_inst.name = 'SECOND INST'
        cls.second_inst.acronym = 'SECOND INST'
        cls.second_inst.cnpj = '18.104.068/0000-86'
        cls.second_inst.email = '*****@*****.**'
        cls.second_inst.members = [cls.user.key, cls.other_user.key]
        cls.second_inst.followers = [cls.user.key, cls.other_user.key]
        cls.second_inst.posts = []
        cls.second_inst.admin = None
        cls.second_inst.put()
        # Invite for Other create new inst
        cls.invite = InviteInstitution()
        cls.invite.invitee = '*****@*****.**'
        cls.invite.institution_key = cls.second_inst.key
        cls.invite.admin_key = cls.user.key
        cls.invite.type_of_invite = 'institution'
        cls.invite.suggestion_institution_name = "Nova Inst"
        cls.invite.put()
        # Stub of Institution
        cls.stub = Institution()
        cls.stub.name = 'Nova Inst'
        cls.stub.state = 'pending'
        cls.stub.put()
        # update invite
        cls.invite.stub_institution_key = cls.stub.key
        cls.invite.put()
        # new Institution ECIS
        cls.third_inst = mocks.create_institution()
        cls.third_inst.members = [cls.user.key, cls.other_user.key]
        cls.other_user.add_institution(cls.third_inst.key)
        cls.other_user.follows.append(cls.third_inst.key)
        cls.third_inst.followers = [cls.user.key, cls.other_user.key]
        cls.third_inst.admin = cls.other_user.key
        cls.third_inst.parent_institution = cls.second_inst.key
        cls.third_inst.put()
        cls.second_inst.children_institutions.append(cls.third_inst.key)
        cls.second_inst.put()
        # method post body
        cls.body = {'data': None}
        # create headers
        cls.headers = {
            'Institution-Authorization': cls.first_inst.key.urlsafe()
        }
Beispiel #10
0
    def test_create(self):
        """Test create method."""
        created_invite = InviteInstitution.create(self.data)
        stub_institution_key = created_invite.stub_institution_key

        expected_invite = InviteInstitution()
        expected_invite.admin_key = self.admin.key
        expected_invite.is_request = False
        expected_invite.institution_key = self.institution.key
        expected_invite.sender_key = self.admin.key
        expected_invite.sender_name = self.admin.name
        expected_invite.invitee = self.user.email[0]
        expected_invite.suggestion_institution_name = "new Institution"
        expected_invite.stub_institution_key = stub_institution_key

        self.assertEquals(
            created_invite, expected_invite,
            "The created invite should be equal to the expected one")
Beispiel #11
0
 def test_check_is_invite_institution_valid(self):
     """Test check_is_invite_institution_valid method."""
     with self.assertRaises(FieldException):
         data = {"suggestion_institution_name": None}
         InviteInstitution.check_is_invite_institution_valid(data)