इनबॉक्स की अव्यवस्था के बिना पासवर्डलेस लॉगिन का परीक्षण करें

डेमो में पासवर्डलेस लॉगिन आसान लगता है। एक उपयोगकर्ता ईमेल दर्ज करता है। एक मैजिक लिंक आता है। सेशन शुरू हो जाता है।

स्टेजिंग (staging) में, यह फ्लो काफी उलझ जाता है। लिंक साझा इनबॉक्स या पुराने एलियास (aliases) में पहुँच जाते हैं। इससे अनावश्यक शोर (noise) पैदा होता है।

आपको पासवर्डलेस ऑथ (auth) को एक पूर्ण सिस्टम के रूप में मानना चाहिए। आपको JavaScript क्लाइंट, Node.js बैकएंड, ईमेल डिलीवरी और सेशन का परीक्षण करने की आवश्यकता है। यदि आप इनबॉक्स को छोड़ देते हैं, तो आपके API टेस्ट पास होने के बावजूद आप एक दोषपूर्ण फ्लो शिप कर सकते हैं।

सामान्य विफलताओं में शामिल हैं:

  • रिट्राय (retry) के बाद बैकएंड दो लिंक भेज देता है।
  • ईमेल गलत होस्ट (host) की ओर इशारा करता है।
  • एक पुराना लिंक उम्मीद से अधिक समय तक काम करता है।
  • कुकी सेट होने से पहले ही फ्रंटएंड उपयोगकर्ता को साइन इन के रूप में मार्क कर देता है।

हर टेस्ट रन के लिए एक आइसोलेटेड (isolated) इनबॉक्स का उपयोग करें। यह टेस्टिंग डेटा को टीम के मेलबॉक्स में लीक होने से रोकता है। रन को अलग रखने के लिए स्टेजिंग के लिए डिस्पोजेबल ईमेल सेवाओं का उपयोग करें।

आइसोलेशन से डिबगिंग आसान हो जाती है। यदि कोई टेस्ट विफल होता है, तो आपको एक इनबॉक्स और एक यूजर जर्नी (user journey) दिखाई देनी चाहिए। आपको सटीक रूप से पता होना चाहिए कि कौन सा मैसेज किस बिल्ड (build) का है।

एक अच्छा टेस्ट इन चरणों की क्रमवार जांच करता है:

  • लॉगिन रिक्वेस्ट इस बात का खुलासा किए बिना सफल हो जाती है कि अकाउंट मौजूद है या नहीं।
  • ठीक एक नया मैजिक-लिंक आता है।
  • लिंक होस्ट आपके स्टेजिंग डोमेन से मेल खाता है।
  • लिंक एक वैध सेशन शुरू करता है।
  • उसी लिंक का पुन: उपयोग करने पर विफलता आती है।
  • ऐप बिना मैन्युअल रिफ्रेश के नेविगेशन को अपडेट करता है।

Node.js साइड पर, अपने लॉग्स (logs) के साथ एक कोरिलेशन आईडी (correlation ID) जोड़ें। इसका उपयोग रिक्वेस्ट से लेकर ईमेल भेजने और अंतिम सेशन तक करें। यह ईमेल के धीमे होने या डुप्लिकेट होने पर बग्स खोजने में आपकी मदद करता है।

अपने सभी टेस्ट को ईमेल टेस्ट से न बदलें। टोकन लॉजिक और सेशन नियमों के लिए तेज़ यूनिट टेस्ट का उपयोग करें। वास्तविक यूजर एक्सपीरियंस के काम करने को साबित करने के लिए ईमेल पाथ का उपयोग करें।

शिप करने से पहले चेकलिस्ट:

  • एक लॉगिन रिक्वेस्ट केवल एक ही सक्रिय लिंक बनाती है।
  • स्टेजिंग में नवीनतम ईमेल को पार्स (parse) करना आसान है।
  • लिंक सही होस्ट पर काम करता है।
  • लिंक का पुन: उपयोग नहीं किया जा सकता।
  • लॉगआउट और री-लॉगिन एक नया क्लीन टोकन बनाते हैं।

स्रोत: https://dev.to/ryanlee91/how-to-test-passwordless-login-emails-in-javascript-without-inbox-chaos-56d0