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 string CreateAblobAndUploadToContainer(IStorageBlobContainer container, string blobContent = "test") { string blobName = Path.GetRandomFileName().Replace(".", ""); IStorageBlockBlob blob = container.GetBlockBlobReference(blobName); container.CreateIfNotExists(); blob.UploadText(blobContent); return(blobName); }
public void BlobTrigger_IfBoundToCloudBlob_Binds() { // Arrange IStorageAccount account = CreateFakeStorageAccount(); IStorageBlobContainer container = CreateContainer(account, ContainerName); IStorageBlockBlob blob = container.GetBlockBlobReference(BlobName); CloudBlockBlob expectedBlob = blob.SdkObject; blob.UploadText("ignore"); // Act ICloudBlob result = RunTrigger <ICloudBlob>(account, typeof(BindToCloudBlobProgram), (s) => BindToCloudBlobProgram.TaskSource = s); // Assert Assert.Equal(expectedBlob.Uri, result.Uri); }
public void BlobTriggerToQueueTriggerToBlob_WritesFinalBlob() { // Arrange IStorageAccount account = CreateFakeStorageAccount(); IStorageBlobContainer container = CreateContainer(account, ContainerName); IStorageBlockBlob inputBlob = container.GetBlockBlobReference(BlobName); inputBlob.UploadText("15"); // Act RunTrigger <object>(account, typeof(BlobTriggerToQueueTriggerToBlobProgram), (s) => BlobTriggerToQueueTriggerToBlobProgram.TaskSource = s); // Assert IStorageBlockBlob outputBlob = container.GetBlockBlobReference(OutputBlobName); string content = outputBlob.DownloadText(); Assert.Equal("16", content); }
public void BlobTrigger_IfWritesToSecondBlobTrigger_TriggersOutputQuickly() { // Arrange IStorageAccount account = CreateFakeStorageAccount(); IStorageBlobContainer container = CreateContainer(account, ContainerName); IStorageBlockBlob inputBlob = container.GetBlockBlobReference(BlobName); inputBlob.UploadText("abc"); // Act RunTrigger <object>(account, typeof(BlobTriggerToBlobTriggerProgram), (s) => BlobTriggerToBlobTriggerProgram.TaskSource = s); // Assert IStorageBlockBlob outputBlob = container.GetBlockBlobReference(OutputBlobName); string content = outputBlob.DownloadText(); Assert.Equal("*abc*", content); }
public void TestBlobListener() { const string containerName = "container"; IStorageAccount account = CreateFakeStorageAccount(); IStorageBlobContainer container = account.CreateBlobClient().GetContainerReference(containerName); IBlobListenerStrategy product = new ScanContainersStrategy(); LambdaBlobTriggerExecutor executor = new LambdaBlobTriggerExecutor(); product.Register(container, executor); product.Start(); executor.ExecuteLambda = (_) => { throw new InvalidOperationException("shouldn't be any blobs in the container"); }; product.Execute(); const string expectedBlobName = "foo1.csv"; IStorageBlockBlob blob = container.GetBlockBlobReference(expectedBlobName); container.CreateIfNotExists(); blob.UploadText("ignore"); int count = 0; executor.ExecuteLambda = (b) => { count++; Assert.Equal(expectedBlobName, b.Name); return(true); }; product.Execute(); Assert.Equal(1, count); // Now run again; shouldn't show up. executor.ExecuteLambda = (_) => { throw new InvalidOperationException("shouldn't retrigger the same blob"); }; product.Execute(); }