public async Task UploadFiles_Request_CorrectUri() { // Arrange var handlerMock = new Mock<HttpMessageHandler>(MockBehavior.Strict).SetupHttpResponse(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var httpClient = SetUpHttpClient(handlerMock.Object); var webPortalClient = new SkynetWebPortal(httpClient); var fileMock = new Mock<IFileInfo>().SetupValidFile(); // Act await webPortalClient.UploadFiles(new UploadItem[] { new UploadItem(fileMock.Object) }); // Assert var expectedUriWithoutQuery = "https://siasky.net/skynet/skyfile"; handlerMock .Protected() .Verify( "SendAsync", Times.Exactly(1), ItExpr.Is<HttpRequestMessage>(req => req.Method == HttpMethod.Post && req.RequestUri.GetLeftPart(UriPartial.Path) == expectedUriWithoutQuery ), ItExpr.IsAny<CancellationToken>() ); }
public async Task UploadFiles_FromFileInfo_ExpectedSkylink() { // Arrange var files = new PhysicalFileInfo[] { new PhysicalFileInfo(new FileInfo("assets/test-file.json")), new PhysicalFileInfo(new FileInfo("assets/test-file.txt")) }; var options = new MultiFileUploadOptions { FileName = "integration-tests" }; // Act var skylink = await _skynetWebPortal.UploadFiles(files, options); // Assert Assert.That(skylink.ToString() == "AACVmVl_KyZTaaS2cdGANxedYtOGJu13urqfc_yQl5jL8w"); }
public void UploadFiles_ItemsAreEmpty_ThrowsArgumentException() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); // Act Task UploadRequest() => webPortalClient.UploadFiles(Array.Empty<UploadItem>()); // Assert Assert.That(UploadRequest, Throws.ArgumentException); }
public void UploadFiles_FileInfoEnumerableOnlyContainsValidFiles_ThrowsNothing() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); var fileMock = new Mock<IFileInfo>().SetupValidFile(); // Act Task UploadRequest() => webPortalClient.UploadFiles(new IFileInfo[] { fileMock.Object }); // Assert Assert.That(UploadRequest, Throws.Nothing); }
public void UploadFiles_FileInfoEnumerableContainsNotFoundFileInfo_ThrowsArgumentException() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); var fileProvider = SetUpFileProvider(); // Act Task UploadRequest() => webPortalClient.UploadFiles(new IFileInfo[] { new NotFoundFileInfo("doesnotexist.txt") }); // Assert Assert.That(UploadRequest, Throws.ArgumentException); }
public void UploadFiles_FileInfoEnumerableIsEmpty_ThrowsArgumentException() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); var fileProvider = SetUpFileProvider(); // Act Task UploadRequest() => webPortalClient.UploadFiles(Enumerable.Empty<IFileInfo>()); // Assert Assert.That(UploadRequest, Throws.ArgumentException); }
public void UploadFiles_SuccessfulValidResponse_ThrowsNothing() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); var fileMock = new Mock<IFileInfo>().SetupValidFile(); // Act Task UploadRequest() => webPortalClient.UploadFiles(new UploadItem[] { new UploadItem(fileMock.Object) }); // Assert Assert.That(UploadRequest, Throws.Nothing); }
public void UploadFiles_NonSuccessfulResponse_ThrowsHttpRequestException() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.BadRequest); var webPortalClient = new SkynetWebPortal(httpClient); var fileMock = new Mock<IFileInfo>().SetupValidFile(); // Act Task UploadRequest() => webPortalClient.UploadFiles(new UploadItem[] { new UploadItem(fileMock.Object) }); // Assert Assert.That(UploadRequest, Throws.TypeOf<HttpRequestException>()); }
public async Task UploadFiles_FileInfoEnumerableOnlyContainsValidFiles_ReturnsSkylink() { // Arrange using var httpClient = SetUpHttpClientThatReturns(HttpStatusCode.OK, JsonSerializer.Serialize(ValidUploadResponse)); var webPortalClient = new SkynetWebPortal(httpClient); var fileMock = new Mock<IFileInfo>().SetupValidFile(); // Act var response = await webPortalClient.UploadFiles(new IFileInfo[] { fileMock.Object }); // Assert Assert.That(response, Is.EqualTo(Skylink.Parse(ValidUploadResponse.Skylink))); }