def test_signup_email(db): user, api_token = generate_user() request_email = f"{random_hex(12)}@couchers.org.invalid" with session_scope() as session: token, expiry_text = new_signup_token(session, request_email) with patch("couchers.email.queue_email") as mock: send_signup_email(request_email, token, expiry_text) assert mock.call_count == 1 (sender_name, sender_email, recipient, subject, plain, html), _ = mock.call_args assert recipient == request_email assert token.token in plain assert token.token in html
def Signup(self, request, context): """ First step of Signup flow. If the email is not a valid email (by regexp), returns INVALID_EMAIL If the email already exists, returns EMAIL_EXISTS. Otherwise, creates a signup token and sends an email, then returns SENT_SIGNUP_EMAIL. """ logging.debug(f"Signup with {request.email=}") if not is_valid_email(request.email): return auth_pb2.SignupRes(next_step=auth_pb2.SignupRes.SignupStep.INVALID_EMAIL) with session_scope(self._Session) as session: user = session.query(User).filter(User.email == request.email).one_or_none() if not user: token, expiry_text = new_signup_token(session, request.email) send_signup_email(request.email, token, expiry_text) return auth_pb2.SignupRes(next_step=auth_pb2.SignupRes.SignupStep.SENT_SIGNUP_EMAIL) else: return auth_pb2.SignupRes(next_step=auth_pb2.SignupRes.SignupStep.EMAIL_EXISTS)
def test_signup_email(db): user, api_token = generate_user(db) request_email = f"{random_hex(12)}@couchers.org.invalid" message_id = random_hex(64) with session_scope(db) as session: token, expiry_text = new_signup_token(session, request_email) @create_autospec def mock_send_email(sender_name, sender_email, recipient, subject, plain, html): assert recipient == request_email assert token.token in plain assert token.token in html return message_id with patch("couchers.email.send_email", mock_send_email) as mock: send_signup_email(request_email, token, expiry_text) assert mock.call_count == 1