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 static HuskyServiceHub AddAliyunSms(this HuskyServiceHub husky, Action <AliyunSmsOptions> setupAction) { var options = new AliyunSmsOptions(); setupAction(options); husky.Services.AddSingleton <ISmsSender>(new AliyunSmsSender(options)); return(husky); }
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(); }
public static HuskyServiceHub AddAliyunSms(this HuskyServiceHub husky, AliyunSmsOptions options) { husky.Services.AddSingleton <ISmsSender>(new AliyunSmsSender(options)); return(husky); }