def accept(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        if not friend:
            return self.render_to_json({"status": "error", "msg": "Inexistent user!"}, request_handler)

        invite = session.query(Invite).filter(and_(Invite.user_id == friend.id, Invite.friend_id == user.id)).first()

        if not invite:
            return self.render_to_json({"status": "error", "msg": "Invite not found."}, request_handler)

        if invite.friend_id == user.id:
            friendship = Friendship()
            friendship.user_id = user.id
            friendship.friend_id = friend.id
            friendship.created_dt = datetime.now()

            try:
                friendship.save()
            except IntegrityError:
                return self.render_to_json({"status": "error", "msg": "You and %s are already friend!" % friend.first_name}, request_handler)

            invite.delete()

        return self.render_to_json({"status": "ok", "msg": "User %s is now your friend!" % friend.first_name}, request_handler)
    def send(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        friendship = session.query(Friendship).filter(Friendship.user_id == user.id).filter(Friendship.friend_id==friend.id).first()

        if friendship:
            return self.render_to_json({"status": "error", "msg": "User is already your friend."}, request_handler)

        if not friend:
            return self.render_to_json({"status": "error", "msg": "User not found."}, request_handler)

        if friend.id == user.id:
            return self.render_to_json({"status": "error", "msg": "You cannot be a friend of yourself!"}, request_handler)

        invite = Invite()
        invite.user_id = user.id
        invite.friend_id = friend.id
        invite.date = datetime.now()

        try:
            invite.save()
        except IntegrityError:
            return self.render_to_json({"status": "error", "msg": "You have already invited this user. Just relax!"}, request_handler)

        return self.render_to_json({"status": "ok", "msg": "Your invite has been sent."}, request_handler)
Example #3
0
    def login(self, **kw):

        request_handler = kw.get('request_handler')

        username = kw.get('username')
        password = kw.get('password')

        session = meta.get_session()
        user = session.query(User).filter(User.username==username).first()

        m = hashlib.sha1()
        m.update(password)

        password = '******' + m.hexdigest()

        if user and (user.password == password):

            auth = hashlib.md5()
            auth.update('%s' % getrandbits(32))

            cache = get_cache()
            cache.set(auth.hexdigest(), '%s' % user.username)

            invites = session.query(Invite).filter(Invite.friend_id==user.id).all()
            invites_lst = [invite.user.as_dict() for invite in invites] 
        else:
            return self.render_to_json({'status': 'error', 'msg': 'Wrong username or password.'}, request_handler)

        return self.render_to_json({'status': 'ok', 'msg': auth.hexdigest(),'invites': invites_lst}, request_handler)
Example #4
0
def test_user_can_be_saved():

    session = get_session()

    user = User()

    user.last_name = 'should-be-last-name'
    user.first_name = 'should-be-first-name'
    user.username = '******'
    user.created = datetime.now()
    user.last_login = datetime.now()
    user.password = '******'
    user.gender = 'M'
    user.email = 'should-be-email'
    user.is_staff = False
    user.is_superuser = False
    user.is_active = True
    user.save()

    user_db = session.query(User).filter(
        User.username == 'should-be-username').first()

    assert user_db.username == user.username

    user_db.delete()
Example #5
0
    def search_ids(self, parameters):
        session = meta.get_session()
        query = 'select id from auth_user where first_name like "%%%s%%"' % parameters[0]

        if len(parameters) > 1:
            query += ' or last_name like "%%%s%%"' % parameters[1]

        result = session.execute(query)
        return [row['id'] for row in result.fetchall()]
    def friends(self, user, **kw):
        request_handler = kw.get('request_handler')

        session = meta.get_session()

        friends = session.query(Friendship).filter(Friendship.user_id == user.id).all()

        friends_lst = [friend.friend.as_dict() for friend in friends]

        return self.render_to_json({'friend': friends_lst}, request_handler)
    def list(self, user, **kw):
        request_handler = kw.get('request_handler')

        session = meta.get_session()

        invites = session.query(Invite).filter(Invite.user_id == user.id).all()

        invites_lst = [invite.friend.as_dict() for invite in invites]

        return self.render_to_json({'invite': invites_lst}, request_handler)
    def list(self, user, **kw):
        request_handler = kw.get('request_handler')

        session = meta.get_session()

        invites = session.query(Invite).filter(Invite.user_id == user.id).all()

        invites_lst = [invite.friend.as_dict() for invite in invites]

        return self.render_to_json({'invite': invites_lst}, request_handler)
    def friends(self, user, **kw):
        request_handler = kw.get('request_handler')

        session = meta.get_session()

        friends = session.query(Friendship).filter(
            Friendship.user_id == user.id).all()

        friends_lst = [friend.friend.as_dict() for friend in friends]

        return self.render_to_json({'friend': friends_lst}, request_handler)
    def send(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        friendship = session.query(Friendship).filter(
            Friendship.user_id == user.id).filter(
                Friendship.friend_id == friend.id).first()

        if friendship:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "User is already your friend."
                }, request_handler)

        if not friend:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "User not found."
                }, request_handler)

        if friend.id == user.id:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "You cannot be a friend of yourself!"
                }, request_handler)

        invite = Invite()
        invite.user_id = user.id
        invite.friend_id = friend.id
        invite.date = datetime.now()

        try:
            invite.save()
        except IntegrityError:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "You have already invited this user. Just relax!"
                }, request_handler)

        return self.render_to_json(
            {
                "status": "ok",
                "msg": "Your invite has been sent."
            }, request_handler)
    def accept(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        if not friend:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "Inexistent user!"
                }, request_handler)

        invite = session.query(Invite).filter(
            and_(Invite.user_id == friend.id,
                 Invite.friend_id == user.id)).first()

        if not invite:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "Invite not found."
                }, request_handler)

        if invite.friend_id == user.id:
            friendship = Friendship()
            friendship.user_id = user.id
            friendship.friend_id = friend.id
            friendship.created_dt = datetime.now()

            try:
                friendship.save()
            except IntegrityError:
                return self.render_to_json(
                    {
                        "status": "error",
                        "msg":
                        "You and %s are already friend!" % friend.first_name
                    }, request_handler)

            invite.delete()

        return self.render_to_json(
            {
                "status": "ok",
                "msg": "User %s is now your friend!" % friend.first_name
            }, request_handler)
