Beispiel #1
0
        /// <summary>
        /// Initializes expected storage client exceptions.
        /// </summary>
        /// <param name="exceptions">Dictionary of expected exceptions.</param>
        public void InitializeStorageClientExceptions(Dictionary <string, StorageClientException> exceptions)
        {
            AzureBlobStorageClientMock storageClient = TranscribeCallHttpTrigger.Container.GetService <IStorageClient>() as AzureBlobStorageClientMock;

            foreach (KeyValuePair <string, StorageClientException> ex in exceptions)
            {
                storageClient.RegisterExpectedException(ex.Key, ex.Value);
            }
        }
Beispiel #2
0
        public void TranscribeCallHttpTriggerSuccess()
        {
            InitializeSecrets();

            string expectedCallSid              = "CA10000000000000000000000000000001";
            string expectedRecordingUri         = "https://fakestorage/recordings/A012345678.wav";
            string expectedStorageContainerName = _config[ExpectedStorageContainerNameAppSettingName];
            string expectedRegion     = _config[ExpectedApiRegionAppSettingName];
            string expectedTranscript = "your next Master hearing date January 19th 2018 at 3 p.m. for Gymboree";

            AzureKeyVaultSecretStoreMock secretStore = TranscribeCallHttpTrigger.Container.GetService <ISecretStore>() as AzureKeyVaultSecretStoreMock;

            string storageAccessConnectionString = _config[StorageAccessConnectionStringAppSettingName];

            Secret storageAccessKey = secretStore.GetSecretAsync(_config[StorageAccessKeySecretNameAppSettingName], _config[AuthorityAppSettingName]).Result;

            Secret fullStorageAccessConnectionString = Utils.GetFullStorageConnectionString(storageAccessConnectionString, storageAccessKey);

            AzureBlobStorageClientMock storageClient = TranscribeCallHttpTrigger.Container.GetService <IStorageClient>() as AzureBlobStorageClientMock;

            storageClient.RegisterExpectedRequestMessage(expectedRecordingUri, fullStorageAccessConnectionString.Value, _config[ExpectedStorageContainerNameAppSettingName], false);

            AzureTranscriberMock transcriber = TranscribeCallHttpTrigger.Container.GetService <ITranscriber>() as AzureTranscriberMock;

            transcriber.RegisterExpectedRequestMessage(expectedRecordingUri, ExpectedApiKey, expectedRegion);
            transcriber.RegisterExpectedResponseMessage(expectedRecordingUri, expectedTranscript);

            HttpRequest request = CreateHttpPostRequest(expectedCallSid, expectedRecordingUri);

            ExecutionContext context = new ExecutionContext()
            {
                FunctionAppDirectory = Directory.GetCurrentDirectory(),
            };

            IActionResult result = TranscribeCallHttpTrigger.Run(request, Log, context).Result;

            Assert.IsInstanceOfType(result, typeof(OkObjectResult));

            OkObjectResult okResult = (OkObjectResult)result;

            Assert.AreEqual(200, okResult.StatusCode);
            Assert.IsInstanceOfType(okResult.Value, typeof(TranscribeCallResponse));

            TranscribeCallResponse response = (TranscribeCallResponse)okResult.Value;

            Assert.AreEqual(expectedCallSid, response.CallSid);
            Assert.AreEqual(expectedTranscript, response.Text);

            Assert.AreEqual((int)CommonStatusCode.Ok, response.StatusCode);
            Assert.AreEqual(Enum.GetName(typeof(CommonStatusCode), CommonStatusCode.Ok), response.StatusDesc);

            Assert.IsFalse(response.HasError);
            Assert.AreEqual(0, response.ErrorCode);
            Assert.IsNull(response.ErrorDetails);
        }
Beispiel #3
0
        public void PullRecordingHttpTriggerRunStorageClientException()
        {
            InitializeWithNoTwilioMock();
            InitializeSecrets();

            string expectedInputId = "A012345678"; // Example pulled from https://citizenpath.com/faq/find-alien-registration-number/
            string expectedCallSid = "CA10000000000000000000000000000001";
            string recordingSid    = "RE10000000000000000000000000000001";
            string recordingUri    = $"/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Recordings/{recordingSid}.json";
            string expectedStorageContainerName = _config[ExpectedStorageContainerNameAppSettingName];

            string expectedResponseContent = TemplateManager.LoadWithComposites(
                RecordingResponseTemplatePath,
                RecordingCompositesKey,
                RecordingCompositeTemplatePath,
                new Dictionary <string, string>()
            {
                { "pageSize", "2" },
            },
                new List <Dictionary <string, string> >()
            {
                new Dictionary <string, string>()
                {
                    { "callSid", expectedCallSid },
                    { "recordingSid", recordingSid },
                    { "recordingUri", recordingUri },
                },
            });

            HttpClientMock httpClient = PullRecordingHttpTrigger.Container.GetService <IHttpClientWrapper>() as HttpClientMock;

            HttpResponseMessage expectedResponse = TestHelper.CreateHttpResponseMessage(HttpStatusCode.OK, expectedResponseContent);

            httpClient.MessageHandler.RegisterExpectedRecordingResponse(expectedCallSid, "recordings", expectedResponse);

            httpClient.RegisterExpectedRequestMessage($"{TwilioBaseUrl}{recordingUri.Replace(".json", string.Empty)}", null);

            string expectedDestinationPathPrefix = $"{expectedInputId}/file_"; // We will just check to make sure the remaining is a datetime

            AzureBlobStorageClientMock blobClient = PullRecordingHttpTrigger.Container.GetService <IStorageClient>() as AzureBlobStorageClientMock;

            InitializeStorageClientExceptions(new Dictionary <string, StorageClientException>()
            {
                { expectedDestinationPathPrefix, new StorageClientException("TestException", null) },
            });

            HttpRequest request = CreateHttpPostRequest(expectedInputId, expectedCallSid);

            ExecutionContext context = new ExecutionContext()
            {
                FunctionAppDirectory = Directory.GetCurrentDirectory(),
            };

            IActionResult result = PullRecordingHttpTrigger.Run(request, Log, context).Result;

            Assert.IsInstanceOfType(result, typeof(OkObjectResult));

            OkObjectResult okResult = (OkObjectResult)result;

            Assert.AreEqual(200, okResult.StatusCode);
            Assert.IsInstanceOfType(okResult.Value, typeof(PullRecordingResponse));

            PullRecordingResponse response = (PullRecordingResponse)okResult.Value;

            Assert.AreEqual(expectedCallSid, response.CallSid);
            Assert.IsNull(response.RecordingUri);
            Assert.AreEqual(0, response.RecordingLength);
            Assert.IsNull(response.FullRecordingUrl);

            Assert.AreEqual((int)CommonStatusCode.Error, response.StatusCode);
            Assert.AreEqual(Enum.GetName(typeof(CommonStatusCode), CommonStatusCode.Error), response.StatusDesc);

            Assert.IsTrue(response.HasError);
            Assert.AreEqual((int)CommonErrorCode.StorageClientGenericFailure, response.ErrorCode);
            Assert.AreEqual(CommonErrorMessage.StorageClientGenericFailureMessage, response.ErrorDetails);
        }