Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
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();
        }