ഇൻബോക്സ് ആശയക്കുഴപ്പങ്ങളില്ലാതെ പാസ്‌വേഡ്ലെസ്സ് ലോഗിൻ പരിശോധിക്കുക

ഒരു ഡെമോയിൽ പാസ്‌വേഡ്ലെസ്സ് ലോഗിൻ വളരെ എളുപ്പമായി തോന്നും. ഒരു ഉപയോക്താവ് ഇമെയിൽ നൽകുന്നു. ഒരു മാജിക് ലിങ്ക് ലഭിക്കുന്നു. സെഷൻ ആരംഭിക്കുന്നു.

സ്റ്റേജിംഗിൽ (staging), ഈ പ്രക്രിയ സങ്കീർണ്ണമാകാറുണ്ട്. ലിങ്കുകൾ ഷെയർ ചെയ്ത ഇൻബോക്സുകളിലോ പഴയ ഏലിയാസുകളിലോ (aliases) എത്തിയേക്കാം. ഇത് അനാവശ്യമായ ആശയക്കുഴപ്പങ്ങൾ ഉണ്ടാക്കുന്നു.

പാസ്‌വേഡ്ലെസ്സ് ഓതന്റേഷൻ (auth) ഒരു സമ്പൂർണ്ണ സംവിധാനമായി തന്നെ നിങ്ങൾ കാണണം. JavaScript ക്ലയന്റ്, Node.js ബാക്കെൻഡ്, ഇമെയിൽ ഡെലിവറി, സെഷൻ എന്നിവ നിങ്ങൾ പരിശോധിക്കേണ്ടതുണ്ട്. നിങ്ങളുടെ API ടെസ്റ്റുകൾ വിജയിച്ചാലും, ഇൻബോക്സ് പരിശോധിക്കാതെ പോയാൽ തകരാറുള്ള ഒരു ഫ്ലോ (flow) നിങ്ങൾ പുറത്തിറക്കിയേക്കാം.

സാധാരണയായി സംഭവിക്കുന്ന പരാജയങ്ങൾ ഇവയാണ്:

  • റീട്രൈ (retry) ചെയ്ത ശേഷം ബാക്കെൻഡ് രണ്ട് ലിങ്കുകൾ അയക്കുന്നു.
  • ഇമെയിൽ തെറ്റായ ഹോസ്റ്റിലേക്കാണ് വിരൽ ചൂണ്ടുന്നത്.
  • ഒരു പഴയ ലിങ്ക് പ്രതീക്ഷിച്ചതിലും കൂടുതൽ സമയം പ്രവർത്തിക്കുന്നു.
  • കുക്കി (cookie) സെറ്റ് ചെയ്യുന്നതിന് മുമ്പ് തന്നെ ഫ്രണ്ട്‌എൻഡ് ഉപയോക്താവിനെ സൈൻ ഇൻ ചെയ്തതായി അടയാളപ്പെടുത്തുന്നു.

ഓരോ ടെസ്റ്റ് റണ്ണിനും ഒരു ഐസൊലേറ്റഡ് (isolated) ഇൻബോക്സ് ഉപയോഗിക്കുക. ഇത് ടെസ്റ്റിംഗ് ഡാറ്റ ടീം മെയിൽബോക്സുകളിലേക്ക് ചോരുന്നത് തടയുന്നു. ടെസ്റ്റുകൾ വേർതിരിച്ചു നിർത്താൻ സ്റ്റേജിംഗിനായി ഡിസ്പോസബിൾ (disposable) ഇമെയിൽ സേവനങ്ങൾ ഉപയോഗിക്കുക.

ഐസൊലേഷൻ ഡിബഗ്ഗിംഗ് (debugging) എളുപ്പമാക്കുന്നു. ഒരു ടെസ്റ്റ് പരാജയപ്പെട്ടാൽ, നിങ്ങൾക്ക് ഒരു ഇൻബോക്സും ഒരു യൂസർ ജേർണിയും മാത്രമേ കാണാൻ കഴിയാവൂ. ഏത് സന്ദേശമാണ് ഏത് ബിൽഡിന്റേതെന്ന് നിങ്ങൾക്ക് കൃത്യമായി അറിയാൻ കഴിയണം.

