public async Task <IHttpActionResult> Post(EBookJob 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[] TestEbookAPI(string format, string testDocumentsName)
        {
            var apiFileContent = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First();
            var ftpFilePath    = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Key).First();
            var fileExtension  = testDocumentsName.Substring(testDocumentsName.LastIndexOf(".") + 1);

            EbookFormat ef = (EbookFormat)Enum.Parse(typeof(EbookFormat), format.ToLowerInvariant());

            switch (format)
            {
            case "EPUB": ef = EbookFormat.epub; break;

            case "MOBI": ef = EbookFormat.mobi; break;

            case "RTF": ef = EbookFormat.rtf; break;

            case "TXT": ef = EbookFormat.txt; break;

            default: break;
            }
            var ebookj = new EBookJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = fileExtension,
                FileName        = "testEbook",
                MimeType        = "plain/text",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                EbookFormat     = ef
            };

            var apiTask = Task.Run(() => WebAPICall(ebookj));

            byte[] apiRes = apiTask.Result;

            return(apiRes);
        }
Ejemplo n.º 3
0
        public async Task TestPostEBook()
        {
            //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();

            EBookJob acj = new EBookJob()
            {
                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]
            };
            EBookJob acj2 = new EBookJob()
            {
                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]
            };
            var jobs = new List <Job> {
                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 EBookRepository(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 EBookController(repo);

            serviceController.Request = request;
            //call
            await serviceController.Post(acj);

            //test
            mockJobs.Verify(m => m.Add(It.IsAny <Job>()), Times.Once());
            mockContext.Verify(m => m.SaveChanges(), Times.Once());
        }
        public void TestEbook()
        {
            //setup
            resultPath = InputSourceRepository.GetTestResultDirectory() + @"\Ebook-" + format;
            Directory.CreateDirectory(resultPath);
            InputSourceRepository isr = new InputSourceRepository();
            string testDocumentsPath  = "";
            Job    ebookj             = null;

            if (format.Equals("EPUB3WMO"))
            {
                testDocumentsPath = InputSourceRepository.GetTestDirectory() + "A1.Daisy.docx";
                File.Copy(testDocumentsPath + "", daisyTest);
                ebookj = new DaisyJob()
                {
                    Id              = Guid.NewGuid(),
                    FileContent     = File.ReadAllBytes(daisyTest),
                    UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                    FileExtension   = ".txt",
                    FileName        = "testDaisyEPUB3WMO",
                    MimeType        = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                    Status          = JobStatus.Started,
                    SubmitTime      = DateTime.Now,
                    DownloadCounter = 0,
                    InputFileHash   = new byte[8],
                    DaisyOutput     = DaisyOutput.Epub3WMO
                };
            }
            else
            {
                testDocumentsPath = InputSourceRepository.GetTestDirectory() + "A6testPDF.pdf";
                File.Copy(testDocumentsPath + "", ebookTest);
                EbookFormat ef = EbookFormat.mobi;
                if (format.Equals("EPUB"))
                {
                    ef = EbookFormat.epub;
                }
                else
                {
                    ef = EbookFormat.mobi;
                }
                ebookj = new EBookJob()
                {
                    Id              = Guid.NewGuid(),
                    FileContent     = File.ReadAllBytes(ebookTest),
                    UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                    FileExtension   = ".txt",
                    FileName        = "testEbook",
                    MimeType        = "plaint/text",
                    Status          = JobStatus.Started,
                    SubmitTime      = DateTime.Now,
                    DownloadCounter = 0,
                    InputFileHash   = new byte[8],
                    EbookFormat     = ef
                };
            }
            string        destFile = Guid.NewGuid().ToString() + ".txt";
            SensusRequest sr       = new SensusRequest()
            {
                Process         = "E-book",
                SubProcess      = format,
                Option          = "", //normal = none large xlarge huge
                Language        = "",
                Gender          = "",
                Age             = "",
                Prefix          = "",
                RequesterID     = "sensus-test",
                FTPServer       = "2.109.50.19",
                FTPUser         = "******",
                FTPPassword     = "******",
                SourcePath      = ebookTest,
                DestinationFile = destFile
            };
            //act
            var apiTask = Task.Run(() => WebAPICall(ebookj));

            //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(apiRes);
            //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

            File.WriteAllBytes(resultPath + @"\api.epub", apiRes);
            //File.WriteAllBytes(resultPath + @"\ftp.epub", ftpRes);

            //NUnit.Framework.Assert.AreEqual(ftpRes, apiRes);
            //NUnit.Framework.Assert.AreEqual(expected, result);
        }