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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
 public static HuskyServiceHub AddAliyunSms(this HuskyServiceHub husky, AliyunSmsOptions options)
 {
     husky.Services.AddSingleton <ISmsSender>(new AliyunSmsSender(options));
     return(husky);
 }