public async Task <byte[]> WebAPICall(AccessibleConversionJob accj) { //return Encoding.ASCII.GetBytes("test"); byte[] byteRes = null; AccessibleConversionRepository accJobRepo = new AccessibleConversionRepository(); Guid jobID = await accJobRepo.SubmitWorkItem(accj); while (accJobRepo.GetWorkStatus(jobID) == 2) { //wait await Task.Delay(2000); } if (accJobRepo.GetWorkStatus(jobID) == 1) { //sucess FileResult result = accJobRepo.GetResultContents(jobID); byteRes = result.getFileContents(); } else { //fail throw new Exception("Task with job ID: " + jobID + " failed"); } return(byteRes); }
public async Task <IHttpActionResult> Post(AccessibleConversionJob job) { try { Guid userId = RoboBrailleProcessor.getUserIdFromJob(this.Request.Headers.Authorization.Parameter); job.UserId = userId; Guid jobId = await _repository.SubmitWorkItem(job); return(Ok(jobId.ToString("D"))); } catch (Exception e) { var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(string.Format("Internal error: {0}", e)), ReasonPhrase = e.Message }; throw new HttpResponseException(resp); } }
public byte[] TestAccessibilityAPI(string format, string inputFileName) { //setup var of = (OutputFileFormatEnum)Enum.Parse(typeof(OutputFileFormatEnum), Convert.ToString("OFF_DOCX")); var extension = ".pdf"; var mime = "application/pdf"; if (inputFileName.EndsWith("png")) { extension = ".png"; mime = "image/png"; } if (inputFileName.EndsWith("jpg")) { extension = ".jpg"; mime = "image/jpeg"; } byte[] apiFileContent = inputFiles.Where(x => x.Key.EndsWith(inputFileName)).Select(x => x.Value).First(); switch (format) { case "doc": of = OutputFileFormatEnum.OFF_MSWord; break; case "docx": of = OutputFileFormatEnum.OFF_DOCX; break; case "rtf": of = OutputFileFormatEnum.OFF_RTF; break; case "pdf": of = OutputFileFormatEnum.OFF_PDF; break; case "pdfa": of = OutputFileFormatEnum.OFF_PDFA; break; case "xls": of = OutputFileFormatEnum.OFF_MSExcel; break; case "xlsx": of = OutputFileFormatEnum.OFF_XLSX; break; case "csv": of = OutputFileFormatEnum.OFF_CSV; break; case "txt": of = OutputFileFormatEnum.OFF_Text; break; case "htm": of = OutputFileFormatEnum.OFF_HTML; break; default: of = OutputFileFormatEnum.OFF_Text; break; } AccessibleConversionJob accj = new AccessibleConversionJob() { Id = Guid.NewGuid(), FileContent = apiFileContent, UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = extension, FileName = "testAccessibility", MimeType = mime, Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = RoboBrailleProcessor.GetMD5Hash(apiFileContent), TargetDocumentFormat = of }; var apiTask = Task.Run(() => WebAPICall(accj)); return(apiTask.Result); }
public async Task TestPostAccessibleConversion() { //init var mockJobs = new Mock <DbSet <Job> >(); var mockServiceUsers = new Mock <DbSet <ServiceUser> >(); var mockContext = new Mock <RoboBrailleDataContext>(); // arrange var users = new List <ServiceUser> { new ServiceUser { EmailAddress = "*****@*****.**", UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), ApiKey = Encoding.UTF8.GetBytes("7b76ae41-def3-e411-8030-0c8bfd2336cd"), FromDate = new DateTime(2015, 1, 1), ToDate = new DateTime(2020, 1, 1), UserName = "******", Jobs = null } }.AsQueryable(); AccessibleConversionJob acj = new AccessibleConversionJob() { Id = Guid.NewGuid(), FileContent = File.ReadAllBytes(IOController.GetInputFiles().Where(x => x.Key.EndsWith("A6.testPDF.pdf")).Select(x => x.Key).First()), TargetDocumentFormat = OutputFileFormatEnum.OFF_DOCX, UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".pdf", FileName = "test", MimeType = "application/pdf", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = new byte[8] }; AccessibleConversionJob acj2 = new AccessibleConversionJob() { Id = Guid.NewGuid(), FileContent = File.ReadAllBytes(IOController.GetInputFiles().Where(x => x.Key.EndsWith("A6.testPDF.pdf")).Select(x => x.Key).First()), TargetDocumentFormat = OutputFileFormatEnum.OFF_PDF, UserId = Guid.Parse("d2b87532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".txt", FileName = "test2", MimeType = "text/plain", Status = JobStatus.Done, SubmitTime = DateTime.Now, DownloadCounter = 2, InputFileHash = new byte[2] }; var jobs = new List <AccessibleConversionJob> { acj2 }.AsQueryable(); mockJobs.As <IDbAsyncEnumerable <Job> >().Setup(m => m.GetAsyncEnumerator()).Returns(new TestDbAsyncEnumerator <Job>(jobs.GetEnumerator())); mockJobs.As <IQueryable <Job> >().Setup(m => m.Provider).Returns(new TestDbAsyncQueryProvider <Job>(jobs.Provider)); mockJobs.As <IQueryable <Job> >().Setup(m => m.Expression).Returns(jobs.Expression); mockJobs.As <IQueryable <Job> >().Setup(m => m.ElementType).Returns(jobs.ElementType); mockJobs.As <IQueryable <Job> >().Setup(m => m.GetEnumerator()).Returns(jobs.GetEnumerator()); mockServiceUsers.As <IDbAsyncEnumerable <ServiceUser> >().Setup(m => m.GetAsyncEnumerator()).Returns(new TestDbAsyncEnumerator <ServiceUser>(users.GetEnumerator())); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.Provider).Returns(new TestDbAsyncQueryProvider <ServiceUser>(users.Provider)); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.Expression).Returns(users.Expression); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.ElementType).Returns(users.ElementType); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.GetEnumerator()).Returns(users.GetEnumerator()); mockContext.Setup(m => m.Jobs).Returns(mockJobs.Object); mockContext.Setup(m => m.ServiceUsers).Returns(mockServiceUsers.Object); var repo = new AccessibleConversionRepository(mockContext.Object); var request = new HttpRequestMessage(); request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "Hawk id=\"d2b97532-e8c5-e411-8270-f0def103cfd0\", ts=\"1470657024\", nonce=\"VkcMGB\", mac=\"hXW+BLRoqwlUaQZQtpPToOWnVAh5KbAXGGT5f8dLMVk=\""); var serviceController = new AccessibleConversionController(repo) { Request = request }; //call var res = serviceController.Post(acj).Result; //test mockJobs.Verify(m => m.Add(It.IsAny <Job>()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Exactly(1)); //twice if it is synced //mockContext.Verify(m => m.SaveChanges(), Times.Exactly(2)); }
//[Test] public void TestAccessibility() { //setup resultPath = InputSourceRepository.GetTestResultDirectory() + @"\Accessibility-" + format; InputSourceRepository isr = new InputSourceRepository(); var of = (OutputFileFormatEnum)Enum.Parse(typeof(OutputFileFormatEnum), Convert.ToString("OFF_DOCX")); string sourceFile = "A6testPDF.pdf"; switch (format) { case "doc": of = OutputFileFormatEnum.OFF_MSWord; sourceFile = "A6testPDF.pdf"; break; case "docx": of = OutputFileFormatEnum.OFF_DOCX; sourceFile = "A6testPDF.pdf"; break; case "rtf": of = OutputFileFormatEnum.OFF_RTF; sourceFile = "A2.testANSI.txt"; break; case "pdf": of = OutputFileFormatEnum.OFF_PDFA; sourceFile = "A13.testWordSimplified.docx"; break; case "xls": of = OutputFileFormatEnum.OFF_MSExcel; //? break; case "xlsx": of = OutputFileFormatEnum.OFF_XLSX; //? break; case "csv": of = OutputFileFormatEnum.OFF_CSV; //? break; case "txt": of = OutputFileFormatEnum.OFF_Text; sourceFile = "A5.testOcr.png"; break; case "htm": of = OutputFileFormatEnum.OFF_HTML; //? break; default: of = OutputFileFormatEnum.OFF_Text; break; } AccessibleConversionJob accj = new AccessibleConversionJob() { Id = Guid.NewGuid(), FileContent = File.ReadAllBytes(accessibilityTest), UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".txt", FileName = "testAccessibility", MimeType = "plaint/text", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = new byte[8], TargetDocumentFormat = of }; string destFile = Guid.NewGuid().ToString() + ".txt"; SensusRequest sr = new SensusRequest() { Process = "Accessibility", Option = format.ToLowerInvariant(), Language = "", Gender = "", Age = "", Prefix = "", RequesterID = "sensus-test", FTPServer = "2.109.50.19", FTPUser = "******", FTPPassword = "******", SourcePath = accessibilityTest, DestinationFile = destFile }; //act var apiTask = Task.Run(() => WebAPICall(accj)); var ftpTask = Task.Run(() => FTPCall(sr)); Task.WaitAll(new Task[] { apiTask, ftpTask }); byte[] apiRes = apiTask.Result; byte[] ftpRes = ftpTask.Result; //assert NUnit.Framework.Assert.IsNotNull(ftpRes); //string expected = RoboBrailleProcessor.GetEncodingByCountryCode((Language)Enum.Parse(typeof(Language), language, true)).GetString(ftpRes).Trim(); //string result = Encoding.UTF8.GetString(apiRes).Trim(); //byte assertion fails because the files are not the same encoding NUnit.Framework.Assert.AreEqual(ftpRes, apiRes); //NUnit.Framework.Assert.AreEqual(expected, result); }