Example #12
0
    def search(self, user, **kw):

        request_handler = kw.get('request_handler')

        username = kw.get('username')

        #TODO - Escape
        session = meta.get_session()
        users = session.query(User).filter(User.username.like("%" + username + "%")).order_by(User.first_name).all()

        users_lst = [user.as_dict() for user in users]

        users_json = {'users': users_lst}

        return self.render_to_json(users_json, request_handler)
Example #13
0
    def user(self, user, **kw):
        request_handler = kw.get('request_handler')

        if kw.get('username'):
            username = kw.get('username')

            session = meta.get_session()
            user_db = session.query(User).filter(User.username==username).first()

            if not user_db:
                return self.render_to_json({"status": "error", "msg": "User not found."}, request_handler)

            return self.render_to_json({'user': user_db.as_dict()}, request_handler)

        else:
            return self.render_to_json({'user': user.as_dict()}, request_handler)
    def remove(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        if not friend:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "Inexistent user!"
                }, request_handler)

        friend_id = friend.id

        if friend_id == user.id:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "Do you hate yourself?!"
                }, request_handler)

        friendship = session.query(Friendship).filter(
            Friendship.friend_id == friend_id).filter(
                User.id == user.id).first()

        if not friendship:
            return self.render_to_json(
                {
                    "status": "error",
                    "msg": "This user are not your friend!"
                }, request_handler)

        friendship.delete()

        return self.render_to_json(
            {
                "status": "ok",
                "msg": "Your friendship has been removed!"
            }, request_handler)
Example #15
0
    def post(self, **kw):
        
        username = self.request.GET[u'username']
        session = meta.get_session()        
        user = session.query(User).filter(User.username==username).first()
        
        if user:
            password = self.create_random_passord()
            
            m = hashlib.sha1()
            m.update(password)
            
            user.password = '******'+m.hexdigest()
            user.save()

        else:
            self.response.headers['Content-Type'] = 'application/json'
            self.response.out.write(simplejson.dumps({'status':'ok', 'msg':'Password re-created! Verify you email account'})) 
            
    
        body="""
              Dear %s: <br />
               <br />
              Your new password is %s. We strongly recommend you change as soon as possible. <br />
               <br />
              Please let us know if you have any questions. <br />
               <br />
              The MSS Team
              """ % (user.first_name, password)
        
        try:
            mensagem=EmailHelper.mensagem(destinatario=user.username,corpo=body,strFrom='Mobile Social Share Team <*****@*****.**>',subject="Your account has been created")
            EmailHelper.enviar(mensagem=mensagem,destinatario=user.username)

        except SMTPException, e:
            logging.exception(str(e))
    def remove(self, user, **kw):
        request_handler = kw.get('request_handler')

        username = kw.get('username')

        session = meta.get_session()
        friend = session.query(User).filter(User.username == username).first()

        if not friend:
            return self.render_to_json({"status": "error", "msg": "Inexistent user!"}, request_handler)

        friend_id = friend.id

        if friend_id == user.id:
            return self.render_to_json({"status": "error", "msg": "Do you hate yourself?!"}, request_handler)

        friendship = session.query(Friendship).filter(Friendship.friend_id == friend_id).filter(User.id==user.id).first()

        if not friendship:
            return self.render_to_json({"status": "error", "msg": "This user are not your friend!"}, request_handler)

        friendship.delete()

        return self.render_to_json({"status": "ok", "msg": "Your friendship has been removed!"}, request_handler)
 def ids(self):
     session = meta.get_session()
     result = session.execute('select id from application_context')
     return [row['id'] for row in result.fetchall()]
