Guides / Netgsm (Türkçe)

Netgsm OTP SMS'ini gerçek SMS göndermeden test etmek

Kayıt ve giriş akışınız Netgsm üzerinden doğrulama kodu gönderiyorsa, uçtan uca testlerde bu adım genellikle ya elle yapılır ya da uygulamaya gömülü sabit bir kodla atlanır. Bu rehber, gerçek SMS göndermeden ve uygulamaya arka kapı eklemeden bu adımı otomatik test etmeyi anlatıyor.

8 Ekim 2026'da güncellendi
Kısaca

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

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.

src/sms.ts
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:

.env.test
OTPMOCK_URL=https://api.otpmock.com
NETGSM_USERNAME=om_live_...   # otpmock panelindeki API anahtarınız

SDK 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.

tests/kayit.spec.ts (Playwright)
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.

Kendi testlerinizde deneyin

Ücretsiz plan ayda 100 mesaj içerir. Kart gerekmez.

Ücretsiz API anahtarı alın

İlgili rehberler