Test ortamında OTPMOCK_URL=https://api.otpmock.com tanımlayın, AWS SNS istemcisini bu adrese yönlendirin ve AWS SNS kimlik bilgisi olarak otpmock API anahtarınızı kullanın. Uygulama kodunuz değişmez; canlı ortam AWS SNS ile göndermeye devam eder.
Kurulum
Her AWS SDK'sı özel bir endpoint kabul eder.
import { SNSClient } from "@aws-sdk/client-sns";
export const sns = new SNSClient({
region: process.env.AWS_REGION ?? "us-east-1",
...(process.env.OTPMOCK_URL && {
endpoint: process.env.OTPMOCK_URL,
credentials: { accessKeyId: process.env.OTPMOCK_API_KEY, secretAccessKey: "unused" },
}),
});import os
import boto3
sns = boto3.client(
"sns",
region_name=os.environ.get("AWS_REGION", "us-east-1"),
endpoint_url=os.environ.get("OTPMOCK_URL"), # None in production
)
# In tests, set AWS_ACCESS_KEY_ID to your otpmock API key (any secret works).import java.net.URI;
import software.amazon.awssdk.services.sns.SnsClient;
String otpmock = System.getenv("OTPMOCK_URL");
var builder = SnsClient.builder();
if (otpmock != null) builder.endpointOverride(URI.create(otpmock));
SnsClient sns = builder.build();
// In tests, set AWS_ACCESS_KEY_ID to your otpmock API key (any secret works).using Amazon.SimpleNotificationService;
var otpmock = Environment.GetEnvironmentVariable("OTPMOCK_URL");
var config = new AmazonSimpleNotificationServiceConfig();
if (otpmock is not null) { config.ServiceURL = otpmock; config.AuthenticationRegion = "us-east-1"; }
var sns = new AmazonSimpleNotificationServiceClient(config);
// In tests, set AWS_ACCESS_KEY_ID to your otpmock API key (any secret works).use Aws\Sns\SnsClient;
$otpmock = getenv('OTPMOCK_URL');
$sns = new SnsClient(array_filter([
'region' => getenv('AWS_REGION') ?: 'us-east-1',
'version' => 'latest',
'endpoint' => $otpmock ?: null,
]));
// In tests, set AWS_ACCESS_KEY_ID to your otpmock API key (any secret works).require "aws-sdk-sns"
sns = Aws::SNS::Client.new(
region: ENV.fetch("AWS_REGION", "us-east-1"),
**(ENV["OTPMOCK_URL"] ? { endpoint: ENV["OTPMOCK_URL"] } : {})
)
# In tests, set AWS_ACCESS_KEY_ID to your otpmock API key (any secret works).cfg, err := config.LoadDefaultConfig(ctx) // in tests, AWS_ACCESS_KEY_ID = otpmock API key (any secret works)
if err != nil {
return err
}
client := sns.NewFromConfig(cfg, func(o *sns.Options) {
if base := os.Getenv("OTPMOCK_URL"); base != "" {
o.BaseEndpoint = aws.String(base)
}
})Her dil, CI'da sağlayıcının resmi SDK'sıyla (ya da başka bir adrese yönlendirilemeyen SDK'larda düz HTTP API'siyle) otpmock'a karşı sınanır.
Kimlik bilgisi. Test ortamında otpmock API anahtarınızı erişim anahtarı kimliği (access key ID) olarak kullanın. Gizli erişim anahtarı herhangi bir değer olabilir; otpmock erişim anahtarı kimliğini SigV4 Authorization başlığından okur, imzayı doğrulamaz.
otpmock neyi taklit ediyor?
| Uç nokta | Ne yapar |
|---|---|
POST / (Action=Publish, PhoneNumber, Message) | awsQuery protokolü, MessageId içeren XML yanıt |
Yanıtlar ve hatalar AWS SNS API'sinin kendi biçimindedir, bu yüzden istemci kütüphanesi onları her zamanki gibi çözümler. Yanlış anahtar ve aylık hakkın dolması da aynı hata biçimiyle döner.
Telefon numaraları
E.164 biçiminde (+15550142) gönderin, SNS de böyle bekler.
Testinizde kodu okuyun
const telefon = otp.randomPhone(); // her test için ayrı numara
const since = Date.now() - 5_000;
await page.getByRole("button", { name: "Kod gönder" }).click(); // uygulamanız AWS SNS API'sini çağırır
const { code } = await otp.waitForCode(telefon, { since });otp yardımcısı bağımlılığı olmayan tek bir dosyadır: dokümandan alın (İngilizce). Baştan sona örnekler: Playwright ve Cypress rehberleri (İngilizce).
Bilmeniz gerekenler
- Yalnızca
PhoneNumberilePublishtaklit edilir. Bir konuya (TopicArn) yayınlamakInvalidParameterdöner. - AWS Cognito'nun yerleşik SMS'ine araya girilemez. Test ortamlarında otpmock'u çağıran bir Cognito özel SMS gönderici Lambda'sı kullanın.
Sık sorulanlar
otpmock AWS SNS üzerinden gerçek SMS gönderiyor mu?
Hayır. Test ortamında uygulamanızın AWS SNS istekleri otpmock'a gider; mesaj 10 dakika saklanır ve AWS SNS ya da herhangi bir operatör ağına hiç ulaşmaz. Canlı ortamınız AWS SNS kullanmaya devam eder, çünkü otpmock yalnızca OTPMOCK_URL tanımlıyken devreye girer.
Resmi @aws-sdk/client-sns SDK'sı destekleniyor mu?
Evet. AWS SNS uç noktaları, resmi @aws-sdk/client-sns paketiyle Node.js'te uçtan uca sınanır. Adres değiştirmeye izin veren başka dillerdeki istemciler de çalışır.
otpmock hangi AWS SNS API'lerini destekliyor?
POST / (Action=Publish, PhoneNumber, Message) (awsQuery protokolü, MessageId içeren XML yanıt).
Ücretsiz plan ayda 300 mesaj içerir, kart gerekmez. Yapay zeka kodlama asistanı mı kullanıyorsunuz? otpmock.com/llms-full.txt adresini verin.
Ücretsiz API anahtarı al