Temp Mail کو ٹیسٹس اور CI میں مربوط کرنا

Mail.td کا REST API end-to-end ٹیسٹنگ کے لیے ڈیزائن کیا گیا ہے — یہ تصدیق کرنا کہ سائن اپس، پاس ورڈ ری سیٹس اور ای میل سے چلنے والے ورک فلوز درست برتاؤ کرتے ہیں۔ یہ گائیڈ عام ٹیسٹنگ ٹولز کے لیے انٹیگریشن پیٹرنز پر توجہ مرکوز کرتا ہے۔

خام endpoint ریفرنس (درخواست/جواب کی شکلیں) کے لیے، API صفحہ یا docs.mail.td دیکھیں۔

Selenium / Playwright / Cypress

پیٹرن: ہر ٹیسٹ سے پہلے نیا ان باکس بنائیں، اپنی ایپ کو اس پتے کے ساتھ سائن اپ کریں، پھر تصدیقی ای میل کے لیے API کو پول کریں۔

// سیوڈو کوڈ — کسی بھی ٹیسٹ فریم ورک کے لیے ڈھل جاتا ہے
async function signUpFlow(page) {
  // 1. عارضی ان باکس بنائیں
  const mailbox = await fetch("https://api.mail.td/api/accounts", {
    method: "POST",
    headers: {
      Authorization: "Bearer td_xxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      address: `test-${Date.now()}@mail.td`,
      password: "secret"
    })
  }).then(r => r.json());

  // 2. mailbox.address کے ساتھ اپنی ایپ سائن اپ کریں
  await page.goto("/signup");
  await page.fill("[name=email]", mailbox.address);
  await page.click("button[type=submit]");

  // 3. تصدیقی ای میل کے لیے پول کریں (30s تک)
  for (let i = 0; i < 30; i++) {
    const list = await fetch(
      `https://api.mail.td/api/accounts/${mailbox.id}/messages`,
      { headers: { Authorization: "Bearer td_xxx" } }
    ).then(r => r.json());
    if (list.messages.length > 0) {
      // فہرست کا جواب باڈی نہیں رکھتا — text_body حاصل کرنے کے لیے پیغام کی تفصیل لیں
      const msg = await fetch(
        `https://api.mail.td/api/accounts/${mailbox.id}/messages/${list.messages[0].id}`,
        { headers: { Authorization: "Bearer td_xxx" } }
      ).then(r => r.json());
      const link = extractLink(msg.text_body);
      await page.goto(link);
      break;
    }
    await new Promise(r => setTimeout(r, 1000));
  }
}

CI/CD پائپ لائنز

GitHub Actions، GitLab CI، CircleCI، یا کسی بھی پائپ لائن کے لیے:

  • ایک API ٹوکن کو CI سیکرٹ کے طور پر ذخیرہ کریں (لیک ہونے پر ڈیش بورڈ سے گردش کریں)
  • ہر ٹیسٹ جاب اپنا خود کا ان باکس بناتا ہے — متوازی جابز کے درمیان race condition کو روکتا ہے
  • ہر ٹیسٹ کے لیے منفرد پتہ استعمال کریں (مثلاً test-${RUN_ID}-${TEST_ID}@mail.td) تاکہ ناکامیوں کی ڈیبگنگ آسان ہو
  • صفائی کی ضرورت نہیں — ان باکسز خود بخود ختم ہوتے ہیں، صفائی کی اسکرپٹ کی ضرورت نہیں

تیز پائپ لائنز کے لیے Webhooks (Pro)

پولنگ ہر ٹیسٹ میں تاخیر شامل کرتی ہے۔ طویل ٹیسٹ سوٹس کے لیے، ایک webhook URL رجسٹر کریں جو نئی ای میل آنے پر POST وصول کرتا ہے۔ آپ کا ٹیسٹ 30 بار پولنگ کرنے کی بجائے webhook ڈلیوری کا انتظار کرتا ہے۔ عام 5–15 سیکنڈ کا انتظار 1 سیکنڈ سے کم تک کم کر دیتا ہے۔

Webhooks HMAC-SHA256 سے دستخط شدہ ہیں — پراسیسنگ سے پہلے دستخطی ہیڈر کی تصدیق کریں۔

SDK انسٹالیشن

npm install mailtd       # Node.js / TypeScript
pip install mailtd       # Python
go get github.com/mailtd/mailtd-go    # Go

مکمل endpoint ریفرنس کے لیے، mail.td/api دیکھیں۔

عام سوالات

میں API ٹوکن کہاں سے حاصل کروں؟

Pro ڈیش بورڈ → API Tokens → Create۔ ٹوکنز `td_` پیشوند والے ہوتے ہیں اور بنانے کے وقت صرف ایک بار دکھائے جاتے ہیں — کاپی کریں اور اپنے CI سیکرٹس یا پاس ورڈ منیجر میں ذخیرہ کریں۔

ریٹ لمٹ کیا ہے؟

Free فی سیکنڈ 1 درخواست؛ Pro فی سیکنڈ 10 درخواستیں۔ اگر آپ حد تک پہنچ جاتے ہیں، API `Retry-After` ہیڈر کے ساتھ 429 لوٹاتا ہے۔

Webhook دستخط کیسے کام کرتے ہیں؟

ہر webhook POST آپ کے webhook سیکرٹ سے ماخوذ دستخطی ہیڈر شامل کرتا ہے۔ تصدیق کرنے کے لیے کہ درخواست Mail.td سے آئی اور تبدیل نہیں ہوئی، payload پراسیس کرنے سے پہلے دستخط کی تصدیق کریں۔

کیا میں end-to-end ٹیسٹس متوازی چلا سکتا ہوں؟

ہاں — race condition کو روکنے کے لیے ہر متوازی ٹیسٹ جاب کو اپنا ان باکس دیں۔ Pro کا 100,000 ops/مہینہ کوٹہ زیادہ تر CI کیسز کا احاطہ کرتا ہے۔

کیا API Free اکاؤنٹس کے لیے کام کرتا ہے؟

Free میں ماہانہ 500 API آپریشن شامل ہیں — ہلکی اسکرپٹنگ کے لیے موزوں۔ CI/CD یا زیادہ تھرو پٹ کے لیے Pro میں اپ گریڈ کریں: 100,000 ops/مہینہ اور زیادہ درخواست کی شرح۔