public async Task <byte[]> WebAPICall(DaisyJob dj) { //return Encoding.ASCII.GetBytes("test"); byte[] byteRes = null; DaisyRepository daisyJobRepo = new DaisyRepository(); Guid jobID = await daisyJobRepo.SubmitWorkItem(dj); while (daisyJobRepo.GetWorkStatus(jobID) == 2) { //wait await Task.Delay(200); } if (daisyJobRepo.GetWorkStatus(jobID) == 1) { //sucess FileResult result = daisyJobRepo.GetResultContents(jobID); byteRes = result.getFileContents(); } else { //fail throw new Exception("Task with job ID: " + jobID + " failed"); } return(byteRes); }
public void TestDaisyDocx() { //arrange var testDocumentsName = "A1.Daisy.docx"; var apiFileContent = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First(); DaisyJob daisyj = new DaisyJob() { Id = Guid.NewGuid(), FileContent = apiFileContent, UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".docx", FileName = "testDaisy", MimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = RoboBrailleProcessor.GetMD5Hash(apiFileContent), DaisyOutput = DaisyOutput.TalkingBook }; //act var apiTask = Task.Run(() => WebAPICall(daisyj)); byte[] apiRes = apiTask.Result; //assert NUnit.Framework.Assert.IsNotEmpty(apiRes); IOController.SaveTestResultFile(apiRes, "Daisy-" + timestamp + "-API.zip"); }
public void TestEbookDocxEpub3() { RabbitMQCluster.ClusterConnect(); var testDocumentsName = "A1.Daisy.docx"; var apiFileContent = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First(); var ebookj = new DaisyJob() { Id = Guid.NewGuid(), FileContent = apiFileContent, UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".docx", FileName = "testDaisyEPUB3WMO", MimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = RoboBrailleProcessor.GetMD5Hash(apiFileContent), DaisyOutput = DaisyOutput.Epub3WMO }; var apiTask = Task.Run(() => WebAPICall(ebookj)); byte[] apiRes = apiTask.Result; //assert NUnit.Framework.Assert.IsNotEmpty(apiRes); IOController.SaveTestResultFile(apiRes, "Ebook-" + timestamp + "-EPUB3WMO-API.epub"); RabbitMQCluster.ClusterDisconnect(); }
public async Task <IHttpActionResult> Post(DaisyJob 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 async Task TestPostDaisy() { //init var mockJobs = new Mock <DbSet <Job> >(); var mockServiceUsers = new Mock <DbSet <ServiceUser> >(); var mockContext = new Mock <RoboBrailleDataContext>(); var mockRpcCall = new Mock <IDaisyRpcCall>(); // 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(); DaisyJob dj = new DaisyJob() { Id = Guid.NewGuid(), FileContent = new byte[512], 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], DaisyOutput = DaisyOutput.Epub3WMO }; DaisyJob dj2 = new DaisyJob() { Id = Guid.NewGuid(), FileContent = new byte[256], 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], DaisyOutput = DaisyOutput.TalkingBook }; var jobs = new List <DaisyJob> { dj2 }.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); mockRpcCall.Setup(m => m.Call(new byte[512], true, new Guid().ToString())).Returns(new byte[512]); var repo = new DaisyRepository(mockContext.Object, mockRpcCall.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 DaisyController(repo) { Request = request }; //call await serviceController.Post(dj); //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)); mockRpcCall.Verify(m => m.Call(It.IsAny <byte[]>(), It.IsAny <bool>(), It.IsAny <string>()), Times.Once()); }
public void TestDaisy() { //setup resultPath = InputSourceRepository.GetTestResultDirectory() + @"\Daisy-" + format; Directory.CreateDirectory(resultPath); InputSourceRepository isr = new InputSourceRepository(); string testDocumentsPath = InputSourceRepository.GetTestDirectory() + "A1.Daisy.docx"; File.Copy(testDocumentsPath + "", daisyTest); DaisyJob daisyj = new DaisyJob() { Id = Guid.NewGuid(), FileContent = File.ReadAllBytes(daisyTest), UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = ".txt", FileName = "testDaisy", MimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = new byte[8], DaisyOutput = DaisyOutput.TalkingBook }; string destFile = Guid.NewGuid().ToString() + ".txt"; SensusRequest sr = new SensusRequest() { Process = "DAISY", SubProcess = format, Option = "", Language = "", Gender = "", Age = "", Prefix = "", RequesterID = "sensus-test", FTPServer = "2.109.50.19", FTPUser = "******", FTPPassword = "******", SourcePath = daisyTest, DestinationFile = destFile }; //act var apiTask = Task.Run(() => WebAPICall(daisyj)); //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); NUnit.Framework.Assert.IsNotNull(apiRes); //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 File.WriteAllBytes(resultPath + @"\api.zip", apiRes); //File.WriteAllBytes(resultPath + @"\ftp.txt", ftpRes); //NUnit.Framework.Assert.AreEqual(ftpRes, apiRes); //NUnit.Framework.Assert.AreEqual(expected, result); }