示例#1
0
        public async Task When_UserHasEnoughSmsLimit_SmsEventIsPushed()
        {
            using var testServer = await CreateWithUserAsync();

            var user = await testServer.GetCurrentUserInSession();

            var client = testServer.CreateClient();
            var addSmsCreditsCommand = new AddSmsCreditsCommand(Guid.NewGuid(), user.Id, 2, false);
            await client.PostAsync($"{ApiPath}/add-credits", addSmsCreditsCommand.ToJsonContent());

            var messages = new List <SmsMessageModel>();

            for (var i = 0; i < 2; i++)
            {
                messages.Add(new SmsMessageModel("5544567788", "TEST", "TEST"));
            }

            var command  = new SendSmsCommand(Guid.NewGuid(), messages);
            var response = await client.PostAsync(ApiPath, command.ToJsonContent());

            response.EnsureSuccessStatusCode();

            var @event = Consumer.Instance.GetFirst <ISendSmsRequestReceived>();

            @event.UserId.Should().NotBe(default);
示例#2
0
        public async Task When_UserHasEnoughSmsLimit_SmsEventIsPushed()
        {
            using (var testServer = await CreateWithUserAsync())
            {
                //Add Some SMS Credits
                var dbContext = testServer.Host.Services.GetService(typeof(ApplicationDbContext))
                                as ApplicationDbContext;
                var subjectId = (testServer.Host.Services
                                 .GetRequiredService(typeof(Claim)) as Claim).Value;

                var user = await dbContext.Users.FirstAsync(u => u.SubjectId == subjectId);

                user.AddSmsBalance(2);
                await dbContext.SaveChangesAsync();

                var messages = new List <SmsMessageModel>();

                for (var i = 0; i < 2; i++)
                {
                    messages.Add(new SmsMessageModel("5544567788", "TEST", "TEST"));
                }

                var command  = new SendSmsCommand(Guid.NewGuid(), messages);
                var response = await testServer.CreateClient().PostAsync(ApiPath, command.ToJsonContent());

                response.EnsureSuccessStatusCode();

                var @event = Consumer.Instance.GetFirst <ISendSmsRequestReceived>();
                @event.UserId.Should().NotBe(default);
示例#3
0
        public async Task When_UsersLimitNotEnoughToSendSms_InsufficientFundError_Should_BeReturned()
        {
            using var testServer = await CreateWithUserAsync();

            var client   = testServer.CreateClient();
            var messages = new List <SmsMessageModel>();

            for (var i = 0; i < 100; i++)
            {
                messages.Add(new SmsMessageModel("5544567788", "TEST", "TEST"));
            }

            var command  = new SendSmsCommand(Guid.NewGuid(), messages);
            var response = await client.PostAsync(ApiPath, command.ToJsonContent());

            await response.Should().BeBadRequestAsync(ErrorCodes.InsufficientFunds);
        }