internal void TestSingleCodeWithIRestResponse() { // ARRANGE IRestResponse response = FactoryRestSharp.RestResponse; try { // ACT DracoonErrorParser.ParseError(response, RequestType.GetAuthenticatedPing); } catch (DracoonApiException dae) { // ASSERT Assert.Equal(1301, dae.ErrorCode.Code); } }
public void ExecuteWebClientDownload_ProtocolError_Fail() { // ARRANGE Uri uri = new Uri("https://dracoon.team"); WebException we = new WebException("Test", WebExceptionStatus.ProtocolError); Mock.Arrange(() => new WebClient().DownloadDataTaskAsync(uri)).IgnoreInstance().Returns(Mock.Create <Task <byte[]> >()); Mock.Arrange(() => Mock.Create <Task <byte[]> >().Result).IgnoreInstance().Throws(new AggregateException(we)); Mock.Arrange(() => DracoonErrorParser.ParseError(we, RequestType.GetDownloadChunk)) .Throws(new DracoonApiException(DracoonApiCode.SERVER_UNKNOWN_ERROR)); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); IRequestExecutor exec = new DracoonRequestExecutor(FactoryClients.OAuthMock, c); // ACT - ASSERT Assert.Throws <DracoonApiException>(() => exec.ExecuteWebClientDownload(new WebClient(), uri, RequestType.GetDownloadChunk)); }
internal void TestUnknownCodes(RequestType type, int apiCode, string[] headerNames, string[] headerValues, int expectedSdkErrorCode) { // ARRANGE HttpWebResponse r = CreateMockedHttpWebResponse(407, GenerateJsonError(407, apiCode), headerNames, headerValues); WebException we = new WebException("Some message!", null, WebExceptionStatus.ProtocolError, r); try { // ACT DracoonErrorParser.ParseError(we, type); } catch (DracoonApiException dae) { // ASSERT Assert.Equal(expectedSdkErrorCode, dae.ErrorCode.Code); } finally { r.Close(); } }
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 ExecuteWebClientChunkUpload_ConnectFailure_Retry_Sync_Fail() { // ARRANGE byte[] chunk = Encoding.UTF8.GetBytes("OK"); Uri uri = new Uri("https://dracoon.team"); WebException we = new WebException("Test", WebExceptionStatus.ConnectFailure); Mock.Arrange(() => new WebClient().UploadDataTaskAsync(uri, "POST", chunk)).IgnoreInstance().Returns(Mock.Create <Task <byte[]> >()); Mock.Arrange(() => Mock.Create <Task <byte[]> >().Result).IgnoreInstance().Throws(new AggregateException(we)); Mock.Arrange(() => DracoonErrorParser.ParseError(we, RequestType.PostUploadChunk)) .Throws(new DracoonApiException(DracoonApiCode.SERVER_UNKNOWN_ERROR)); Mock.Arrange(() => DracoonClient.HttpConfig).Returns(new DracoonHttpConfig(true)); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); IRequestExecutor exec = new DracoonRequestExecutor(FactoryClients.OAuthMock, c); // ACT - ASSERT Assert.Throws <DracoonApiException>(() => exec.ExecuteWebClientChunkUpload(new WebClient(), uri, chunk, RequestType.PostUploadChunk)); }
public void DoSyncApiCall_Fail_Retry() { // ARRANGE RestResponse response = FactoryRestSharp.RestResponse; IRestRequest request = FactoryRestSharp.GetAuthenticatedPingMock(); Mock.Arrange(() => DracoonClient.HttpConfig).Returns(new DracoonHttpConfig()); Mock.Arrange(() => new RestClient().Execute(request)).IgnoreInstance().Returns(response); Mock.Arrange(() => FactoryClients.OAuthMock.RefreshAccessToken()).IgnoreInstance().DoNothing(); Mock.Arrange(() => FactoryClients.OAuthMock.BuildAuthString()).IgnoreInstance().Returns("AuthTest"); Mock.Arrange(() => DracoonErrorParser.ParseError(response, RequestType.GetAuthenticatedPing)) .Throws(new DracoonApiException(DracoonApiCode.AUTH_UNAUTHORIZED)); IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(); IRequestExecutor exec = new DracoonRequestExecutor(FactoryClients.OAuthMock, c); // ACT - ASSERT Assert.Throws <DracoonApiException>(() => exec.DoSyncApiCall <VoidResponse>(request, RequestType.GetAuthenticatedPing)); }
internal void TestCustomErrorCodesIRestRequest() { // ARRANGE IRestResponse response = FactoryRestSharp.RestResponse; response.Headers.Add(new Parameter() { Name = "testHeader", Value = "1234" }); response.Headers.Add(new Parameter() { Name = "X-Forbidden", Value = "403" }); try { // ACT DracoonErrorParser.ParseError(response, RequestType.GetAuthenticatedPing); } catch (DracoonApiException dae) { // ASSERT Assert.Equal(5090, dae.ErrorCode.Code); } }
public void RunSync_S3_PollingError() { // ARRANGE ApiS3Status resultStatus = FactoryFile.ApiS3Status; resultStatus.Node = null; resultStatus.Status = "error"; resultStatus.ErrorInfo = null; 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); ApiGeneralSettings generalSettings = FactoryServerSettings.ApiGeneralSettings; generalSettings.UseS3Storage = true; 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.PutCompleteS3FileUpload(Arg.AnyString, Arg.IsAny <ApiCompleteFileUpload>())) .Returns(FactoryRestSharp.PutCompleteFileUploadMock("path")).Occurs(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.PutCompleteS3Upload, 0)).DoNothing() .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(generalSettings).Occurs(1); Mock.Arrange(() => c.Builder.PostGetS3Urls(Arg.AnyString, Arg.IsAny <ApiGetS3Urls>())).Returns(FactoryRestSharp.PostGetS3UrlsMock()) .OccursAtLeast(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiS3Urls>(Arg.IsAny <IRestRequest>(), RequestType.PostGetS3Urls, 0)) .Returns(FactoryFile.ApiS3Urls).OccursAtLeast(1); Mock.Arrange(() => c.Builder.GetS3Status(Arg.AnyString)).Returns(FactoryRestSharp.GetS3StatusMock).OccursAtLeast(1); Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiS3Status>(Arg.IsAny <IRestRequest>(), RequestType.GetS3Status, 0)).Returns(resultStatus) .OccursAtLeast(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(() => FileMapper.ToApiCompleteFileUpload(Arg.IsAny <FileUploadRequest>())).Returns(FactoryFile.ApiCompleteFileUpload); 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.PutUploadS3Chunk, 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.ProvideS3ChunkUploadWebClient()).Returns(wc); Mock.Arrange(() => JsonConvert.DeserializeObject <ApiUploadChunkResult>(Arg.AnyString)).Returns(FactoryFile.ApiUploadChunkResult); Mock.Arrange(() => DracoonErrorParser.ParseError(Arg.IsAny <ApiErrorResponse>(), RequestType.GetS3Status)).DoNothing(); Mock.Arrange(() => callback.OnStarted(Arg.AnyString)).Occurs(1); Mock.Arrange(() => callback.OnRunning(Arg.AnyString, Arg.AnyLong, Arg.AnyLong)).OccursAtLeast(1); Mock.Arrange(() => callback.OnFailed(Arg.AnyString, Arg.IsAny <DracoonException>())).Occurs(1); // ACT Assert.Throws <DracoonApiException>(() => f.RunSync()); s.Close(); // ASSERT Mock.Assert(callback); Mock.Assert(c.Builder); Mock.Assert(c.Executor); }