Test ve staging ortamında Netgsm SDK'sını otpmock'a yönlendirin. Uygulamanız SMS'i her zamanki gibi gönderir; mesaj operatöre gitmez, otpmock'taki gelen kutusuna düşer. Test, kodu HTTP ile okuyup ekrana yazar. Kredi harcanmaz, gerçek telefon gerekmez, uygulama kodunuz değişmez.
OTP adımı testlerde neden sorun çıkarır
- Her test SMS kredisi harcar ve kod gerçek bir telefona gider. Otomatik okumak için cihaz ya da numara kiralama servisi gerekir.
- Teslim süresi değişkendir. Sabit bir bekleme süresi ya zaman kaybettirir ya da testi rastgele düşürür.
- Sabit test kodu (ör. belirli numaralar için
000000) uygulama kodunda yaşayan bir arka kapıdır ve yanlış bir ayarla canlıya çıkabilir. - Paralel testler çakışır. Herkes aynı test numarasını kullanırsa testler birbirinin kodunu okur.
1. adım: Netgsm SDK'sını test ortamında otpmock'a yönlendirin
Resmi @netgsm/sms paketinin adres seçeneği yok, ama baseURL özelliği oluşturulduktan sonra değiştirilebiliyor (yalnızca TypeScript tiplerinde private). OTPMOCK_URL tanımlı değilse hiçbir şey değişmez; canlı ortam Netgsm'e gitmeye devam eder.
import { Netgsm } from "@netgsm/sms";
export const netgsm = new Netgsm({
username: process.env.NETGSM_USERNAME, // testte: otpmock API anahtarı
password: process.env.NETGSM_PASSWORD,
});
if (process.env.OTPMOCK_URL) (netgsm as any).baseURL = process.env.OTPMOCK_URL;Test ortamında iki değişken tanımlayın:
OTPMOCK_URL=https://api.otpmock.com
NETGSM_USERNAME=om_live_... # otpmock panelindeki API anahtarınızSDK kullanmadan doğrudan REST v2'ye istek atıyorsanız, adres olarak https://api.netgsm.com.tr yerine https://api.otpmock.com kullanın ve Basic auth kullanıcı adına otpmock anahtarını yazın. Desteklenen uç noktalar POST /sms/rest/v2/send ve POST /sms/rest/v2/otp; yanıtlar Netgsm'in biçimindedir (başarıda "code": "00" ve bir jobid).
Numara biçimi
Netgsm numaraları yerel biçimde alır: 5321234567. otpmock bunları uluslararası biçimde saklar: +905321234567. 05321234567 ve 905321234567 da aynı numaraya çevrilir. Testte kodu +90… biçimiyle sorgulayın.
2. adım: testte kodu okuyun
Bağımlılıksız yardımcıyı indirin: curl -O https://otpmock.com/sdk/otpmock.ts. Her test kendi numarasını üretsin; böylece paralel çalışan testler çakışmaz.
import { test, expect } from "@playwright/test";
import { OtpMock } from "./otpmock";
const otp = new OtpMock({ baseUrl: process.env.OTPMOCK_URL!, apiKey: process.env.OTPMOCK_API_KEY! });
test("telefonla kayıt", async ({ page }) => {
const yerel = "5" + String(Math.floor(Math.random() * 1e9)).padStart(9, "0"); // 5xxxxxxxxx
await page.goto("/kayit");
await page.fill("[name=telefon]", yerel);
const since = Date.now() - 5000; // saat farkı payı
await page.click("text=Kod gönder");
const { code } = await otp.waitForCode("+90" + yerel, { since });
await page.fill("[name=kod]", code);
await page.click("text=Doğrula");
await expect(page).toHaveURL(/panel/);
});Yardımcıyı kullanmak istemezseniz tek bir istek yeterli: GET https://api.otpmock.com/v1/inbox/%2B905321234567/code?since=<unix_ms>, Authorization: Bearer <anahtar>. Kod geldiyse 200 ve {"code":"482913",…}, henüz gelmediyse 404 döner. Cypress ve Selenium için aynı mantık geçerli; bkz. Cypress ve Selenium rehberleri (İngilizce).
CI ve staging
Değişkenleri hem uygulamanın çalıştığı yerde (SMS'i uygulama gönderir) hem de testlerin çalıştığı yerde tanımlayın. Staging'de manuel test yapan ekip arkadaşlarınız da gelen kodları otpmock panelindeki canlı gelen kutusunda görebilir.
Diğer Türk SMS sağlayıcıları
otpmock İleti Merkezi, Verimor ve Mutlucell API'lerini de taklit ediyor. Kurulumları İleti Merkezi, Verimor ve Mutlucell sayfalarında. Twilio, Vonage, Infobip gibi uluslararası sağlayıcıların listesi sağlayıcılar sayfasında.
Sık sorulanlar
Bu yöntemle SMS'in gerçekten ulaştığını test edebilir miyim?
Hayır. otpmock uygulamanızın davranışını test eder, operatör teslimatını değil. Gerçek teslimatı ayrı ve küçük bir kontrolle doğrulayın, ana test takımınızı otpmock üzerinde çalıştırın.
Netgsm kredim harcanır mı?
Hayır. Test ortamında istekler Netgsm'e hiç gitmez, bu yüzden kredi harcanmaz.
Eski XML veya GET uç noktalarını kullanıyorum, çalışır mı?
Hayır, yalnızca resmi SDK'nın kullandığı REST v2 uç noktaları taklit ediliyor. Eski uç noktaları kullanıyorsanız, test ortamında REST v2'ye geçmek ya da gönderimi otpmock'un genel POST /v1/messages/send uç noktasına yönlendirmek gerekir.
otpmock Netgsm ile bağlantılı mı?
Hayır. otpmock bağımsız bir test aracıdır ve yalnızca uyumlu bir API sunar. Netgsm, sahibinin ticari markasıdır.
Ücretsiz plan ayda 100 mesaj içerir. Kart gerekmez.
Ücretsiz API anahtarı alın