Example #18
0
 def ids(self):
     session = meta.get_session()
     result = session.execute('select id from auth_user')
     return [row['id'] for row in result.fetchall()]
 def ids(self):
     session = meta.get_session()
     result = session.execute('select context_type_id from context_type')
     return [row['context_type_id'] for row in result.fetchall()]
 def ids(self):
     session = meta.get_session()
     result = session.execute('select application_id from application')
     return [row['application_id'] for row in result.fetchall()]
Example #21
0
        try:
            user.save()
        except Exception, e:
            logging.exception(e)
            return self.render_to_json({'status': 'error', 'msg': 'Username already exists.'}, request_handler)

        try:
            mensagem = EmailHelper.mensagem(destinatario=user.email, corpo=body, strFrom='Mobile Social Share Team <*****@*****.**>', subject="Your account has been created")
            EmailHelper.enviar(mensagem=mensagem, destinatario=user.email)

        except SMTPException, e:
            logging.exception(str(e))

        code = kw.get("code", "")
        if code != "":
            session = meta.get_session()
            invite_email = session.query(InviteEmail).filter(InviteEmail.code==code).first()

            if invite_email:
                friendship = Friendship()
                friendship.user_id = invite_email.user_id
                friendship.friend_id = user.id
                friendship.created_dt = datetime.now()
                friendship.save()

                invite_email.delete()

        return self.render_to_json({'status': 'ok', 'msg': 'Account Created! Verify you email account'}, request_handler)

    def login(self, **kw):
