Skip to content

Commit 92beb9b

Browse files
Merge pull request #220 from EvotecIT/update-downloadasync-to-check-directory-presence
2 parents 3ed3f3b + 983e9f0 commit 92beb9b

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

SectigoCertificateManager.Tests/CertificatesClientTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,38 @@ public async Task DownloadAsync_WritesFile(int certificateId, bool isValid) {
412412
}
413413
}
414414

415+
[Fact]
416+
public async Task DownloadAsync_WritesFileToWorkingDirectory() {
417+
var response = new HttpResponseMessage(HttpStatusCode.OK) {
418+
Content = new StringContent("DATA")
419+
};
420+
421+
var handler = new TestHandler(response);
422+
using var httpClient = new HttpClient(handler);
423+
var client = new SectigoClient(new ApiConfig("https://example.com/", "u", "p", "c", ApiVersion.V25_4), httpClient);
424+
var certificates = new CertificatesClient(client);
425+
426+
var dir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
427+
Directory.CreateDirectory(dir);
428+
var originalDir = Directory.GetCurrentDirectory();
429+
Directory.SetCurrentDirectory(dir);
430+
var fileName = Path.GetRandomFileName();
431+
try {
432+
await certificates.DownloadAsync(1, fileName);
433+
Assert.NotNull(handler.Request);
434+
Assert.Equal("https://example.com/ssl/v1/collect/1?format=base64", handler.Request!.RequestUri!.ToString());
435+
var fullPath = Path.Combine(dir, fileName);
436+
Assert.True(File.Exists(fullPath));
437+
Assert.Equal("DATA", File.ReadAllText(fullPath));
438+
Assert.Empty(Directory.GetDirectories(dir));
439+
} finally {
440+
Directory.SetCurrentDirectory(originalDir);
441+
if (Directory.Exists(dir)) {
442+
Directory.Delete(dir, true);
443+
}
444+
}
445+
}
446+
415447
[Theory]
416448
[InlineData("")]
417449
[InlineData(null)]

SectigoCertificateManager/Clients/CertificatesClient.Download.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,10 @@ public async Task DownloadAsync(
103103
var response = await _client.GetAsync(url, cancellationToken).ConfigureAwait(false);
104104
var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
105105
using (stream) {
106-
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
106+
var directory = Path.GetDirectoryName(path);
107+
if (!string.IsNullOrEmpty(directory)) {
108+
Directory.CreateDirectory(directory);
109+
}
107110
using var file = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
108111
var buffer = new byte[65536];
109112
long total = response.Content.Headers.ContentLength ?? (stream.CanSeek ? stream.Length : -1);

0 commit comments

Comments
 (0)