public void GetBlobNameTest() { // Arrange string iotHub = "foo.azure-devices.net"; string deviceId = "abcd"; string id = "pqr"; string extension = "gz"; var regex = new Regex(BlobNameRegexPattern); var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, Mock.Of <IAzureBlobUploader>()); // Act string blobName = azureBlobLogsUploader.GetBlobName(id, LogsContentEncoding.Gzip, LogsContentType.Json); // Assert Assert.NotNull(blobName); Match match = regex.Match(blobName); Assert.True(match.Success); string receivedIotHub = match.Groups["iothub"].Value; string receivedDeviceId = match.Groups["deviceid"].Value; string receivedId = match.Groups["id"].Value; string receivedTimestamp = match.Groups["timestamp"].Value; string receivedExtension = match.Groups["extension"].Value; Assert.Equal(id, receivedId); Assert.Equal(iotHub, receivedIotHub); Assert.Equal(deviceId, receivedDeviceId); Assert.Equal(extension, receivedExtension); Assert.True(DateTime.UtcNow - DateTime.ParseExact(receivedTimestamp, "yyyy-MM-dd--HH-mm-ss", CultureInfo.InvariantCulture) < TimeSpan.FromSeconds(10)); }
public async Task GetUploaderCallbackTest() { // Arrange string iotHub = "foo.azure-devices.net"; string deviceId = "abcd"; string id = "pqr"; string sasUri = @"http://testuri/"; var regex = new Regex(BlobNameRegexPattern); string receivedBlobName = null; Uri receivedSasUri = null; var receivedPayload = new List <byte>(); byte[] payload1 = Encoding.UTF8.GetBytes("Test payload string"); byte[] payload2 = Encoding.UTF8.GetBytes("Second interesting payload"); var azureAppendBlob = new Mock <IAzureAppendBlob>(); azureAppendBlob.Setup(a => a.Name) .Returns(() => receivedBlobName); azureAppendBlob.Setup(a => a.AppendByteArray(It.IsAny <ArraySegment <byte> >())) .Callback <ArraySegment <byte> >(b => receivedPayload.AddRange(b.ToArray())) .Returns(Task.CompletedTask); var azureBlobUploader = new Mock <IAzureBlobUploader>(); azureBlobUploader.Setup(a => a.GetAppendBlob(It.IsAny <Uri>(), It.IsAny <string>(), It.IsAny <Option <string> >(), It.IsAny <Option <string> >())) .Callback <Uri, string, Option <string>, Option <string> >((u, b, _, __) => { receivedSasUri = u; receivedBlobName = b; }) .ReturnsAsync(azureAppendBlob.Object); var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, azureBlobUploader.Object); // Act Func <ArraySegment <byte>, Task> callback = await azureBlobLogsUploader.GetUploaderCallback(sasUri, id, LogsContentEncoding.Gzip, LogsContentType.Json); Assert.NotNull(callback); await callback.Invoke(new ArraySegment <byte>(payload1)); await callback.Invoke(new ArraySegment <byte>(payload2)); // Assert Assert.NotNull(receivedBlobName); Match match = regex.Match(receivedBlobName); Assert.True(match.Success); Assert.NotNull(receivedSasUri); Assert.Equal(sasUri, receivedSasUri.ToString()); Assert.NotNull(receivedPayload); Assert.Equal(payload1.Concat(payload2), receivedPayload); }
public async Task UploadTest() { // Arrange string iotHub = "foo.azure-devices.net"; string deviceId = "abcd"; string id = "pqr"; string sasUri = @"http://testuri/"; var regex = new Regex(BlobNameRegexPattern); string receivedBlobName = null; Uri receivedSasUri = null; byte[] receivedPayload = null; byte[] payload = Encoding.UTF8.GetBytes("Test payload string"); var azureBlob = new Mock <IAzureBlob>(); azureBlob.Setup(a => a.BlobProperties) .Returns(new BlobProperties()); azureBlob.Setup(a => a.Name) .Returns(() => receivedBlobName); azureBlob.Setup(a => a.UploadFromByteArrayAsync(payload)) .Callback <byte[]>(b => receivedPayload = b) .Returns(Task.CompletedTask); var azureBlobUploader = new Mock <IAzureBlobUploader>(); azureBlobUploader.Setup(a => a.GetBlob(It.IsAny <Uri>(), It.IsAny <string>())) .Callback <Uri, string>((u, b) => { receivedSasUri = u; receivedBlobName = b; }) .Returns(azureBlob.Object); var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, azureBlobUploader.Object); // Act await azureBlobLogsUploader.Upload(sasUri, id, payload, LogsContentEncoding.Gzip, LogsContentType.Json); // Assert Assert.NotNull(receivedBlobName); Match match = regex.Match(receivedBlobName); Assert.True(match.Success); Assert.NotNull(receivedSasUri); Assert.Equal(sasUri, receivedSasUri.ToString()); Assert.NotNull(receivedPayload); Assert.Equal(payload, receivedPayload); }
public void GetExtensionTest(LogsContentEncoding contentEncoding, LogsContentType contentType, string expectedExtension) { Assert.Equal(expectedExtension, AzureBlobLogsUploader.GetExtension(contentEncoding, contentType)); }