Skip to content

Commit d264b35

Browse files
author
Ruslan Dudchenko
committed
Added upload tests
1 parent 6febe30 commit d264b35

3 files changed

Lines changed: 239 additions & 17 deletions

File tree

ManagedCode.Storage.Azure/AzureStorage.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,9 @@ public async Task UploadAsync(BlobMetadata blobMetadata, byte[] data, Cancellati
227227

228228
public async Task<string> UploadAsync(string content, CancellationToken cancellationToken = default)
229229
{
230-
string fileName = Guid.NewGuid().ToString("N").ToLowerInvariant();
230+
string fileName = $"{Guid.NewGuid().ToString("N").ToLowerInvariant()}.txt";
231231

232-
var blobClient = _blobContainerClient.GetBlobClient($"{fileName}.txt");
232+
var blobClient = _blobContainerClient.GetBlobClient(fileName);
233233
await blobClient.UploadAsync(BinaryData.FromString(content), cancellationToken);
234234

235235
return fileName;

ManagedCode.Storage.Core/LocalFile.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,12 @@ public void Close()
130130
}
131131
}
132132

133-
public static async Task<LocalFile> FromStream(Stream stream)
133+
public static async Task<LocalFile> FromStreamAsync(Stream stream)
134134
{
135135
var file = new LocalFile();
136136
await stream.CopyToAsync(file.FileStream);
137-
await file.DisposeAsync();
138-
file.Close();
137+
file.FileStream.Dispose();
138+
139139
return file;
140140
}
141141
}

ManagedCode.Storage.Tests/StorageBaseTests.cs

Lines changed: 234 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)