Пример #1
0
        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");
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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>());
        }
Пример #9
0
        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)));
        }