public void RunAsync_IOException() { // ARRANGE byte[] expected = new byte[FactoryNode.Node.Size.Value]; new Random().NextBytes(expected); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); Stream s = new MemoryStream(); FileDownloadCallbackMock callback = new FileDownloadCallbackMock(); FileDownload f = new FileDownload(c, "id1", FactoryNode.Node, s); f.AddFileDownloadCallback(callback); Mock.Arrange(() => c.Builder.PostFileDownload(Arg.AnyLong)).Returns(FactoryRestSharp.PostFileDownloadMock(123)).OnAllThreads(); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiDownloadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostDownloadToken, 0)) .Returns(FactoryNode.ApiDownloadToken).OnAllThreads(); DracoonWebClientExtension wc = Mock.Create <DracoonWebClientExtension>(); Mock.Arrange(() => Mock.Create <DownloadProgressChangedEventArgs>().BytesReceived).IgnoreInstance().Returns(expected.Length); Mock.Arrange(() => c.Executor.ExecuteWebClientDownload(Arg.IsAny <WebClient>(), Arg.IsAny <Uri>(), RequestType.GetDownloadChunk, Arg.IsAny <Thread>(), Arg.AnyInt)) .Raises(() => wc.DownloadProgressChanged += null, null, Mock.Create <DownloadProgressChangedEventArgs>()).Returns(expected).OnAllThreads(); Mock.Arrange(() => s.Write(Arg.IsAny <byte[]>(), Arg.AnyInt, Arg.AnyInt)).Throws(new IOException()).OnAllThreads(); Mock.Arrange(() => c.Builder.ProvideChunkDownloadWebClient(Arg.AnyLong, Arg.AnyLong)).Returns(wc).OnAllThreads(); Mock.Arrange(() => callback.OnFailed(Arg.AnyString, Arg.IsAny <DracoonException>())).Occurs(1); // ACT f.RunAsync(); while (f.RunningThread.IsAlive) { } s.Close(); // ASSERT Mock.Assert(callback); }
public void Encrypted_RunSync_CreateFileKeyError() { // ARRANGE byte[] fileMock = new byte[1888]; new Random().NextBytes(fileMock); Stream s = new MemoryStream(fileMock); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); FileUploadCallbackMock callback = new FileUploadCallbackMock(); ApiCreateFileUpload acfu = FactoryFile.ApiCreateFileUpload; acfu.Classification = null; EncFileUpload f = new EncFileUpload(c, "id1", FactoryFile.UploadFileRequest, s, FactoryUser.UserPublicKey, fileMock.Length); f.AddFileUploadCallback(callback); Mock.Arrange(() => c.Builder.GetGeneralSettings()) .Returns(FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetGeneralConfig, Method.GET)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiGeneralSettings>(Arg.IsAny <IRestRequest>(), RequestType.GetGeneralSettings, 0)) .Returns(FactoryServerSettings.ApiGeneralSettings).Occurs(1); Mock.Arrange(() => FileMapper.ToApiCreateFileUpload(Arg.IsAny <FileUploadRequest>())).Returns(acfu); Mock.Arrange(() => c.Builder.PostCreateFileUpload(Arg.IsAny <ApiCreateFileUpload>())).Returns(FactoryRestSharp.PostCreateFileUploadMock()); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUploadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostUploadToken, 0)) .Returns(FactoryFile.ApiUploadToken); Mock.Arrange(() => Crypto.Sdk.Crypto.GenerateFileKey(Arg.AnyString)).Throws(new CryptoException("Error")); // ACT - ASSERT Assert.Throws <DracoonCryptoException>(() => f.RunSync()); s.Close(); }
public void GetDownloadShares() { // ARRANGE DownloadShareList expected = FactoryShare.DownloadShareList; IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); DracoonSharesImpl s = new DracoonSharesImpl(c); Mock.Arrange(() => Arg.IsAny <long?>().NullableMustNotNegative(Arg.AnyString)).DoNothing().Occurs(1); Mock.Arrange(() => Arg.IsAny <long?>().NullableMustPositive(Arg.AnyString)).DoNothing().Occurs(1); Mock.Arrange(() => c.Builder.GetDownloadShares(Arg.IsAny <long?>(), Arg.IsAny <long?>(), Arg.IsAny <GetDownloadSharesFilter>(), Arg.IsAny <SharesSort>())) .Returns(FactoryRestSharp.GetDownloadSharesMock()).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiDownloadShareList>(Arg.IsAny <IRestRequest>(), RequestType.GetDownloadShares, 0)) .Returns(FactoryShare.ApiDownloadShareList).Occurs(1); Mock.Arrange(() => ShareMapper.FromApiDownloadShareList(Arg.IsAny <ApiDownloadShareList>())).Returns(FactoryShare.DownloadShareList).Occurs(1); // ACT DownloadShareList actual = s.GetDownloadShares(); // ASSERT Assert.NotNull(actual); Mock.Assert(() => Arg.IsAny <long?>().NullableMustNotNegative(Arg.AnyString)); Mock.Assert(() => Arg.IsAny <long?>().NullableMustPositive(Arg.AnyString)); Mock.Assert(() => ShareMapper.FromApiDownloadShareList(Arg.IsAny <ApiDownloadShareList>())); Mock.Assert(c.Builder); Mock.Assert(c.Executor); }
public void Encrypted_RunSync_IOException() { // ARRANGE byte[] fileMock = new byte[1888]; new Random().NextBytes(fileMock); Stream s = new MemoryStream(fileMock); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); FileUploadCallbackMock callback = new FileUploadCallbackMock(); ApiCreateFileUpload acfu = FactoryFile.ApiCreateFileUpload; acfu.Classification = null; EncFileUpload f = new EncFileUpload(c, "id1", FactoryFile.UploadFileRequest, s, FactoryUser.UserPublicKey, fileMock.Length); f.AddFileUploadCallback(callback); Mock.Arrange(() => FileMapper.ToApiCreateFileUpload(Arg.IsAny <FileUploadRequest>())).Returns(acfu); Mock.Arrange(() => c.Builder.PostCreateFileUpload(Arg.IsAny <ApiCreateFileUpload>())).Returns(FactoryRestSharp.PostCreateFileUploadMock()); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUploadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostUploadToken, 0)) .Returns(FactoryFile.ApiUploadToken); Mock.Arrange(() => c.Builder.GetGeneralSettings()) .Returns(FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetGeneralConfig, Method.GET)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiGeneralSettings>(Arg.IsAny <IRestRequest>(), RequestType.GetGeneralSettings, 0)) .Returns(FactoryServerSettings.ApiGeneralSettings).Occurs(1); Mock.Arrange(() => Crypto.Sdk.Crypto.GenerateFileKey(Arg.AnyString)).Returns(FactoryFile.PlainFileKey); FileEncryptionCipher cipher = Mock.Create <FileEncryptionCipher>(); Mock.Arrange(() => Crypto.Sdk.Crypto.CreateFileEncryptionCipher(Arg.IsAny <PlainFileKey>())).Returns(cipher); Mock.Arrange(() => cipher.ProcessBytes(Arg.IsAny <PlainDataContainer>())).Returns(new EncryptedDataContainer(fileMock, fileMock)); Mock.Arrange(() => cipher.DoFinal()).Returns(new EncryptedDataContainer(fileMock, fileMock)); Mock.NonPublic.Arrange <ApiUploadChunkResult>(f, "UploadChunkWebClient", ArgExpr.IsAny <Uri>(), ArgExpr.IsAny <byte[]>(), ArgExpr.IsAny <long>(), ArgExpr.IsAny <int>()).Throws(new IOException()); // ACT - ASSERT Assert.Throws <DracoonFileIOException>(() => f.RunSync()); s.Close(); }
public void DoSyncApiCall_Success() { // ARRANGE string version = "4.13.0"; DateTime buildTime = new DateTime(2019, 1, 1, 0, 0, 0); ApiServerVersion expected = new ApiServerVersion { ServerVersion = version, RestApiVersion = version, BuildDate = buildTime }; RestResponse response = FactoryRestSharp.RestResponse; response.Content = JsonConvert.SerializeObject(expected); response.StatusCode = HttpStatusCode.OK; Mock.NonPublic.Arrange <bool>(response, "IsSuccessful").Returns(true); IRestRequest request = FactoryRestSharp.GetServerVersionMock(); Mock.Arrange(() => DracoonClient.HttpConfig).Returns(new DracoonHttpConfig { WebProxy = new WebProxy() }); Mock.Arrange(() => new RestClient().Execute(request)).IgnoreInstance().Returns(response); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); IRequestExecutor exec = new DracoonRequestExecutor(FactoryClients.OAuthMock, c); // ACT ApiServerVersion actual = exec.DoSyncApiCall <ApiServerVersion>(request, RequestType.GetServerVersion); // ASSERT Assert.Equal(expected.BuildDate, actual.BuildDate); Assert.Equal(expected.RestApiVersion, actual.RestApiVersion); Assert.Equal(expected.ServerVersion, actual.ServerVersion); }
public void Encrypted_RunSync_ProcessBytesIOError() { // ARRANGE Node node = FactoryNode.Node; node.Size = 1024; byte[] expected = new byte[node.Size.Value]; new Random().NextBytes(expected); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); Stream s = new MemoryStream(); FileDownloadCallbackMock callback = new FileDownloadCallbackMock(); EncFileDownload f = new EncFileDownload(c, "id1", node, s, FactoryUser.UserPrivateKey); f.AddFileDownloadCallback(callback); Mock.Arrange(() => c.Builder.PostFileDownload(Arg.AnyLong)).Returns(FactoryRestSharp.PostFileDownloadMock(2354)); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiDownloadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostDownloadToken, 0)) .Returns(FactoryNode.ApiDownloadToken); Mock.Arrange(() => c.NodesImpl.GetEncryptedFileKey(Arg.AnyLong)).Returns(FactoryFile.EncryptedFileKey); FileDecryptionCipher cipher = Mock.Create <FileDecryptionCipher>(); Mock.Arrange(() => Crypto.Sdk.Crypto.DecryptFileKey(Arg.IsAny <EncryptedFileKey>(), Arg.IsAny <UserPrivateKey>(), Arg.AnyString)) .Returns(FactoryFile.PlainFileKey); Mock.Arrange(() => Crypto.Sdk.Crypto.CreateFileDecryptionCipher(Arg.IsAny <PlainFileKey>())).Returns(cipher); Mock.NonPublic.Arrange <byte[]>(f, "DownloadChunk", ArgExpr.IsAny <Uri>(), ArgExpr.IsAny <long>(), ArgExpr.IsAny <long>()).Returns(expected); Mock.Arrange(() => cipher.ProcessBytes(Arg.IsAny <EncryptedDataContainer>())).Throws(new IOException("Error")); Mock.Arrange(() => cipher.DoFinal(Arg.IsAny <EncryptedDataContainer>())).Returns(new PlainDataContainer(new byte[0])); // ACT Assert.Throws <DracoonFileIOException>(() => f.RunSync()); s.Close(); }
public void RunSync_UnknownFileSize_Success() { // ARRANGE byte[] fileMock = new byte[1888]; new Random().NextBytes(fileMock); Stream s = new MemoryStream(fileMock); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); FileUploadCallbackMock callback = new FileUploadCallbackMock(); FileUpload f = new FileUpload(c, "id1", FactoryFile.UploadFileRequest, s, -1); f.AddFileUploadCallback(callback); ApiCreateFileUpload acfu = FactoryFile.ApiCreateFileUpload; acfu.Classification = null; Mock.Arrange(() => c.Builder.PostCreateFileUpload(Arg.IsAny <ApiCreateFileUpload>())).Returns(FactoryRestSharp.PostCreateFileUploadMock()) .Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUploadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostUploadToken, 0)) .Returns(FactoryFile.ApiUploadToken).Occurs(1); Mock.Arrange(() => c.Builder.PutCompleteFileUpload(Arg.AnyString, Arg.IsAny <ApiCompleteFileUpload>())) .Returns(FactoryRestSharp.PutCompleteFileUploadMock("path")).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiNode>(Arg.IsAny <IRestRequest>(), RequestType.PutCompleteUpload, 0)) .Returns(FactoryNode.ApiNode).Occurs(1); Mock.Arrange(() => c.Builder.GetGeneralSettings()) .Returns(FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetGeneralConfig, Method.GET)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiGeneralSettings>(Arg.IsAny <IRestRequest>(), RequestType.GetGeneralSettings, 0)) .Returns(FactoryServerSettings.ApiGeneralSettings).Occurs(1); Mock.Arrange(() => FileMapper.ToApiCreateFileUpload(Arg.IsAny <FileUploadRequest>())).Returns(acfu).Occurs(1); Mock.Arrange(() => NodeMapper.FromApiNode(Arg.IsAny <ApiNode>())).Returns(FactoryNode.Node).Occurs(1); Mock.Arrange(() => FileHash.CompareFileHashes(Arg.AnyString, Arg.IsAny <byte[]>(), Arg.AnyInt)).Returns(true).OccursAtLeast(1); DracoonWebClientExtension wc = Mock.Create <DracoonWebClientExtension>(); Mock.Arrange(() => Mock.Create <UploadProgressChangedEventArgs>().BytesSent).IgnoreInstance(); Mock.Arrange(() => c.Executor.ExecuteWebClientChunkUpload(Arg.IsAny <WebClient>(), Arg.IsAny <Uri>(), Arg.IsAny <byte[]>(), RequestType.PostUploadChunk, Arg.IsAny <Thread>(), Arg.AnyInt)).DoInstead(() => Thread.Sleep(250)) .Raises(() => wc.UploadProgressChanged += null, null, Mock.Create <UploadProgressChangedEventArgs>()).Returns(new byte[13]); Mock.Arrange(() => c.Builder.ProvideChunkUploadWebClient(Arg.AnyInt, Arg.AnyLong, Arg.AnyString, Arg.AnyString)).Returns(wc); Mock.Arrange(() => JsonConvert.DeserializeObject <ApiUploadChunkResult>(Arg.AnyString)).Returns(FactoryFile.ApiUploadChunkResult); Mock.Arrange(() => callback.OnStarted(Arg.AnyString)).Occurs(1); Mock.Arrange(() => callback.OnRunning(Arg.AnyString, Arg.AnyLong, Arg.AnyLong)).OccursAtLeast(1); Mock.Arrange(() => callback.OnFinished(Arg.AnyString, Arg.IsAny <Node>())).Occurs(1); // ACT Node actual = f.RunSync(); s.Close(); // ASSERT Assert.Equal(FactoryNode.Node, actual, new NodeComparer()); Mock.Assert(callback); Mock.Assert(c.Builder); Mock.Assert(c.Executor); }
public void RunAsync_IOException() { // ARRANGE byte[] fileMock = new byte[1888]; new Random().NextBytes(fileMock); Stream s = new MemoryStream(fileMock); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); FileUploadCallbackMock callback = new FileUploadCallbackMock(); FileUpload f = new FileUpload(c, "id1", FactoryFile.UploadFileRequest, s, fileMock.Length); f.AddFileUploadCallback(callback); Mock.Arrange(() => c.Builder.PostCreateFileUpload(Arg.IsAny <ApiCreateFileUpload>())).Returns(FactoryRestSharp.PostCreateFileUploadMock()) .OnAllThreads(); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUploadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostUploadToken, 0)) .Returns(FactoryFile.ApiUploadToken).OnAllThreads(); Mock.Arrange(() => c.Builder.PutCompleteFileUpload(Arg.AnyString, Arg.IsAny <ApiCompleteFileUpload>())) .Returns(FactoryRestSharp.PutCompleteFileUploadMock("path")).OnAllThreads(); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiNode>(Arg.IsAny <IRestRequest>(), RequestType.PutCompleteUpload, 0)) .Returns(FactoryNode.ApiNode).OnAllThreads(); Mock.Arrange(() => c.Builder.GetGeneralSettings()) .Returns(FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetGeneralConfig, Method.GET)).OnAllThreads(); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiGeneralSettings>(Arg.IsAny <IRestRequest>(), RequestType.GetGeneralSettings, 0)) .Returns(FactoryServerSettings.ApiGeneralSettings).OnAllThreads(); Mock.Arrange(() => FileMapper.ToApiCreateFileUpload(Arg.IsAny <FileUploadRequest>())).Returns(FactoryFile.ApiCreateFileUpload) .OnAllThreads(); Mock.Arrange(() => NodeMapper.FromApiNode(Arg.IsAny <ApiNode>())).Returns(FactoryNode.Node).OnAllThreads(); Mock.Arrange(() => FileHash.CompareFileHashes(Arg.AnyString, Arg.IsAny <byte[]>(), Arg.AnyInt)).Returns(true).OnAllThreads(); DracoonWebClientExtension wc = Mock.Create <DracoonWebClientExtension>(); Mock.Arrange(() => Mock.Create <UploadProgressChangedEventArgs>().BytesSent).IgnoreInstance().OnAllThreads(); Mock.Arrange(() => c.Executor.ExecuteWebClientChunkUpload(Arg.IsAny <WebClient>(), Arg.IsAny <Uri>(), Arg.IsAny <byte[]>(), RequestType.PostUploadChunk, Arg.IsAny <Thread>(), Arg.AnyInt)) .Raises(() => wc.UploadProgressChanged += null, null, Mock.Create <UploadProgressChangedEventArgs>()).Returns(new byte[13]) .OnAllThreads(); Mock.Arrange(() => c.Builder.ProvideChunkUploadWebClient(Arg.AnyInt, Arg.AnyLong, Arg.AnyString, Arg.AnyString)).Returns(wc) .OnAllThreads(); Mock.Arrange(() => JsonConvert.DeserializeObject <ApiUploadChunkResult>(Arg.AnyString)).Returns(FactoryFile.ApiUploadChunkResult) .OnAllThreads(); Mock.Arrange(() => s.Read(Arg.IsAny <byte[]>(), Arg.AnyInt, Arg.AnyInt)).Throws(new IOException()).OnAllThreads(); Mock.Arrange(() => callback.OnStarted(Arg.AnyString)).Occurs(1); Mock.Arrange(() => callback.OnFailed(Arg.AnyString, Arg.IsAny <DracoonException>())).Occurs(1); // ACT f.RunAsync(); while (f.RunningThread.IsAlive) { } s.Close(); // ASSERT Mock.Assert(callback); }
public void Config_GetDefaultsSettings() { // ARRANGE IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetDefaultsConfig, Method.GET); // ACT IRestRequest actual = builder.GetDefaultsSettings(); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_PostMissingFileKeys() { // ARRANGE IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiPostMissingFileKeys, Method.POST); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryFile.ApiSetUserFileKeysRequest), ParameterType.RequestBody); // ACT IRestRequest actual = builder.PostMissingFileKeys(FactoryFile.ApiSetUserFileKeysRequest); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_DeleteNodes() { // ARRANGE IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiDeleteNodes, Method.DELETE); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryNode.ApiDeleteNodesRequest), ParameterType.RequestBody); // ACT IRestRequest actual = builder.DeleteNodes(FactoryNode.ApiDeleteNodesRequest); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_PostFavorite() { // ARRANGE long id = 168; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiPostFavorite, Method.POST); expected.AddUrlSegment("nodeId", id); // ACT IRestRequest actual = builder.PostFavorite(id); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_DeleteRecycleBin() { // ARRANGE long id = 39468345; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiDeleteRecycleBin, Method.DELETE); expected.AddUrlSegment("roomId", id); // ACT IRestRequest actual = builder.DeleteRecycleBin(id); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Shares_DeleteUploadShare() { // ARRANGE long id = 893756; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiDeleteUploadShare, Method.DELETE); expected.AddUrlSegment("shareId", id); // ACT IRestRequest actual = builder.DeleteUploadShare(id); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_PutCompleteFileUpload() { // ARRANGE string path = "some/dummy/path"; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(path, Method.PUT); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryFile.ApiCompleteFileUpload), ParameterType.RequestBody); // ACT IRestRequest actual = builder.PutCompleteFileUpload(path, FactoryFile.ApiCompleteFileUpload); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_GetPreviousVersion() { // ARRANGE long id = 78654; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetPreviousVersion, Method.GET); expected.AddUrlSegment("previousNodeId", id); // ACT IRestRequest actual = builder.GetPreviousVersion(id); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Encrypted_RunSync_Success() { // ARRANGE Node node = FactoryNode.Node; node.Size = 1024; byte[] expected = new byte[node.Size.Value]; new Random().NextBytes(expected); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); Stream s = new MemoryStream(); FileDownloadCallbackMock callback = new FileDownloadCallbackMock(); EncFileDownload f = new EncFileDownload(c, "id1", node, s, FactoryUser.UserPrivateKey); f.AddFileDownloadCallback(callback); Mock.Arrange(() => c.Builder.PostFileDownload(Arg.AnyLong)).Returns(FactoryRestSharp.PostFileDownloadMock(2354)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiDownloadToken>(Arg.IsAny <IRestRequest>(), RequestType.PostDownloadToken, 0)) .Returns(FactoryNode.ApiDownloadToken).Occurs(1); Mock.Arrange(() => c.NodesImpl.GetEncryptedFileKey(Arg.AnyLong)).Returns(FactoryFile.EncryptedFileKey).Occurs(1); FileDecryptionCipher cipher = Mock.Create <FileDecryptionCipher>(); Mock.Arrange(() => Crypto.Sdk.Crypto.DecryptFileKey(Arg.IsAny <EncryptedFileKey>(), Arg.IsAny <UserPrivateKey>(), Arg.AnyString)) .Returns(FactoryFile.PlainFileKey).Occurs(1); Mock.Arrange(() => Crypto.Sdk.Crypto.CreateFileDecryptionCipher(Arg.IsAny <PlainFileKey>())).Returns(cipher).Occurs(1); Mock.NonPublic.Arrange <byte[]>(f, "DownloadChunk", ArgExpr.IsAny <Uri>(), ArgExpr.IsAny <long>(), ArgExpr.IsAny <long>()).Returns(expected); Mock.Arrange(() => cipher.ProcessBytes(Arg.IsAny <EncryptedDataContainer>())).Returns(new PlainDataContainer(expected)).OccursAtLeast(1); Mock.Arrange(() => cipher.DoFinal(Arg.IsAny <EncryptedDataContainer>())).Returns(new PlainDataContainer(new byte[0])).Occurs(1); Mock.Arrange(() => callback.OnStarted(Arg.AnyString)).Occurs(1); Mock.Arrange(() => callback.OnRunning(Arg.AnyString, Arg.AnyLong, Arg.AnyLong)).OccursAtLeast(1); Mock.Arrange(() => callback.OnFinished(Arg.AnyString)).Occurs(1); // ACT f.RunSync(); s.Position = 0; byte[] actual = new byte[expected.Length]; s.Read(actual, 0, expected.Length); s.Close(); // ASSERT Assert.Equal(expected, actual); Mock.Assert(() => Crypto.Sdk.Crypto.DecryptFileKey(Arg.IsAny <EncryptedFileKey>(), Arg.IsAny <UserPrivateKey>(), Arg.AnyString)); Mock.Assert(() => Crypto.Sdk.Crypto.CreateFileDecryptionCipher(Arg.IsAny <PlainFileKey>())); Mock.Assert(callback); Mock.Assert(cipher); Mock.Assert(c.Builder); Mock.Assert(c.Executor); Mock.Assert(c.NodesImpl); }
public void DeleteUserKeyPair() { // ARRANGE IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); DracoonAccountImpl a = new DracoonAccountImpl(c); Mock.Arrange(() => c.Builder.DeleteUserKeyPair()).Returns(FactoryRestSharp.DeleteUserKeyPairMock()).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.DeleteUserKeyPair, 0)).DoNothing().Occurs(1); // ACT a.DeleteUserKeyPair(); // ASSERT Mock.Assert(c.Builder); Mock.Assert(c.Executor); }
public void Nodes_PostMoveNodes() { // ARRANGE long id = 8790; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiPostMoveNodes, Method.POST); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryNode.ApiMoveNodesRequest), ParameterType.RequestBody); expected.AddUrlSegment("nodeId", id); // ACT IRestRequest actual = builder.PostMoveNodes(id, FactoryNode.ApiMoveNodesRequest); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void ValidateTokenValidity() { // ARRANGE IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); DracoonAccountImpl a = new DracoonAccountImpl(c); Mock.Arrange(() => c.Builder.GetAuthenticatedPing()).Returns(FactoryRestSharp.GetAuthenticatedPingMock()).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.GetAuthenticatedPing, 0)).DoNothing().Occurs(1); // ACT a.ValidateTokenValidity(); // ASSERT Mock.Assert(c.Builder); Mock.Assert(c.Executor); }
public void Nodes_PutFile() { // ARRANGE long id = 567; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiPutFileUpdate, Method.PUT); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryFile.ApiUpdateFileRequest), ParameterType.RequestBody); expected.AddUrlSegment("fileId", id); // ACT IRestRequest actual = builder.PutFile(id, FactoryFile.ApiUpdateFileRequest); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Shares_GetUploadShares_NoFilter_NoSort() { // ARRANGE long offset = 4, limit = 5; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetUploadShares, Method.GET); expected.AddQueryParameter("offset", offset.ToString()); expected.AddQueryParameter("limit", limit.ToString()); // ACT IRestRequest actual = builder.GetUploadShares(offset, limit); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void DoSyncApiCall_Fail() { // ARRANGE RestResponse response = FactoryRestSharp.RestResponse; IRestRequest request = FactoryRestSharp.GetServerVersionMock(); Mock.Arrange(() => DracoonClient.HttpConfig).Returns(new DracoonHttpConfig()); Mock.Arrange(() => new RestClient().Execute(request)).IgnoreInstance().Returns(response); Mock.Arrange(() => DracoonErrorParser.ParseError(response, RequestType.GetServerVersion)).Throws(new DracoonApiException()); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); IRequestExecutor exec = new DracoonRequestExecutor(FactoryClients.OAuthMock, c); // ACT - ASSERT Assert.Throws <DracoonApiException>(() => exec.DoSyncApiCall <ApiServerVersion>(request, RequestType.GetServerVersion)); }
public void Nodes_PutCompleteS3FileUpload() { // ARRANGE string uploadId = "GH6D5"; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiPutCompleteS3Upload, Method.PUT); expected.AddParameter("application/json", JsonConvert.SerializeObject(FactoryFile.ApiCompleteS3FileUpload), ParameterType.RequestBody); expected.AddUrlSegment("uploadId", uploadId); // ACT IRestRequest actual = builder.PutCompleteS3FileUpload("GH6D5", FactoryFile.ApiCompleteS3FileUpload); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Resources_GetUserAvatar() { // ARRANGE string avatarUuid = "JG7DM2DZ6"; long userId = 167890; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithoutAuth(ApiConfig.ApiResourcesGetAvatar, Method.GET); expected.AddUrlSegment("userId", userId); expected.AddUrlSegment("uuid", avatarUuid); // ACT IRestRequest actual = builder.GetUserAvatar(userId, avatarUuid); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void OAuth_PostOAuthRefresh() { // ARRANGE string clientId = "GS36SG653FDAY", clientSecret = "H7BD5D6G56", grand = "pw", refreshToken = "things"; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithoutAuth(OAuthConfig.OAuthPostRefreshToken, Method.POST); expected.AddHeader("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret))); expected.AddParameter("grant_type", grand, ParameterType.GetOrPost); expected.AddParameter("refresh_token", refreshToken, ParameterType.GetOrPost); // ACT IRestRequest actual = builder.PostOAuthRefresh(clientId, clientSecret, grand, refreshToken); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void Nodes_GetRecycleBin() { // ARRANGE long id = 567, offset = 4, limit = 5; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetRecycleBin, Method.GET); expected.AddUrlSegment("roomId", id); expected.AddQueryParameter("offset", offset.ToString()); expected.AddQueryParameter("limit", limit.ToString()); // ACT IRestRequest actual = builder.GetRecycleBin(id, offset, limit); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void DeleteUploadShare() { // ARRANGE IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); DracoonSharesImpl s = new DracoonSharesImpl(c); Mock.Arrange(() => Arg.AnyLong.MustPositive(Arg.AnyString)).DoNothing().Occurs(1); Mock.Arrange(() => c.Builder.DeleteUploadShare(Arg.AnyLong)).Returns(FactoryRestSharp.DeleteUploadShareMock(2134)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.DeleteUploadShare, 0)).DoNothing().Occurs(1); // ACT s.DeleteUploadShare(5); // ASSERT Mock.Assert(() => Arg.AnyLong.MustPositive(Arg.AnyString)); Mock.Assert(c.Builder); Mock.Assert(c.Executor); }
public void Nodes_GetMissingFileKeys() { // ARRANGE long id = 346; int offset = 2, limit = 3; IRequestBuilder builder = new DracoonRequestBuilder(FactoryClients.OAuthMock); RestRequest expected = FactoryRestSharp.RestRequestWithAuth(ApiConfig.ApiGetMissingFileKeys, Method.GET); expected.AddQueryParameter("fileId", id.ToString()); expected.AddQueryParameter("offset", offset.ToString()); expected.AddQueryParameter("limit", limit.ToString()); // ACT IRestRequest actual = builder.GetMissingFileKeys(id, limit, offset); // ASSERT Assert.Equal(expected, actual, new RestRequestComparer()); }
public void GetVersion() { // ARRANGE string expected = "4.13.0"; IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true); DracoonServerImpl s = new DracoonServerImpl(c); Mock.Arrange(() => c.Builder.GetServerVersion()).Returns(FactoryRestSharp.RestRequestWithoutAuth(ApiConfig.ApiGetServerVersion, Method.GET)).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiServerVersion>(Arg.IsAny <IRestRequest>(), RequestType.GetServerVersion, 0)).Returns(FactoryServer.ApiServerVersionMock).Occurs(1); // ACT string actual = s.GetVersion(); // ASSERT Assert.Equal(expected, actual); Mock.Assert(c.Builder); Mock.Assert(c.Executor); }