Test Passwordless Login Without Inbox Chaos

Şifresiz giriş bir demoda kolay görünür. Kullanıcı bir e-posta girer. Bir sihirli bağlantı (magic link) gelir. Oturum başlar.

Staging ortamında bu akış karmaşıklaşır. Bağlantılar ortak gelen kutularına veya eski takma adlara (alias) düşer. Bu da gürültü yaratır.

Şifresiz kimlik doğrulamayı (auth) tam bir sistem olarak ele almalısınız. JavaScript istemcisini, Node.js backend'ini, e-posta gönderimini ve oturumu test etmeniz gerekir. Eğer gelen kutusunu atlayarsanız, API testleriniz geçse bile bozuk bir akış yayınlayabilirsiniz.

Yaygın hatalar şunları içerir:

  • Backend, bir yeniden deneme sonrası iki bağlantı gönderir.
  • E-posta yanlış host'a yönlendirir.
  • Eski bir bağlantı olması gerekenden daha uzun süre çalışır.
  • Frontend, çerez (cookie) ayarlanmadan önce kullanıcıyı oturum açmış olarak işaretler.

Her test çalışması için izole bir gelen kutusu kullanın. Bu, test verilerinin ekip posta kutularına sızmasını önler. Çalışmaları ayrı tutmak için staging ortamında geçici e-posta servisleri kullanın.

İzolasyon, hata ayıklamayı (debugging) kolaylaştırır. Bir test başarısız olursa, tek bir gelen kutusu ve tek bir kullanıcı yolculuğu görmelisiniz. Hangi mesajın hangi build'e ait olduğunu tam olarak bilmelisiniz.

İyi bir test şu adımları sırasıyla kontrol eder:

  • Giriş isteği, bir hesabın var olup olmadığını belli etmeden başarılı olur.
  • Tam olarak bir adet yeni sihirli bağlantı gelir.
  • Bağlantı host'u staging alan adınızla eşleşir.
  • Bağlantı geçerli bir oturum başlatır.
  • Aynı bağlantıyı tekrar kullanmak başarısız olur.
  • Uygulama, manuel yenileme yapmadan navigasyonu günceller.

Node.js tarafında, loglarınıza bir korelasyon kimliği (correlation ID) ekleyin. Bunu istekten e-posta gönderimine ve nihai oturuma kadar kullanın. Bu, e-postalar yavaş olduğunda veya yinelenmiş olduğunda hataları bulmanıza yardımcı olur.

Tüm testlerinizi e-posta testleriyle değiştirmeyin. Token mantığı ve oturum kuralları için hızlı birim testleri (unit tests) kullanın. E-posta yolunu, gerçek kullanıcı deneyiminin çalıştığını kanıtlamak için kullanın.

Checklist before you ship:

  • Tek bir giriş isteği yalnızca bir aktif bağlantı oluşturur.
  • En yeni e-postayı staging ortamında ayrıştırmak (parse) kolaydır.
  • Bağlantı doğru host üzerinde çalışır.
  • Bağlantı tekrar kullanılamaz.
  • Çıkış yapıp tekrar giriş yapmak temiz, yeni bir token oluşturur.

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