നല്ലൊരു ടെസ്റ്റ് താഴെ പറയുന്ന ഘട്ടങ്ങൾ ക്രമമായി പരിശോധിക്കുന്നു:

  • അക്കൗണ്ട് ഉണ്ടോ എന്ന് വെളിപ്പെടുത്താതെ തന്നെ ലോഗിൻ റിക്വസ്റ്റ് വിജയിക്കുന്നു.
  • കൃത്യമായി ഒരു പുതിയ മാജിക്-ലിങ്ക് മാത്രം ലഭിക്കുന്നു.
  • ലിങ്ക് ഹോസ്റ്റ് നിങ്ങളുടെ സ്റ്റേജിംഗ് ഡൊമെയ്‌നുമായി പൊരുത്തപ്പെടുന്നു.
  • ലിങ്ക് ഒരു സാധുവായ സെഷൻ ആരംഭിക്കുന്നു.
  • ഒരേ ലിങ്ക് വീണ്ടും ഉപയോഗിക്കാൻ ശ്രമിച്ചാൽ പരാജയപ്പെടുന്നു.
  • മാനുവൽ റിഫ്രഷ് ഇല്ലാതെ തന്നെ ആപ്പ് നാവിഗേഷൻ അപ്‌ഡേറ്റ് ചെയ്യുന്നു.

Node.js ഭാഗത്ത്, നിങ്ങളുടെ ലോഗുകളിൽ ഒരു കോറിലേഷൻ ഐഡി (correlation ID) ചേർക്കുക. റിക്വസ്റ്റ് മുതൽ ഇമെയിൽ അയക്കുന്നത് വരെയും അവസാന സെഷൻ വരെയും ഇത് ഉപയോഗിക്കുക. ഇമെയിലുകൾ വൈകുകയോ ഡ്യൂപ്ലിക്കേറ്റ് ആകുകയോ ചെയ്യുമ്പോൾ ബഗുകൾ കണ്ടെത്താൻ ഇത് സഹായിക്കും.

നിങ്ങളുടെ എല്ലാ ടെസ്റ്റുകളും ഇമെയിൽ ടെസ്റ്റുകൾ കൊണ്ട് മാറ്റിസ്ഥാപിക്കരുത്. ടോക്കൺ ലോജിക് (token logic), സെഷൻ നിയമങ്ങൾ എന്നിവയ്ക്കായി വേഗതയേറിയ യൂണിറ്റ് ടെസ്റ്റുകൾ ഉപയോഗിക്കുക. യഥാർത്ഥ ഉപയോക്താവിന്റെ അനുഭവം ശരിയാണെന്ന് തെളിയിക്കാൻ ഇമെയിൽ പാത്ത് ഉപയോഗിക്കുക.

പുറത്തിറക്കുന്നതിന് മുമ്പുള്ള ചെക്ക്‌ലിസ്റ്റ്:

  • ഒരു ലോഗിൻ റിക്വസ്റ്റ് ഒരു ആക്റ്റീവ് ലിങ്ക് മാത്രമേ സൃഷ്ടിക്കാവൂ.
  • സ്റ്റേജിംഗിൽ ഏറ്റവും പുതിയ ഇമെയിൽ എളുപ്പത്തിൽ പാഴ്സ് (parse) ചെയ്യാൻ കഴിയണം.
  • ലിങ്ക് ശരിയായ ഹോസ്റ്റിൽ പ്രവർത്തിക്കുന്നു.
  • ലിങ്ക് വീണ്ടും ഉപയോഗിക്കാൻ കഴിയില്ല.
  • ലോഗൗട്ട് ചെയ്ത് വീണ്ടും ലോഗിൻ ചെയ്യുമ്പോൾ പുതിയൊരു ടോക്കൺ ലഭിക്കുന്നു.

സ്രോതസ്സ്: https://dev.to/ryanlee91/how-to-test-passwordless-login-emails-in-javascript-without-inbox-chaos-56d0