@@ -150,10 +150,10 @@ public async Task GetBlobAsync()
150150 #region Upload
151151
152152 [ Fact ]
153- public async Task WhenUploadAsyncIsCalled ( )
153+ public async Task UploadFileAsStreamSpecifyingFileNameAsync ( )
154154 {
155- const string uploadContent = $ "test { nameof ( WhenUploadAsyncIsCalled ) } ";
156- const string fileName = $ "{ nameof ( WhenUploadAsyncIsCalled ) } .txt";
155+ const string uploadContent = $ "test { nameof ( UploadFileAsStreamSpecifyingFileNameAsync ) } ";
156+ const string fileName = $ "{ nameof ( UploadFileAsStreamSpecifyingFileNameAsync ) } .txt";
157157
158158 //Forming file to upload
159159 var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
@@ -168,6 +168,218 @@ public async Task WhenUploadAsyncIsCalled()
168168 //Upload file as stream
169169 await Storage . UploadStreamAsync ( fileName , stream ) ;
170170
171+ //Download the file
172+ var downloadedContent = await DownloadAsync ( fileName ) ;
173+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
174+
175+ //Delete file
176+ await DeleteFileAsync ( fileName ) ;
177+ }
178+
179+ [ Fact ]
180+ public async Task UploadFileAsStreamSpecifyingBlobMetadataAsync ( )
181+ {
182+ const string uploadContent = $ "test { nameof ( UploadFileAsStreamSpecifyingFileNameAsync ) } ";
183+ var blobMetadata = new BlobMetadata
184+ {
185+ Name = $ "{ nameof ( UploadFileAsStreamSpecifyingBlobMetadataAsync ) } .txt"
186+ } ;
187+
188+ //Forming file to upload
189+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
190+ var stream = new MemoryStream ( byteArray ) ;
191+
192+ //Check is exist file
193+ if ( await Storage . ExistsAsync ( blobMetadata ) )
194+ {
195+ await Storage . DeleteAsync ( blobMetadata ) ;
196+ }
197+
198+ //Upload file as stream
199+ await Storage . UploadStreamAsync ( blobMetadata , stream ) ;
200+
201+ //Download the file
202+ var downloadedContent = await DownloadAsync ( blobMetadata . Name ) ;
203+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
204+
205+ //Delete file
206+ await DeleteFileAsync ( blobMetadata . Name ) ;
207+ }
208+
209+ [ Fact ]
210+ public async Task UploadFileAsTextSpecifyingFileNameAsync ( )
211+ {
212+ const string uploadContent = $ "test { nameof ( UploadFileAsTextSpecifyingFileNameAsync ) } ";
213+ const string fileName = $ "{ nameof ( UploadFileAsTextSpecifyingFileNameAsync ) } .txt";
214+
215+ //Forming file to upload
216+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
217+ var stream = new MemoryStream ( byteArray ) ;
218+
219+ //Check is exist file
220+ if ( await Storage . ExistsAsync ( fileName ) )
221+ {
222+ await Storage . DeleteAsync ( fileName ) ;
223+ }
224+
225+ //Upload file as text
226+ await Storage . UploadAsync ( fileName , uploadContent ) ;
227+
228+ //Download the file
229+ var downloadedContent = await DownloadAsync ( fileName ) ;
230+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
231+
232+ //Delete file
233+ await DeleteFileAsync ( fileName ) ;
234+ }
235+
236+ [ Fact ]
237+ public async Task UploadFileAsTextSpecifyingBlobMetadataAsync ( )
238+ {
239+ const string uploadContent = $ "test { nameof ( UploadFileAsTextSpecifyingBlobMetadataAsync ) } ";
240+ var blobMetadata = new BlobMetadata
241+ {
242+ Name = $ "{ nameof ( UploadFileAsTextSpecifyingBlobMetadataAsync ) } .txt"
243+ } ;
244+
245+ //Forming file to upload
246+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
247+ var stream = new MemoryStream ( byteArray ) ;
248+
249+ //Check is exist file
250+ if ( await Storage . ExistsAsync ( blobMetadata ) )
251+ {
252+ await Storage . DeleteAsync ( blobMetadata ) ;
253+ }
254+
255+ //Upload file as text
256+ await Storage . UploadAsync ( blobMetadata , uploadContent ) ;
257+
258+ //Download the file
259+ var downloadedContent = await DownloadAsync ( blobMetadata . Name ) ;
260+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
261+
262+ //Delete file
263+ await DeleteFileAsync ( blobMetadata . Name ) ;
264+ }
265+
266+ [ Fact ]
267+ public async Task UploadFileFromPathSpecifyingFileNameAsync ( )
268+ {
269+ const string uploadContent = $ "test { nameof ( UploadFileFromPathSpecifyingFileNameAsync ) } ";
270+ const string fileName = $ "{ nameof ( UploadFileFromPathSpecifyingFileNameAsync ) } .txt";
271+
272+ //Forming file to upload
273+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
274+ var stream = new MemoryStream ( byteArray ) ;
275+ var localFile = await LocalFile . FromStreamAsync ( stream ) ;
276+
277+ //Check is exist file
278+ if ( await Storage . ExistsAsync ( fileName ) )
279+ {
280+ await Storage . DeleteAsync ( fileName ) ;
281+ }
282+
283+ //Upload file as local file
284+ await Storage . UploadFileAsync ( fileName , localFile . FilePath ) ;
285+
286+ //Download the file
287+ var downloadedContent = await DownloadAsync ( fileName ) ;
288+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
289+
290+ //Delete file
291+ await DeleteFileAsync ( fileName ) ;
292+ }
293+
294+ [ Fact ]
295+ public async Task UploadFileFromPathSpecifyingBlobMetadataAsync ( )
296+ {
297+ const string uploadContent = $ "test { nameof ( UploadFileFromPathSpecifyingBlobMetadataAsync ) } ";
298+ var blobMetadata = new BlobMetadata
299+ {
300+ Name = $ "{ nameof ( UploadFileFromPathSpecifyingBlobMetadataAsync ) } .txt"
301+ } ;
302+
303+ //Forming file to upload
304+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
305+ var stream = new MemoryStream ( byteArray ) ;
306+ var localFile = await LocalFile . FromStreamAsync ( stream ) ;
307+
308+ //Check is exist file
309+ if ( await Storage . ExistsAsync ( blobMetadata ) )
310+ {
311+ await Storage . DeleteAsync ( blobMetadata ) ;
312+ }
313+
314+ //Upload file as local file
315+ await Storage . UploadFileAsync ( blobMetadata , localFile . FilePath ) ;
316+
317+ //Download the file
318+ var downloadedContent = await DownloadAsync ( blobMetadata . Name ) ;
319+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
320+
321+ //Delete file
322+ await DeleteFileAsync ( blobMetadata . Name ) ;
323+ }
324+
325+ [ Fact ]
326+ public async Task UploadFileAsArrayAsync ( )
327+ {
328+ const string uploadContent = $ "test { nameof ( UploadFileAsArrayAsync ) } ";
329+ const string fileName = $ "{ nameof ( UploadFileAsArrayAsync ) } .txt";
330+
331+ //Forming file to upload
332+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
333+
334+ //Check is exist file
335+ if ( await Storage . ExistsAsync ( fileName ) )
336+ {
337+ await Storage . DeleteAsync ( fileName ) ;
338+ }
339+
340+ //Upload file as byte array
341+ await Storage . UploadAsync ( new BlobMetadata { Name = fileName } , byteArray ) ;
342+
343+ //Download the file
344+ var downloadedContent = await DownloadAsync ( fileName ) ;
345+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
346+
347+ //Delete file
348+ await DeleteFileAsync ( fileName ) ;
349+ }
350+
351+ [ Fact ]
352+ public async Task UploadFileAsAsTextWithoutNameSpecifiedAsync ( )
353+ {
354+ const string uploadContent = $ "test { nameof ( UploadFileAsAsTextWithoutNameSpecifiedAsync ) } ";
355+
356+ //Upload file as text
357+ var fileName = await Storage . UploadAsync ( uploadContent ) ;
358+
359+ //Download the file
360+ var downloadedContent = await DownloadAsync ( fileName ) ;
361+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
362+
363+ //Delete file
364+ await DeleteFileAsync ( fileName ) ;
365+ }
366+
367+ [ Fact ]
368+ public async Task UploadFileAsAsStreamWithoutNameSpecifiedAsync ( )
369+ {
370+ const string uploadContent = $ "test { nameof ( UploadFileAsAsStreamWithoutNameSpecifiedAsync ) } ";
371+
372+ //Forming file to upload
373+ var byteArray = Encoding . ASCII . GetBytes ( uploadContent ) ;
374+ var stream = new MemoryStream ( byteArray ) ;
375+
376+ //Upload file as text
377+ var fileName = await Storage . UploadAsync ( stream ) ;
378+
379+ //Download the file
380+ var downloadedContent = await DownloadAsync ( fileName ) ;
381+ downloadedContent . Should ( ) . Be ( uploadContent ) ;
382+
171383 //Delete file
172384 await DeleteFileAsync ( fileName ) ;
173385 }
@@ -177,10 +389,10 @@ public async Task WhenUploadAsyncIsCalled()
177389 #region Download
178390
179391 [ Fact ]
180- public async Task WhenDownloadAsyncIsCalled ( )
392+ public async Task DownloadAsStreamAsync ( )
181393 {
182- const string uploadContent = $ "test { nameof ( WhenDownloadAsyncIsCalled ) } ";
183- const string fileName = $ "{ nameof ( WhenDownloadAsyncIsCalled ) } .txt";
394+ const string uploadContent = $ "test { nameof ( DownloadAsStreamAsync ) } ";
395+ const string fileName = $ "{ nameof ( DownloadAsStreamAsync ) } .txt";
184396
185397 //Upload file
186398 await PrepareFileToTest ( uploadContent , fileName ) ;
@@ -200,10 +412,10 @@ public async Task WhenDownloadAsyncIsCalled()
200412 }
201413
202414 [ Fact ]
203- public async Task WhenDownloadAsyncToFileIsCalled ( )
415+ public async Task DownloadAsLocalFileAsync ( )
204416 {
205- const string uploadContent = $ "test { nameof ( WhenDownloadAsyncToFileIsCalled ) } ";
206- const string fileName = $ "{ nameof ( WhenDownloadAsyncToFileIsCalled ) } .txt";
417+ const string uploadContent = $ "test { nameof ( DownloadAsLocalFileAsync ) } ";
418+ const string fileName = $ "{ nameof ( DownloadAsLocalFileAsync ) } .txt";
207419
208420 //Upload file
209421 await PrepareFileToTest ( uploadContent , fileName ) ;
@@ -244,10 +456,10 @@ public async Task WhenDeleteAsyncIsCalled()
244456 #region Exist
245457
246458 [ Fact ]
247- public async Task WhenSingleBlobExistsIsCalled ( )
459+ public async Task SingleBlobExistsAsync ( )
248460 {
249- const string uploadContent = $ "test { nameof ( WhenSingleBlobExistsIsCalled ) } ";
250- const string fileName = $ "{ nameof ( WhenSingleBlobExistsIsCalled ) } .txt";
461+ const string uploadContent = $ "test { nameof ( SingleBlobExistsAsync ) } ";
462+ const string fileName = $ "{ nameof ( SingleBlobExistsAsync ) } .txt";
251463
252464 //Upload file
253465 await PrepareFileToTest ( uploadContent , fileName ) ;
@@ -373,6 +585,16 @@ private async Task DeleteFileAsync(string fileName)
373585 }
374586 }
375587
588+ private async Task < string > DownloadAsync ( string fileName )
589+ {
590+ //Download file
591+ var stream = await Storage . DownloadAsStreamAsync ( fileName ) ;
592+ var sr = new StreamReader ( stream , Encoding . UTF8 ) ;
593+
594+ //Get content from file as string
595+ return await sr . ReadToEndAsync ( ) ;
596+ }
597+
376598 private LocalFile GetLocalFile ( string fileName , int byteSize )
377599 {
378600 var localFile = new LocalFile ( fileName ) ;
0 commit comments