Skip to content

Commit

Permalink
Release/2.2.2 (#28)
Browse files Browse the repository at this point in the history
* Support getting large files (#27)

* Changed WebDavResponse->ContentLength type of long
  • Loading branch information
skazantsev authored Aug 8, 2018
1 parent bcb2c05 commit 77e884b
Show file tree
Hide file tree
Showing 21 changed files with 95 additions and 225 deletions.
88 changes: 0 additions & 88 deletions src/WebDav.Client.Tests/Infrastructure/WebDavDispatcherTests.cs

This file was deleted.

25 changes: 23 additions & 2 deletions src/WebDav.Client.Tests/TestDoubles/Dispatcher.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using NSubstitute;
using System;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
Expand All @@ -12,18 +13,38 @@ public static class Dispatcher
internal static IWebDavDispatcher Mock(string content = "", int statusCode = 200, string description = "OK")
{
var dispatcher = Substitute.For<IWebDavDispatcher>();
var response = new HttpResponseMessage
{
Content = new StringContent(content),
StatusCode = (HttpStatusCode)statusCode,
ReasonPhrase = description
};

dispatcher
.Send(Arg.Any<Uri>(), Arg.Any<HttpMethod>(), Arg.Any<RequestParameters>(), Arg.Any<CancellationToken>())
.Returns(x => Task.FromResult(new HttpResponse(new StringContent(content), statusCode, description)));
.Returns(x => Task.FromResult(response));
dispatcher
.Send(Arg.Any<Uri>(), Arg.Any<HttpMethod>(), Arg.Any<RequestParameters>(), Arg.Any<CancellationToken>(), Arg.Any<HttpCompletionOption>())
.Returns(x => Task.FromResult(response));
return dispatcher;
}

internal static IWebDavDispatcher MockFaulted()
{
var dispatcher = Substitute.For<IWebDavDispatcher>();
var response = new HttpResponseMessage
{
Content = new StringContent(""),
StatusCode = (HttpStatusCode)500,
ReasonPhrase = "Internal Server Error"
};

dispatcher
.Send(Arg.Any<Uri>(), Arg.Any<HttpMethod>(), Arg.Any<RequestParameters>(), Arg.Any<CancellationToken>())
.Returns(x => Task.FromResult(new HttpResponse(new StringContent(""), 500, "Internal Server Error")));
.Returns(x => Task.FromResult(response));
dispatcher
.Send(Arg.Any<Uri>(), Arg.Any<HttpMethod>(), Arg.Any<RequestParameters>(), Arg.Any<CancellationToken>(), Arg.Any<HttpCompletionOption>())
.Returns(x => Task.FromResult(response));
return dispatcher;
}
}
Expand Down
10 changes: 0 additions & 10 deletions src/WebDav.Client.Tests/WebDavClientTests/CopyTests.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Net.Http;
using System.Threading;
using NSubstitute;
using WebDav.Client.Tests.TestDoubles;
Expand Down Expand Up @@ -41,7 +40,6 @@ public async void When_IsCalled_Should_SendCopyRequest()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"));
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(CheckCopyRequestParameters()), CancellationToken.None);
Expand All @@ -54,7 +52,6 @@ public async void When_IsCalled_Should_SendDestinationHeader()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"));
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Destination", "http://example.com/new")), CancellationToken.None);
Expand All @@ -67,7 +64,6 @@ public async void When_IsCalledWithDefaultParameters_Should_SendOverwriteHeaderE
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"));
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Overwrite", "T")), CancellationToken.None);
Expand All @@ -80,7 +76,6 @@ public async void When_IsCalledWithDefaultParameters_Should_SendDepthHeaderEqual
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"));
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Depth", "infinity")), CancellationToken.None);
Expand All @@ -93,7 +88,6 @@ public async void When_IsCalledWithOverwriteOff_Should_SendOverwriteHeaderEquals
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"), new CopyParameters { Overwrite = false });
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Overwrite", "F")), CancellationToken.None);
Expand All @@ -106,7 +100,6 @@ public async void When_IsCalledWithOverwriteOn_Should_SendOverwriteHeaderEqualsT
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"), new CopyParameters { Overwrite = true });
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Overwrite", "T")), CancellationToken.None);
Expand All @@ -131,7 +124,6 @@ public async void When_IsAppliedToResourceAndAncestors_Should_SendDepthHeaderEqu
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"), new CopyParameters { ApplyTo = ApplyTo.Copy.ResourceAndAncestors});
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Depth", "infinity")), CancellationToken.None);
Expand All @@ -144,7 +136,6 @@ public async void When_IsAppliedToResourceOnly_Should_SendDepthHeaderEqualsZero(
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"), new CopyParameters { ApplyTo = ApplyTo.Copy.ResourceOnly });
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("Depth", "0")), CancellationToken.None);
Expand All @@ -157,7 +148,6 @@ public async void When_IsCalledWithLockToken_Should_SetIfHeader()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Copy(sourceUri, new Uri("http://example.com/new"), new CopyParameters { DestLockToken = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4" });
await dispatcher.Received(1)
.Send(sourceUri, WebDavMethod.Copy, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)")), CancellationToken.None);
Expand Down
2 changes: 0 additions & 2 deletions src/WebDav.Client.Tests/WebDavClientTests/DeleteTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ public async void When_IsCalledWithDefaultArguments_Should_SendDeleteRequest()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Delete(requestUri);
await dispatcher.Received(1)
.Send(requestUri, HttpMethod.Delete, Arg.Is<RequestParameters>(x => !x.Headers.Any() && x.Content == null), CancellationToken.None);
Expand All @@ -65,7 +64,6 @@ public async void When_IsCalledWithLockToken_Should_SetIfHeader()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Delete(requestUri, new DeleteParameters { LockToken = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4" });
await dispatcher.Received(1)
.Send(requestUri, HttpMethod.Delete, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)")), CancellationToken.None);
Expand Down
16 changes: 8 additions & 8 deletions src/WebDav.Client.Tests/WebDavClientTests/GetFileTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Net;
using System.Net.Http;
using System.Threading;
using NSubstitute;
Expand All @@ -13,7 +14,8 @@ public class GetFileTests
public async void When_GetRawFileIsCalled_Should_ProxyCallToGetFile()
{
var client = Substitute.ForPartsOf<WebDavClient>().SetWebDavDispatcher(Dispatcher.Mock());
client.GetFile(Arg.Any<Uri>(), Arg.Any<bool>(), Arg.Any<GetFileParameters>()).Returns(new WebDavStreamResponse(200));
client.GetFile(Arg.Any<Uri>(), Arg.Any<bool>(), Arg.Any<GetFileParameters>())
.Returns(new WebDavStreamResponse(new HttpResponseMessage { StatusCode = HttpStatusCode.OK }, null));

await client.GetRawFile(new Uri("http://example.com/file"));
await client.GetRawFile("http://example.com/file");
Expand All @@ -27,7 +29,8 @@ public async void When_GetRawFileIsCalled_Should_ProxyCallToGetFile()
public async void When_GetProcessedFileIsCalled_Should_ProxyCallToGetFile()
{
var client = Substitute.ForPartsOf<WebDavClient>().SetWebDavDispatcher(Dispatcher.Mock());
client.GetFile(Arg.Any<Uri>(), Arg.Any<bool>(), Arg.Any<GetFileParameters>()).Returns(new WebDavStreamResponse(200));
client.GetFile(Arg.Any<Uri>(), Arg.Any<bool>(), Arg.Any<GetFileParameters>())
.Returns(new WebDavStreamResponse(new HttpResponseMessage { StatusCode = HttpStatusCode.OK }, null));

await client.GetProcessedFile(new Uri("http://example.com/file"));
await client.GetProcessedFile("http://example.com/file");
Expand Down Expand Up @@ -66,11 +69,10 @@ public async void When_GetFile_Should_SendGetRequest()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.GetFile(requestUri, false, new GetFileParameters());
await client.GetFile(requestUri, true, new GetFileParameters());
await dispatcher.Received(2)
.Send(requestUri, HttpMethod.Get, Arg.Is<RequestParameters>(x => x.Content == null), CancellationToken.None);
.Send(requestUri, HttpMethod.Get, Arg.Is<RequestParameters>(x => x.Content == null), CancellationToken.None, HttpCompletionOption.ResponseHeadersRead);
}

[Fact]
Expand All @@ -80,10 +82,9 @@ public async void When_IsCalledWithTranslateOff_Should_SendTranslateHeaderEquals
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.GetFile(requestUri, false, new GetFileParameters());
await dispatcher.Received(1)
.Send(requestUri, HttpMethod.Get, Arg.Is(Predicates.CompareHeader("Translate", "f")), CancellationToken.None);
.Send(requestUri, HttpMethod.Get, Arg.Is(Predicates.CompareHeader("Translate", "f")), CancellationToken.None, HttpCompletionOption.ResponseHeadersRead);
}

[Fact]
Expand All @@ -93,10 +94,9 @@ public async void When_IsCalledWithTranslateOn_Should_SendTranslateHeaderEqualsT
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.GetFile(requestUri, true, new GetFileParameters());
await dispatcher.Received(1)
.Send(requestUri, HttpMethod.Get, Arg.Is(Predicates.CompareHeader("Translate", "t")), CancellationToken.None);
.Send(requestUri, HttpMethod.Get, Arg.Is(Predicates.CompareHeader("Translate", "t")), CancellationToken.None, HttpCompletionOption.ResponseHeadersRead);
}
}
}
3 changes: 0 additions & 3 deletions src/WebDav.Client.Tests/WebDavClientTests/LockTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Threading;
using NSubstitute;
using WebDav.Client.Tests.TestDoubles;
Expand Down Expand Up @@ -40,7 +39,6 @@ public async void When_IsCalled_Should_SendLockRequest()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Lock(requestUri);
await dispatcher.Received(1)
.Send(requestUri, WebDavMethod.Lock, Arg.Any<RequestParameters>(), CancellationToken.None);
Expand All @@ -53,7 +51,6 @@ public async void When_IsCalledWithDefaultArguments_Should_SendNoHeaders()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Lock(requestUri);
await dispatcher.Received(1)
.Send(requestUri, WebDavMethod.Lock, Arg.Is<RequestParameters>(x => !x.Headers.Any()), CancellationToken.None);
Expand Down
3 changes: 0 additions & 3 deletions src/WebDav.Client.Tests/WebDavClientTests/MkcolTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Threading;
using NSubstitute;
using WebDav.Client.Tests.TestDoubles;
Expand Down Expand Up @@ -40,7 +39,6 @@ public async void When_IsCalledWithDefaultArguments_Should_SendMkcolRequest()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Mkcol(requestUri);
await dispatcher.Received(1)
.Send(requestUri, WebDavMethod.Mkcol, Arg.Is<RequestParameters>(x => !x.Headers.Any() && x.Content == null), CancellationToken.None);
Expand All @@ -65,7 +63,6 @@ public async void When_IsCalledWithLockToken_Should_SetIfHeader()
var dispatcher = Dispatcher.Mock();
var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

await dispatcher.DidNotReceiveWithAnyArgs().Send(requestUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
await client.Mkcol(requestUri, new MkColParameters { LockToken = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4" });
await dispatcher.Received(1)
.Send(requestUri, WebDavMethod.Mkcol, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)")), CancellationToken.None);
Expand Down
Loading

0 comments on commit 77e884b

Please sign in to comment.