Inheritance: ISmsService
コード例 #1
0
        public void CheckMessageIsSent()
        {
            var twilioWrapper = MockRepository.GenerateMock<ITwilioWrapper>();
            const string sid = "sid";
            twilioWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSent(new SmsConfirmationData("receipt", DateTime.Now, 0.04m)));

            var smsService = new SmsService { TwilioWrapper = twilioWrapper };
            smsService.CheckStatus(sid);
        }
コード例 #2
0
        public void CheckMessageIsSending()
        {
            var twilioWrapper = MockRepository.GenerateMock<ITwilioWrapper>();
            const string sid = "sid";
            twilioWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSending(sid));

            var smsService = new SmsService { TwilioWrapper = twilioWrapper };
            smsService.CheckStatus(sid);
        }
コード例 #3
0
        public void SmsUsesTwilio()
        {
            _docSession.Expect(d => d.Load<SmsProviderConfiguration>("SmsProviderConfiguration")).Return(_twilioProvider);

            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var twilioWrapper = MockRepository.GenerateMock<ITwilioWrapper>();
            var smsService = new SmsService { TwilioWrapper = twilioWrapper, RavenDocStore = _ravenDocStore };

            twilioWrapper.Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message));
            smsService.Send(messageToSend);
            twilioWrapper.VerifyAllExpectations();
        }
コード例 #4
0
        public void SmsServiceAuthenticationFailed()
        {
            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };

            var smsMessageSending = new SendSmsResponse { Cost = (float)0.06, MessageId = 123456, Error = new Error { Code = "AUTH_FAILED", Description = "we don't know who you are!" } };
            smsTechWrapper
                .Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message))
                .Return(smsMessageSending);

            Assert.That(() => smsService.Send(messageToSend), Throws.Exception.TypeOf<SmsTechAuthenticationFailed>().With.Message.EqualTo(smsMessageSending.Error.Description));
        }
コード例 #5
0
        public void SmsServiceOutOfMoney()
        {
            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };

            var smsMessageSending = new SendSmsResponse { Cost = (float)0.06, MessageId = 123456, Error = new Error { Code = "LEDGER_ERROR", Description = "can't send a message to those dudes!" } };
            const string accountIsCurrentlyOutOfMoney = "Could not send message - account is currently out of money";
            smsTechWrapper
                .Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message))
                .Return(smsMessageSending);

            Assert.That(() => smsService.Send(messageToSend), Throws.Exception.TypeOf<AccountOutOfMoneyException>().With.Message.EqualTo(accountIsCurrentlyOutOfMoney));
        }
コード例 #6
0
        public void CheckMessageIsPending()
        {
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            const string sid = "sid";
            smsTechWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSentResponse {  Recipients = new List<RecipientForSms> { new RecipientForSms { DeliveryStatus = "pending" }}});

            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };
            var smsStatus = smsService.CheckStatus(sid);

            Assert.That(smsStatus, Is.TypeOf(typeof(SmsQueued)));
            Assert.That(smsStatus.Sid, Is.EqualTo(sid));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #7
0
        public void CheckMessageIsFailed_SoftBounce()
        {
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            const string sid = "sid";
            smsTechWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSentResponse { Recipients = new List<RecipientForSms> { new RecipientForSms { DeliveryStatus = "soft-bounce" } } });

            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };
            var smsStatus = smsService.CheckStatus(sid);

            Assert.That(smsStatus, Is.TypeOf(typeof(SmsFailed)));
            var smsFailed = smsStatus as SmsFailed;
            Assert.That(smsStatus.Sid, Is.EqualTo(sid));
            Assert.That(smsFailed.Code, Is.EqualTo("soft-bounce"));
            Assert.That(smsFailed.Message, Is.EqualTo("The message timed out after 72 hrs, either the recipient was out of range, their phone was off for longer than 72 hrs or the message was unable to be delivered due to a network outage or other connectivity issue."));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #8
