Test Passwordless Login Without Inbox Chaos

ڈیمو میں پاس ورڈ لیس لاگ ان آسان لگتا ہے۔ صارف ای میل درج کرتا ہے۔ ایک میجک لنک موصول ہوتا ہے۔ سیشن شروع ہو جاتا ہے۔

اسٹیجنگ (staging) میں، یہ عمل الجھ جاتا ہے۔ لنکس مشترکہ ان باکسز یا پرانے ایلیئسز (aliases) میں پہنچ جاتے ہیں۔ اس سے غیر ضروری شور (noise) پیدا ہوتا ہے۔

آپ کو پاس ورڈ لیس آتھ (auth) کو ایک مکمل سسٹم کے طور پر دیکھنا چاہیے۔ آپ کو JavaScript کلائنٹ، Node.js بیک اینڈ، ای میل ڈیلیوری، اور سیشن کی جانچ کرنے کی ضرورت ہے۔ اگر آپ ان باکس کو نظر انداز کر دیتے ہیں، تو ممکن ہے کہ آپ کا API ٹیسٹ پاس ہو جائے لیکن آپ ایک خراب عمل (flow) لانچ کر دیں۔

عام ناکامیوں میں شامل ہیں:

  • بیک اینڈ دوبارہ کوشش (retry) کے بعد دو لنکس بھیج دیتا ہے۔
  • ای میل غلط ہوسٹ (host) کی طرف اشارہ کرتی ہے۔
  • ایک پرانا لنک ضرورت سے زیادہ دیر تک کام کرتا ہے۔
  • فرنٹ اینڈ کوکی سیٹ ہونے سے پہلے ہی صارف کو سائن ان کر دیتا ہے۔

ہر ٹیسٹ رن کے لیے ایک الگ (isolated) ان باکس استعمال کریں۔ یہ ٹیسٹنگ ڈیٹا کو ٹیم کے میل باکسز میں جانے سے روکتا ہے۔ اسٹیجنگ کے لیے ڈسپوزایبل (disposable) ای میل سروسز استعمال کریں تاکہ ہر رن الگ رہے۔

علیحدگی (Isolation) ڈی بگنگ کو آسان بناتی ہے۔ اگر کوئی ٹیسٹ فیل ہو جائے، تو آپ کو ایک ان باکس اور ایک یوزر جرنی (user journey) نظر آنی چاہیے۔ آپ کو بالکل معلوم ہونا چاہیے کہ کون سا پیغام کس بلڈ (build) سے متعلق ہے۔

ایک اچھا ٹیسٹ ان مراحل کی ترتیب وار جانچ کرتا ہے:

  • لاگ ان کی درخواست اس بات کو ظاہر کیے بغیر کامیاب ہو جاتی ہے کہ اکاؤنٹ موجود ہے یا نہیں۔
  • بالکل ایک نیا میجک لنک موصول ہوتا ہے۔
  • لنک کا ہوسٹ آپ کے اسٹیجنگ ڈومین سے مطابقت رکھتا ہے۔
  • لنک ایک درست سیشن شروع کرتا ہے۔
  • اسی لنک کو دوبارہ استعمال کرنے پر ناکامی ہوتی ہے۔
  • ایپ دستی ریفریش کے بغیر نیویگیشن کو اپ ڈیٹ کر دیتی ہے۔

Node.js کی جانب سے، اپنے لاگز (logs) کے ساتھ ایک کورلیشن آئی ڈی (correlation ID) منسلک کریں۔ اسے درخواست (request) سے لے کر ای میل بھیجنے اور حتمی سیشن تک استعمال کریں۔ یہ آپ کو اس وقت بگ (bugs) تلاش کرنے میں مدد دیتا ہے جب ای میلز میں تاخیر ہو یا وہ ڈپلیکیٹ ہو جائیں۔

اپنے تمام ٹیسٹ کو ای میل ٹیسٹ سے تبدیل نہ کریں۔ ٹوکن لاجک اور سیشن کے قواعد کے لیے تیز یونٹ ٹیسٹ (unit tests) استعمال کریں۔ ای میل کے راستے (path) کو یہ ثابت کرنے کے لیے استعمال کریں کہ حقیقی یوزر ایکسپیرینس (user experience) درست کام کر رہا ہے۔

لانچ کرنے سے پہلے چیک لسٹ:

  • ایک لاگ ان کی درخواست صرف ایک فعال لنک تخلیق کرتی ہے۔
  • اسٹیجنگ میں تازہ ترین ای میل کو پارس (parse) کرنا آسان ہے۔
  • لنک درست ہوسٹ پر کام کرتا ہے۔
  • لنک کو دوبارہ استعمال نہیں کیا جا سکتا۔
  • لاگ آؤٹ اور دوبارہ لاگ ان کرنے سے ایک نیا اور صاف ٹوکن بنتا ہے۔

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