Example #1
0
    def test_correct_password(self):
        user = self._make_user()
        user_lookup = database_pb2.UsersResponse(
            result_type=general_pb2.ResultType.OK,
            results=[user],
        )
        user_update = database_pb2.UsersResponse(
            result_type=general_pb2.ResultType.OK, )
        self.db_stub.Users.side_effect = [user_lookup, user_update]

        req = self._make_request()
        resp = self.update_handler.Update(req, None)
        self.assertEqual(resp.result, general_pb2.ResultType.OK)
Example #2
0
 def test_all_users_when_no_users(self):
     res = self.all_users()
     want = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.OK,
         results=[]
     )
     self.assertEqual(want, res)
Example #3
0
 def test_handle_many_users(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.OK,
         results=[self._make_user(), self._make_user()],
     )
     resp = self.update_handler.Update(req, None)
     self.assertEqual(resp.result, users_pb2.UpdateUserResponse.ERROR)
Example #4
0
 def test_incorrect_password(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.OK,
         results=[self._make_user(b"password123")],
     )
     resp = self.update_handler.Update(req, None)
     self.assertEqual(resp.result, users_pb2.UpdateUserResponse.DENIED)
Example #5
0
 def test_handle_no_user(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.OK,
         results=[],
     )
     resp = self.login_handler.Login(req, None)
     self.assertEqual(resp.result, users_pb2.LoginResponse.ERROR)
Example #6
0
 def test_incorrect_password(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.OK,
         results=[self._make_user(b"password123")],
     )
     resp = self.login_handler.Login(req, None)
     self.assertEqual(resp.result, general_pb2.ResultType.ERROR_401)
Example #7
0
 def test_handle_many_users(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.OK,
         results=[self._make_user(), self._make_user()],
     )
     resp = self.login_handler.Login(req, None)
     self.assertEqual(resp.result, general_pb2.ResultType.ERROR)
Example #8
0
 def test_handle_no_user(self):
     req = self._make_request()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.OK,
         results=[],
     )
     resp = self.update_handler.Update(req, None)
     self.assertEqual(resp.result, general_pb2.ResultType.ERROR)
Example #9
0
 def test_handle_db_error(self):
     req = self._make_request()
     err = "MockError"
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.ERROR,
         error=err,
     )
     resp = self.login_handler.Login(req, None)
     self.assertEqual(resp.result, general_pb2.ResultType.ERROR)
     self.assertEqual(resp.error, err)
Example #10
0
 def test_handle_db_error(self):
     req = self._make_request()
     err = "MockError"
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.ERROR,
         error=err,
     )
     resp = self.update_handler.Update(req, None)
     self.assertEqual(resp.result, users_pb2.UpdateUserResponse.ERROR)
     self.assertEqual(resp.error, err)
Example #11
0
 def test_send_db_request(self):
     req = self._make_request("CianLR")
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=database_pb2.UsersResponse.OK, global_id=2)
     resp = self.create_handler.Create(req, None)
     self.assertEqual(resp.result_type, users_pb2.CreateUserResponse.OK)
     self.assertEqual(resp.global_id, 2)
     self.assertNotEqual(self.db_stub.Users.call_args, None)
     db_req = self.db_stub.Users.call_args[0][0]
     self.assertEqual(db_req.entry.handle, "CianLR")
Example #12
0
 def test_correct_password(self):
     req = self._make_request()
     user = self._make_user()
     self.db_stub.Users.return_value = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.OK,
         results=[user],
     )
     resp = self.login_handler.Login(req, None)
     self.assertEqual(resp.result, general_pb2.ResultType.OK)
     self.assertEqual(resp.display_name, user.display_name)
     self.assertEqual(resp.global_id, user.global_id)
