public void ExecuteAsync_IfMessageIsFunctionIdIsRegistered_GetsETag(BlobType expectedBlobType) { // Arrange string expectedContainerName = "container"; string expectedBlobName = TestBlobName; string functionId = "FunctionId"; Mock <IBlobETagReader> mock = new Mock <IBlobETagReader>(MockBehavior.Strict); mock.Setup(r => r.GetETagAsync(It.Is <IStorageBlob>(b => b.BlobType == (StorageBlobType)expectedBlobType && b.Name == expectedBlobName && b.Container.Name == expectedContainerName), It.IsAny <CancellationToken>())) .Returns(Task.FromResult("ETag")) .Verifiable(); IBlobETagReader eTagReader = mock.Object; BlobQueueTriggerExecutor product = CreateProductUnderTest(eTagReader); product.Register(functionId, CreateDummyTriggeredFunctionExecutor()); BlobTriggerMessage triggerMessage = new BlobTriggerMessage { FunctionId = functionId, BlobType = (StorageBlobType)expectedBlobType, ContainerName = expectedContainerName, BlobName = expectedBlobName, ETag = "OriginalETag" }; IStorageQueueMessage message = CreateMessage(triggerMessage); // Act Task task = product.ExecuteAsync(message, CancellationToken.None); // Assert task.WaitUntilCompleted(); mock.Verify(); }
public void BlobTrigger_IfBindingAlwaysFails_MovesToPoisonQueue() { // Arrange IStorageAccount account = CreateFakeStorageAccount(); IStorageBlobContainer container = CreateContainer(account, ContainerName); IStorageBlockBlob blob = container.GetBlockBlobReference(BlobName); CloudBlockBlob expectedBlob = blob.SdkObject; blob.UploadText("ignore"); // Act string result = RunTrigger <string>(account, typeof(PoisonBlobProgram), (s) => PoisonBlobProgram.TaskSource = s, new string[] { typeof(PoisonBlobProgram).FullName + ".PutInPoisonQueue" }); // Assert BlobTriggerMessage message = JsonConvert.DeserializeObject <BlobTriggerMessage>(result); Assert.NotNull(message); Assert.Equal(typeof(PoisonBlobProgram).FullName + ".PutInPoisonQueue", message.FunctionId); Assert.Equal(StorageBlobType.BlockBlob, message.BlobType); Assert.Equal(ContainerName, message.ContainerName); Assert.Equal(BlobName, message.BlobName); Assert.NotEmpty(message.ETag); }
private async Task <HttpResponseMessage> ProcessEventsAsync(JArray events, string functionName, CancellationToken cancellationToken) { foreach (JObject jo in events) { BlobTriggerMessage blobTriggerMessage = GetBlobTriggerMessage(jo, functionName); await _blobTriggerQueueWriter.EnqueueAsync(blobTriggerMessage, cancellationToken).ConfigureAwait(false); } return(new HttpResponseMessage(HttpStatusCode.Accepted)); }
private static QueueMessage CreateMessage(string functionId, string eTag) { BlobTriggerMessage triggerMessage = new BlobTriggerMessage { FunctionId = functionId, // BlobType = StorageBlobType.BlockBlob, $$$ ContainerName = TestContainerName, BlobName = TestBlobName, ETag = eTag }; return(CreateMessage(triggerMessage)); }
private static IStorageQueueMessage CreateMessage(string functionId, string eTag) { BlobTriggerMessage triggerMessage = new BlobTriggerMessage { FunctionId = functionId, BlobType = StorageBlobType.BlockBlob, ContainerName = "container", BlobName = "blob", ETag = eTag }; return(CreateMessage(triggerMessage)); }
public void CanSerializeBlobTriggerMessage(string containerName, string blobName, BlobType blobType, string etag, string functionId, string expectedMessage) { var message = new BlobTriggerMessage() { ContainerName = containerName, BlobName = blobName, BlobType = blobType, ETag = etag, FunctionId = functionId, }; var serializedMessage = JsonConvert.SerializeObject(message, Formatting.None); Assert.AreEqual(expectedMessage, serializedMessage); }
private static QueueMessage CreateMessage(BlobTriggerMessage triggerMessage) { return(CreateMessage(JsonConvert.SerializeObject(triggerMessage))); }