Pengujian verifikasi email adalah salah satu aspek pengembangan perangkat lunak yang paling membosankan namun penting. Setiap alur pendaftaran, setiap email transaksional, dan setiap notifikasi perlu diuji secara menyeluruh. Alamat email sekali pakai mengubah proses ini dari tugas manual yang melelahkan menjadi pipeline otomatis yang dapat diskalakan.
Menyiapkan Pengujian API
Langkah pertama adalah menyiapkan lingkungan pengujian Anda dengan API email sekali pakai. Anda memerlukan endpoint untuk membuat alamat email baru, memeriksa kotak masuk, dan mengambil konten email. Dengan EvilMail API, semua ini tersedia melalui REST endpoint yang sederhana dan terdokumentasi dengan baik.
Mulailah dengan membuat alamat email pengujian melalui API:
curl -X POST https://api.evilmail.com/v1/addresses
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"prefix": "test-user", "domain": "evilmail.com"}'Contoh Python untuk Pengujian Otomatis
Berikut adalah contoh lengkap menggunakan Python untuk mengotomatisasi pengujian verifikasi email:
import requests
import time
import re
class EmailVerificationTester:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.evilmail.com/v1"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def create_test_address(self, prefix="test"):
response = requests.post(
f"{self.base_url}/addresses",
headers=self.headers,
json={"prefix": prefix, "domain": "evilmail.com"}
)
return response.json()["address"]
def wait_for_email(self, address, timeout=30):
start = time.time()
while time.time() - start < timeout:
response = requests.get(
f"{self.base_url}/inboxes/{address}/messages",
headers=self.headers
)
messages = response.json()["messages"]
if messages:
return messages[0]
time.sleep(2)
raise TimeoutError("Email tidak diterima dalam batas waktu")
def extract_verification_link(self, message_id, address):
response = requests.get(
f"{self.base_url}/inboxes/{address}/messages/{message_id}",
headers=self.headers
)
body = response.json()["body"]
links = re.findall(r'https?://[^s<>"]+verify[^s<>"]*', body)
return links[0] if links else None
