Esempio n. 1
0
class UsersServicer(users_pb2_grpc.UsersServicer):
    def __init__(self, logger, db_stub):
        self._login = LoginHandler(logger, db_stub)
        self._create = CreateHandler(logger, db_stub)
        self._update = UpdateHandler(logger, db_stub)
        self._get_css = GetCssHandler(logger, db_stub)

    def Login(self, request, context):
        return self._login.Login(request, context)

    def Create(self, request, context):
        return self._create.Create(request, context)

    def Update(self, request, context):
        return self._update.Update(request, context)

    def GetCss(self, request, context):
        return self._get_css.GetCss(request, context)
Esempio n. 2
0
class LoginHandlerTest(unittest.TestCase):
    def setUp(self):
        self.db_stub = MockDBStub()
        self.login_handler = LoginHandler(Mock(), self.db_stub)
        self._pw = "hunter2"
        self._pw_hash = bcrypt.hashpw(self._pw.encode('utf-8'),
                                      bcrypt.gensalt())

    def _make_request(self):
        return users_pb2.LoginRequest(
            handle="CianLR",
            password=self._pw,
        )

    def _make_user(self, pw=None):
        pw = self._pw_hash if pw is None else pw
        return database_pb2.UsersEntry(
            handle="CianLR",
            global_id=1,
            display_name="Cian Ruane",
            password=pw,
            bio="A sound lad",
        )

    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.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.ERROR)
        self.assertEqual(resp.error, err)

    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_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.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.ERROR)

    def test_correct_password(self):
        req = self._make_request()
        user = self._make_user()
        self.db_stub.Users.return_value = database_pb2.UsersResponse(
            result_type=database_pb2.UsersResponse.OK,
            results=[user],
        )
        resp = self.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.ACCEPTED)
        self.assertEqual(resp.display_name, user.display_name)
        self.assertEqual(resp.global_id, user.global_id)

    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.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.DENIED)

    def test_blank_password(self):
        req = self._make_request()
        req.password = ""
        resp = self.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.ERROR)

    def test_blank_username(self):
        req = self._make_request()
        req.handle = ""
        resp = self.login_handler.Login(req, None)
        self.assertEqual(resp.result, users_pb2.LoginResponse.ERROR)