0
        public void CheckMessageIsFailed_HardBounce()
        {
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            const string sid = "sid";
            smsTechWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSentResponse { Recipients = new List<RecipientForSms> { new RecipientForSms { DeliveryStatus = "hard-bounce" } } });

            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };
            var smsStatus = smsService.CheckStatus(sid);

            Assert.That(smsStatus, Is.TypeOf(typeof(SmsFailed)));
            var smsFailed = smsStatus as SmsFailed;
            Assert.That(smsStatus.Sid, Is.EqualTo(sid));
            Assert.That(smsFailed.Code, Is.EqualTo("hard-bounce"));
            Assert.That(smsFailed.Message, Is.EqualTo("The number is invalid or disconnected."));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #9
0
        public void SmsServiceSending()
        {
            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };

            var smsMessageSending = new SendSmsResponse {Cost = (float) 0.06, MessageId = 123456, Error = new Error { Code = "SUCCESS"} };
            smsTechWrapper
                .Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message))
                .Return(smsMessageSending);

            var response = smsService.Send(messageToSend);

            Assert.That(response, Is.TypeOf(typeof (SmsSending)));
            Assert.That(response.Sid, Is.EqualTo(smsMessageSending.MessageId.ToString()));
            var smsSending = response as SmsSending;
            Assert.That(smsSending.Price, Is.EqualTo(smsMessageSending.Cost));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #10
0
        public void SmsServiceInvalidNumber()
        {
            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };

            var smsMessageSending = new SendSmsResponse { Cost = (float)0.06, MessageId = 123456, Error = new Error { Code = "RECIPIENTS_ERROR", Description = "can't send a message to those dudes!"} };
            smsTechWrapper
                .Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message))
                .Return(smsMessageSending);

            var response = smsService.Send(messageToSend);

            Assert.That(response, Is.TypeOf(typeof(SmsFailed)));
            Assert.That(response.Sid, Is.EqualTo(smsMessageSending.MessageId.ToString()));
            var smsFailed = response as SmsFailed;
            Assert.That(smsFailed.Code, Is.EqualTo(smsMessageSending.Error.Code));
            Assert.That(smsFailed.Message, Is.EqualTo(smsMessageSending.Error.Description));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #11
0
        public void CheckMessageIsSent()
        {
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            const string sid = "123";
            var sendAt = DateTime.Now;
            smsTechWrapper
                .Expect(t => t.CheckMessage(sid))
                .Return(new SmsSentResponse
                    {
                        Recipients = new List<RecipientForSms> { new RecipientForSms { DeliveryStatus = "delivered" } },
                        Message = new SmsResponseBase { SendAt = sendAt, MessageId = Convert.ToInt32(sid) }
                    });

            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };
            var smsStatus = smsService.CheckStatus(sid);

            Assert.That(smsStatus, Is.TypeOf(typeof(SmsSent)));
            Assert.That(smsStatus.Sid, Is.EqualTo(sid));
            var smsSent = smsStatus as SmsSent;
            Assert.That(smsSent.SentAtUtc, Is.EqualTo(sendAt));
            smsTechWrapper.VerifyAllExpectations();
        }
コード例 #12
0
        public void SmsServiceSending_WithoutERRORCode_ThrowsException()
        {
            var messageToSend = new SendOneMessageNow { SmsData = new SmsData("mobile", "message") };
            var smsTechWrapper = MockRepository.GenerateMock<ISmsTechWrapper>();
            var smsService = new SmsService { SmsTechWrapper = smsTechWrapper };

            var smsMessageSending = new SendSmsResponse {Cost = (float) 0.06, MessageId = 123456, Error = new Error { Code = string.Empty } };
            smsTechWrapper
                .Expect(t => t.SendSmsMessage(messageToSend.SmsData.Mobile, messageToSend.SmsData.Message))
                .Return(smsMessageSending);

            Assert.That(() => smsService.Send(messageToSend), Throws.ArgumentException.With.Message.Contains("Error code expected"));

            smsTechWrapper.VerifyAllExpectations();
        }