Example #13
0
 def AllUsers(self, request, context):
     response = database_pb2.UsersResponse()
     try:
         db_res = self._db.execute(self._select_base, 0)
     except sqlite3.Error as e:
         response.result_type = general_pb2.ResultType.ERROR
         response.error = str(e)
         return response
     response.result_type = general_pb2.ResultType.OK
     for tup in db_res:
         if not self._db_tuple_to_entry(tup, response.results.add()):
             del response.results[-1]
     return response
 def __init__(self):
     self.posts_response = database_pb2.PostsResponse(
         result_type=general_pb2.ResultType.OK,
         results=[
             database_pb2.PostsEntry(
                 global_id=123,
                 author_id=456,
                 title="Minecraft Farming 101",
                 body="Don't bother",
                 ap_id="https://rabble.mojang.com/ap/@minecraft4ever/666",
             )
         ])
     self.users_response = database_pb2.UsersResponse(
         result_type=general_pb2.ResultType.OK,
         results=[
             database_pb2.UsersEntry(
                 global_id=456,
                 handle="minecraft4ever",
                 host="rabble.mojang.com",
                 display_name="Minecraft4Ever",
             )
         ],
     )
Example #15
0
 def AllUserLikes(self, request, context):
     resp = database_pb2.UsersResponse()
     try:
         db_res = self._db.execute(
             "SELECT u.global_id, u.host, "
             "GROUP_CONCAT(l.article_id) "
             "FROM users u "
             "LEFT OUTER JOIN likes l ON "
             "l.user_id = u.global_id GROUP BY u.global_id "
         )
     except sqlite3.Error as e:
         resp.result_type = database_pb2.UsersResponse.ERROR
         resp.error = str(e)
         return resp
     resp.result_type = database_pb2.UsersResponse.OK
     for tup in db_res:
         entry = resp.results.add()
         if len(tup) != 3:
             self._logger.warning(
                 CONVERT_ERROR + "Wrong number of elements " + str(tup))
             resp.result_type = database_pb2.UsersResponse.ERROR
             resp.error = str("Wrong number of elements")
             break
         try:
             entry.global_id = tup[0]
             if tup[1] is not None:
                 entry.host = tup[1]
             else:
                 entry.host_is_null = True
             if tup[2] is not None:
                 entry.likes = tup[2]
         except Exception as e:
             self._logger.warning(CONVERT_ERROR + str(e))
             resp.result_type = database_pb2.UsersResponse.ERROR
             resp.error = str(e)
             break
     return resp
Example #16
0
 def SearchUsers(self, request, context):
     resp = database_pb2.UsersResponse()
     n = request.num_responses
     if not n:
         n = DEFAULT_NUM_USERS
     user_id = -1
     if request.HasField("user_global_id"):
         user_id = request.user_global_id.value
     self._logger.info('Reading up to {} users for search users'.format(n))
     try:
         res = self._db.execute(
             self._select_base + 'WHERE global_id IN ' +
             '(SELECT rowid FROM users_idx WHERE users_idx ' +
             'MATCH ? LIMIT ?)', user_id, request.query + "*", n)
         for tup in res:
             if not self._db_tuple_to_entry(tup, resp.results.add()):
                 del resp.results[-1]
     except sqlite3.Error as e:
         self._logger.info("Error searching for users")
         self._logger.error(str(e))
         resp.result_type = general_pb2.ResultType.ERROR
         resp.error = str(e)
         return resp
     return resp
Example #17
0
 def __init__(self):
     self.posts_response = dbpb.PostsResponse(
         result_type=dbpb.PostsResponse.OK,
         results=[
             dbpb.PostsEntry(
                 global_id=3,
                 author_id=123,
                 title="Test",
                 body="Test body",
                 ap_id="https://rabble.cian.com/@cian/3",
             ),
         ],
     )
     self.users_response = dbpb.UsersResponse(
         result_type=dbpb.UsersResponse.OK,
         results=[
             dbpb.UsersEntry(
                 global_id=123,
                 handle="cian",
                 host="rabble.cian.com",
                 display_name="Cian",
             ),
         ],
     )
Example #18
0
 def Users(self, request, context):
     response = database_pb2.UsersResponse()
     self._users_type_handlers[request.request_type](request, response)
     return response