-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathtest_user.py
40 lines (33 loc) · 1.32 KB
/
test_user.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import logging
import unittest
import grpc
import jwt
import e2e_base
import protos.user.user_pb2 as user_pb2
import protos.user.user_pb2_grpc as user_pb2_grpc
from settings import settings
logger = logging.getLogger(__name__)
class UserServiceEnd2EndTest(e2e_base.End2EndTestBase):
def setUp(self):
super().setUp()
self.stub = user_pb2_grpc.UserStub(self.channel)
def test_register_user_and_login(self):
response = self.stub.Register(user_pb2.RegisterReq(
username="me", password="pass", email="example@example.com"))
response = self.stub.Login(user_pb2.LoginReq(
username="me", password="pass"))
decoded_payload = jwt.decode(
response.jwt_token,
settings.JWT_PUBLIC_KEY,
algorithms=["RS256"])
assert "sub" in decoded_payload
assert "exp" in decoded_payload
def test_login_not_registered_user(self):
with self.assertRaises(grpc.RpcError) as cm:
self.stub.Login(user_pb2.LoginReq(username="you", password="pass"))
self.assertEqual(cm.exception.code(), grpc.StatusCode.UNAUTHENTICATED)
def test_register_user_wrong_email(self):
with self.assertRaises(grpc.RpcError) as cm:
self.stub.Register(user_pb2.RegisterReq(
username="John", password="pass", email="wrong_email"))
self.assertEqual(cm.exception.code(), grpc.StatusCode.INVALID_ARGUMENT)