تست ورود بدون رمز عبور (Passwordless Login) بدون آشفتگی در صندوق ورودی (Inbox)

ورود بدون رمز عبور در دمو ساده به نظر می‌رسد. کاربر یک ایمیل وارد می‌کند، یک لینک جادویی (magic link) دریافت می‌کند و وارد می‌شود.

در محیط استیجینگ (staging)، این جریان با مشکل مواجه می‌شود. لینک‌ها در صندوق‌های ورودی مشترک یا نام‌های مستعار (aliases) قدیمی ایمیل فرود می‌آیند. تست کردن به یک هرج‌ومرج تبدیل می‌شود.

شما باید احراز هویت بدون رمز عبور را به عنوان یک سیستم واحد در نظر بگیرید. شما باید کلاینت JavaScript، بک‌اند Node.js، ارسال ایمیل و نشست (session) نهایی را تست کنید.

اگر صندوق ورودی را نادیده بگیرید، ممکن است تست‌های API شما با موفقیت انجام شوند در حالی که تجربه کاربری با شکست مواجه می‌شود.

شکست‌های رایج عبارتند از:

  • بک‌اند پس از تلاش مجدد، دو لینک ارسال می‌کند.
  • ایمیل به هاست محیط اشتباهی اشاره می‌کند.
  • یک لینک قدیمی بیش از حد مجاز کار می‌کند.
  • فرانت‌اند قبل از تنظیم کوکی، کاربر را به عنوان وارد شده (logged in) علامت‌گذاری می‌کند.

برای هر اجرای تست از یک صندوق ورودی ایزوله استفاده کنید. این کار داده‌های شما را تمیز و عیب‌یابی (debugging) را سریع نگه می‌دارد. اگر سه تست از یک صندوق ورودی استفاده کنند، نمی‌توانید خطا را پیدا کنید.

این گردش کار را دنبال کنید:

  • ورود را از طریق رابط کاربری (UI) یا یک تست سرتاسری (end-to-end) تحریک کنید.
  • اجازه دهید Node.js لینک را از طریق مسیر استیجینگ شما ارسال کند.
  • پیام را در یک صندوق ورودی تازه و ایزوله دریافت کنید.
  • جدیدترین لینک را در همان نشست مرورگر باز کنید.
  • وضعیت احراز هویت شده را تأیید کنید.

یک تست خوب فراتر از بررسی رسیدن ایمیل است. این مراحل را به ترتیب بررسی کنید:

  • درخواست ورود یک پاسخ موفقیت‌آمیز خنثی برمی‌گرداند.
  • دقیقاً یک لینک جادویی تازه وجود دارد.
  • هاست لینک با دامنه استیجینگ شما مطابقت دارد.
  • توکن یک نشست معتبر را شروع می‌کند.
  • استفاده مجدد از همان لینک با شکست مواجه می‌شود.
  • اپلیکیشن بدون نیاز به رفرش دستی، رابط کاربری را به‌روزرسانی می‌کند.

در بک‌اند، یک شناسه همبستگی (correlation ID) به لاگ‌های خود پیوست کنید. این کار به شما کمک می‌کند یک درخواست را از زمان ایجاد تا نشست نهایی ردیابی کنید.

تمام تست‌های خود را با تست‌های مبتنی بر ایمیل جایگزین نکنید. از تست‌های واحد (unit tests) سریع برای منطق برنامه استفاده کنید و از این مسیر صندوق ورودی برای مجموعه تست‌های استیجینگ خود بهره ببرید.

قبل از انتشار (ship)، از این چک‌لیست استفاده کنید:

  • یک درخواست ورود تنها یک لینک فعال ایجاد می‌کند.
  • تجزیه (parse) جدیدترین ایمیل در استیجینگ آسان است.
  • لینک کاربر را در هاست صحیح وارد می‌کند.
  • لینک نمی‌تواند دو بار استفاده شود.
  • خروج و ورود مجدد، یک توکن جدید و تمیز تولید می‌کند.

منبع: https://dev.to/ryanlee91/how-to-test-passwordless-login-emails-in-javascript-without-inbox-chaos-56d0