public async Task SmsReturnsFalseIfValidButBadCredentials()
        {
            var lookupsMock      = new Mock <ITwilioLookupsApi>(MockBehavior.Strict);
            var lookupsException =
                await TwilioTests.CreateException($"https://lookups.twilio.com/v1/PhoneNumbers/{_customerNumber}?Type=carrier", HttpMethod.Get, HttpStatusCode.Unauthorized);

            lookupsMock.Setup(api => api.NumberInfo(_customerNumber, It.IsAny <string>(), "carrier"))
            .ThrowsAsync(lookupsException);

            var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict);

            var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _systemNumber);

            var connectFunction = new SmsWorkflow(twilioApi);
            var result          = await connectFunction.Process(ConnectEventWithMessageEndingWithPhoneParameter, _context);

            Assert.Single(result);
            var lambdaResult = result["LambdaResult"];

            Assert.NotNull(lambdaResult);
            Assert.True(lambdaResult.Type == JTokenType.Boolean);
            Assert.False(lambdaResult.Value <bool>());

            lookupsMock.VerifyAll();
        }
        public async Task LookupReturnsEmptyNumberTypeIfValidButBadCredentials()
        {
            var lookupsMock      = new Mock <ITwilioLookupsApi>(MockBehavior.Strict);
            var lookupsException =
                await TwilioTests.CreateException($"https://lookups.twilio.com/v1/PhoneNumbers/{_customerNumber}?Type=carrier", HttpMethod.Get, HttpStatusCode.Unauthorized);

            lookupsMock.Setup(api => api.NumberInfo(_customerNumber, It.IsAny <string>(), "carrier"))
            .ThrowsAsync(lookupsException);

            var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict);

            var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _smsNumber);

            var connectFunction = new LookupWorkflow(twilioApi);
            var result          = await connectFunction.Process(_connectEvent, _context);

            Assert.Equal(2, result.Count);

            var lambdaResult = result["LambdaResult"];

            Assert.NotNull(lambdaResult);
            Assert.True(lambdaResult.Type == JTokenType.Boolean);
            Assert.True(lambdaResult.Value <bool>());

            var numberType = result["NumberType"];

            Assert.NotNull(numberType);
            Assert.True(numberType.Type == JTokenType.String);
            var typeValue = (string)numberType;

            Assert.NotNull(typeValue);
            Assert.Equal(string.Empty, typeValue);
        }