class InviteHandlerTestCase(AsyncHTTPTestCase):

    session = get_session()

    def get_app(self):

        routes = [(r"/invite/send", SendInviteHandler),
                  (r"/invite/accept", AcceptInviteHandler),
                  (r"/invite/get.json", GetInviteHandler),
                  (r"/invite/email/send", SendEmailInviteHandler),
                  (r"/invite/email/accept", AcceptEmailInviteHandler)]

        return tornado.web.Application(routes)

    def test_send_invite(self):
        user = create_logged_user()
        user2 = create_user(last_name='test_send_invite',
                            first_name='test_send_invite',
                            username='******')

        self.http_client.fetch(
            self.get_url('/invite/send?username=%s&auth=should-be-user-auth' %
                         user2.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "ok", "msg": "Your invite has been sent."}')

        invite = self.session.query(Invite).filter(
            Invite.user_id == user.id).first()

        assert invite.user_id == user.id
        assert invite.friend_id == user2.id

        invite.delete()
        user.delete()
        user2.delete()

    def test_accept_invite(self):
        user = create_logged_user(username="******")
        friend = create_user(last_name='test_accept_invite',
                             first_name='test_accept_invite',
                             username='******')

        create_invite(friend, user)

        self.http_client.fetch(
            self.get_url(
                '/invite/accept?username=%s&auth=should-be-user-auth' %
                friend.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "ok", "msg": "User test_accept_invite is now your friend!"}'
        )

        invite = self.session.query(Invite).filter(
            Invite.user_id == user.id).first()

        self.assertEqual(invite, None)

        friendship = self.session.query(Friendship).filter(
            Friendship.user_id == user.id).first()

        assert friendship.user_id == user.id
        assert friendship.friend_id == friend.id

        friendship.delete()
        friend.delete()
        user.delete()

    def test_accept_inexistent_invite(self):
        user = create_logged_user(username="******")
        friend = create_user(last_name='test_accept_invite',
                             first_name='test_accept_invite',
                             username='******')

        self.http_client.fetch(
            self.get_url(
                '/invite/accept?username=%s&auth=should-be-user-auth' %
                friend.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body,
                         '{"status": "error", "msg": "Invite not found."}')

        user.delete()
        friend.delete()

    def test_accept_duplicated_invite(self):
        user = create_logged_user(username='******')
        friend = create_user(last_name='test_accept_invite',
                             first_name='test_accept_invite',
                             username='******')

        friendship = create_friendship(user, friend)
        invite = create_invite(friend, user)

        self.http_client.fetch(
            self.get_url(
                '/invite/accept?username=%s&auth=should-be-user-auth' %
                friend.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            simplejson.dumps({
                "status":
                "error",
                "msg":
                "You and %s are already friend!" % friend.first_name
            }))

        invite.delete()
        friendship.delete()
        user.delete()
        friend.delete()

    def test_get_invites(self):
        user = create_logged_user()
        friend1 = create_user(last_name='test_get_invites-1',
                              first_name='test_get_invites-1',
                              username='******')
        friend2 = create_user(last_name='test_get_invites-2',
                              first_name='test_get_invites-2',
                              username='******')

        invite1 = create_invite(user, friend1)
        invite2 = create_invite(user, friend2)

        self.http_client.fetch(
            self.get_url('/invite/get.json?auth=should-be-user-auth'),
            self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"invite": [{"username": "******", "first_name": "test_get_invites-1", "last_name": "test_get_invites-1", "gender": "M", "is_active": true, "is_superuser": false, "is_staff": false, "email": "should-be-email"}, {"username": "******", "first_name": "test_get_invites-2", "last_name": "test_get_invites-2", "gender": "M", "is_active": true, "is_superuser": false, "is_staff": false, "email": "should-be-email"}]}'
        )

        invite1.delete()
        invite2.delete()
        user.delete()
        friend1.delete()
        friend2.delete()

    def test_send_email_invite(self):
        user = create_logged_user()

        email = "*****@*****.**"

        m = hashlib.md5()
        m.update("%s%s" % (email, user.id))

        code = m.hexdigest()
        self.http_client.fetch(
            self.get_url(
                '/invite/email/send?email=%s&auth=should-be-user-auth' %
                email), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "ok", "msg": "Your invite has been sent."}')

        invite_email = self.session.query(InviteEmail).filter(
            InviteEmail.code == code).first()

        invite_email.delete()
        user.delete()

    def test_send_duplicate_email_invite(self):
        user = create_logged_user()

        email = "*****@*****.**"

        invite_email = create_invite_email(user=user, email=email)

        self.http_client.fetch(
            self.get_url(
                '/invite/email/send?email=%s&auth=should-be-user-auth' %
                email), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "error", "msg": "You have already invited this user. Just relax!"}'
        )

        invite_email.delete()
        user.delete()

    def test_accept_email_invite(self):
        pass
Example #23
0
class FriendshipHandlerTestCase(AsyncHTTPTestCase):

    session = get_session()

    def get_app(self):

        routes = [
            (r"/friendship/get.json", GetFriendshipsHandler),
            (r"/friendship/remove", RemoveFriendshipsHandler)
        ]

        return tornado.web.Application(routes)

    def test_get_friendship(self):
        user = create_logged_user()
        user2 = create_user(last_name='test_get_friendship-2', first_name='test_get_friendship-2',  username='******')
        user3 = create_user(last_name='test_get_friendship-3', first_name='test_get_friendship-3',  username='******')

        friendship = create_friendship(user, user2)
        friendship2 = create_friendship(user, user3)

        self.http_client.fetch(self.get_url('/friendship/get.json?auth=should-be-user-auth'), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body, '{"friend": [{"username": "******", "first_name": "test_get_friendship-2", "last_name": "test_get_friendship-2", "gender": "M", "is_active": true, "is_superuser": false, "is_staff": false, "email": "should-be-email"}, {"username": "******", "first_name": "test_get_friendship-3", "last_name": "test_get_friendship-3", "gender": "M", "is_active": true, "is_superuser": false, "is_staff": false, "email": "should-be-email"}]}')

        friendship.delete()
        friendship2.delete()
        user3.delete()
        user2.delete()
        user.delete()

    def test_remove_friendship(self):
        user = create_logged_user()
        user2 = create_user(last_name='test_remove_friendship-2', first_name='test_remove_friendship-2',  username='******')

        create_friendship(user, user2)

        self.http_client.fetch(self.get_url('/friendship/remove?username=%s&auth=should-be-user-auth' % user2.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body, '{"status": "ok", "msg": "Your friendship has been removed!"}')
        friendship_db = self.session.query(Friendship).filter(Friendship.user_id == user.id).first()

        self.assertEqual(friendship_db, None)

        user.delete()
        user2.delete()

    def test_remove_myself_friendship(self):

        user = create_logged_user()

        self.http_client.fetch(self.get_url('/friendship/remove?username=%s&auth=should-be-user-auth' % user.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body, '{"status": "error", "msg": "Do you hate yourself?!"}')

        user.delete()

    def test_remove_inexistent_friendship(self):
        user = create_logged_user(username='******')
        user2 = create_user(last_name='remove_inexistent_friendship-2', first_name='remove_inexistent_friendship-2',  username='******')

        self.http_client.fetch(self.get_url('/friendship/remove?username=%s&auth=should-be-user-auth' % user2.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body, '{"status": "error", "msg": "This user are not your friend!"}')

        user.delete()
        user2.delete()

    def test_remove_inexistent_friendship_with_inexistent_user(self):
        user = create_logged_user()

        self.http_client.fetch(self.get_url('/friendship/remove?username=0&auth=should-be-user-auth'), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body, '{"status": "error", "msg": "Inexistent user!"}')

        user.delete()
 def ids(self):
     session = meta.get_session()
     result = session.execute('select context_id from context')
     return [row['context_id'] for row in result.fetchall()]
Example #25
0
 def save(self):
     session = meta.get_session()
     if not self.id: 
         session.add(self)
     session.flush()
Example #26
0
 def delete(self):
     session = meta.get_session()
     session.delete(self)
     session.flush()
Example #27
0
 def all(cls, limit=None):
     session = meta.get_session()
     if limit:
         return session.query(cls).all()[limit[0]:limit[1]]
     return session.query(cls).all()
Example #28
0
 def fetch_by(cls, **kw):
     session = meta.get_session()
     return session.query(cls).filter_by(**kw)
Example #29
0
 def get(cls, id):
     session = meta.get_session()
     return session.query(cls).get(id)
Example #30
0
 def get_profile_ids(self):
     session = meta.get_session()
     result = session.execute('select id from user_profile')
     return [row['id'] for row in result.fetchall()]
Example #31
0
class UserHandlerTestCase(AsyncHTTPTestCase):

    session = get_session()

    def get_app(self):

        routes = [(r"/login", LoginHandler),
                  (r"/login/create", CreateLoginHandler),
                  (r"/user.json", UserHandler),
                  (r"/search/users.json", UserSearchHandler)]

        return tornado.web.Application(routes)

    def test_can_login(self):

        user = create_user(username='******')

        self.http_client.fetch(
            self.get_url('/login') +
            '?username=%s&password=should-be-password' % user.username,
            self.stop)

        response = self.wait()

        cache = get_cache()
        username = cache.get(simplejson.loads(response.body)['msg'])

        assert username == user.username

        user.delete()

    def test_create_user(self):
        self.http_client.fetch(
            self.get_url('/login/create') +
            '?username=should-be-username&[email protected]&firstName=test_create_user&lastName=should-be-last-name&gender=M',
            self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "ok", "msg": "Account Created! Verify you email account"}'
        )

        user_db = self.session.query(User).filter(
            User.email == '*****@*****.**').first()
        user_db.delete()

    def test_create_existent_user(self):

        user = create_user(username="******",
                           email="*****@*****.**")

        self.http_client.fetch(
            self.get_url('/login/create') +
            '?username=%s&email=%s&firstName=%s&lastName=%s&gender=M' %
            (user.username, user.email, user.first_name, user.last_name),
            self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            '{"status": "error", "msg": "Username already exists."}')

        user.delete()

    def test_get_user_myself(self):
        user = create_logged_user()

        self.http_client.fetch(
            self.get_url('/user.json?auth=should-be-user-auth'), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body,
                         simplejson.dumps({'user': user.as_dict()}))

        user.delete()

    def test_get_other_user(self):
        user = create_logged_user(username="******")
        user2 = create_user(username="******")

        self.http_client.fetch(
            self.get_url('/user.json?username=%s&auth=should-be-user-auth' %
                         user2.username), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(response.body,
                         simplejson.dumps({'user': user2.as_dict()}))

        user.delete()
        user2.delete()

    def test_get_other_inexistent_user(self):
        user = create_logged_user(username='******')

        self.http_client.fetch(
            self.get_url(
                '/user.json?username=anybody&auth=should-be-user-auth'),
            self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            simplejson.dumps({
                "status": "error",
                "msg": "User not found."
            }))

        user.delete()

    def test_search_user(self):
        user = create_logged_user(username="******")
        user2 = create_user(username="******")
        user3 = create_user(username="******")

        self.http_client.fetch(
            self.get_url(
                '/search/users.json?username=%s&auth=should-be-user-auth' %
                "test_"), self.stop)

        response = self.wait()

        self.failIf(response.error)
        self.assertEqual(
            response.body,
            simplejson.dumps({'users': [user2.as_dict(),
                                        user3.as_dict()]}))

        user.delete()
        user2.delete()
        user3.delete()