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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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")
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)
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", ) ], )
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
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
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", ), ], )
def Users(self, request, context): response = database_pb2.UsersResponse() self._users_type_handlers[request.request_type](request, response) return response