private static (AliyunSmsSender, StubHttpClient) CreateSmsSender() { var options = new AliyunSmsOptions() { AccessKeySecret = "dummy-secret", AccountKeyId = "dummy-key", SmsServiceSignName = "dotnetclub.net", SmsServiceTemplateCode = "SA873dK" }; var optionsMock = new Mock <IOptions <AliyunSmsOptions> >(); optionsMock.SetupGet(o => o.Value).Returns(options); var client = Services.StubHttpClient.Create().When(req => { var response = new AliyunSmsResponse() { RequestId = Guid.NewGuid().ToString(), Code = "OK", Message = "Sms Sent", BizId = Guid.NewGuid().ToString() }; return(JsonResponse(response)); }); var smsSender = new AliyunSmsSender(optionsMock.Object, client, new SystemClock()); return(smsSender, client); }
public void AliyunSmsTest() { var sender = new AliyunSmsSender( GetService <IOptions <AliyunSmsOptions> >(), GetService <ISmsLimit>(), GetService <IOptionsMonitor <SmsOptions> >() ); Should.Throw <SmsTemplateException>(async() => await sender.SendAsync(new[] { _testPhone1 }, "none")); Should.Throw <ArgumentException>(async() => await sender.SendAsync(new[] { _testPhone1 }, "Captcha")); Should.Throw <SmsTemplateException>(async() => await sender.SendAsync(new[] { _testPhone1 }, "Notify")); //sender.SendAsync(_testPhone1, "Captcha", "123123").GetAwaiter().GetResult(); }
public async Task <IActionResult> Index() { var id = _config["Ali:accessKeyId"]; var key = _config["Ali:accessKeySecret"]; var smsTempate = _config["Ali:SMS_Template"]; var signName = _config["Ali:signature"]; var mobile = _config["TestMobile"]; var s = new AliyunSmsSender(id, key); var ret = await s.SendAsync(mobile /*"13750467409"*/, signName /* "BTC官网"*/, smsTempate /*"SMS_152856017"*/, new Dictionary <string, string>() { ["code"] = "569822" }); return(View()); }
public async Task SendAsyncTestAsync() { if (string.IsNullOrEmpty(_settings.AccessKeySecret)) { return; } var sendTo = "17751283521"; var sender = new AliyunSmsSender(_settings); var arg = new SmsBody { Parameters = new Dictionary <string, string> { { "code", new Random().Next(0, 1000000).ToString("D6") } } }; var result = await sender.SendAsync(arg, sendTo); Assert.IsTrue(result.Ok); }
public async Task SendCodeThroughAliyunSmsTest() { var settings = new AliyunSmsOptions { DefaultSignName = "星翼软件", DefaultTemplateCode = "SMS_170155854", AccessKeyId = "", AccessKeySecret = "" }; if (string.IsNullOrEmpty(settings.AccessKeySecret)) { return; } using var testDb = new DbContextOptionsBuilder <TwoFactorDbContext>().UseInMemoryDatabase("UnitTest").CreateDbContext(); var principal = PrincipalUser.Personate(1, "TestUser", null); var smsSender = new AliyunSmsSender(settings); var twoFactorManager = new TwoFactorManager(testDb, principal, smsSender, null); var sendTo = "17751283521"; var sentResult = await twoFactorManager.SendCodeThroughSmsAsync(sendTo); var row = testDb.TwoFactorCodes.FirstOrDefault(); Assert.IsTrue(sentResult.Ok); Assert.IsNotNull(row); Assert.AreEqual(sendTo, row.SentTo); Assert.IsFalse(row.IsUsed); var verifyResult = await twoFactorManager.VerifyCodeAsync(sendTo, row.Code, true); row = testDb.TwoFactorCodes.FirstOrDefault(); Assert.IsTrue(verifyResult.Ok); Assert.AreEqual(sendTo, row.SentTo); Assert.IsTrue(row.IsUsed); testDb.Database.EnsureDeleted(); }