コード例 #1
0
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
コード例 #2
0
ファイル: auth.py プロジェクト: HenryZerocool/couchers
    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)
コード例 #3
0
ファイル: test_email.py プロジェクト: Almenon/couchers
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