Esempio n. 1
0
        public async void Should_UploadStart_Success_200_Pdf()
        {
            //var idGenerator = new Mock<IUploadIdGenerator>();
            //idGenerator.Setup(x => x.UploadSessionId()).Returns("test");

            var request        = TestFactory.CreateHttpRequestWithDataStream($"Data/Sample 1.pdf");
            var uploadDir      = _app.Repository.GetBlobDirectory(BlobNames.UploadDirectory);
            var uploadTmpTable = _app.Repository.GetTable(TableNames.CommUpload);

            // call Azure Function
            var response = (ObjectResult)await UploadFunctions.Start(request, "Sample 1.pdf",
                                                                     uploadDir,
                                                                     uploadTmpTable,
                                                                     new IdGenerator(), // idGenerator.Object,
                                                                     _app.App,
                                                                     _logger);

            var upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.Null(upload.ManifestFile);
            Assert.Contains("Sample 1.pdf", upload.LastUploadedFile);

            _output.WriteLine(upload.ToJson(Formatting.Indented));
        }
Esempio n. 2
0
        public async void Should_UploadContinue_Fail_400_With_No_Filename()
        {
            var request        = TestFactory.CreateHttpRequestWithDataStream($"Data/Sample 1.pdf");
            var uploadDir      = _app.Repository.GetBlobDirectory(BlobNames.UploadDirectory + "/test");
            var uploadTmpTable = _app.Repository.GetTable(TableNames.CommUpload);

            var tmpUploadEntity = new TableEntityAdapter <UploadSession>(
                new UploadSession {
                SessionId = "test"
            }, "test", new IdGenerator().UploadSessionId());

            // call Azure Function
            var response = (ObjectResult)await UploadFunctions.Continue(request,
                                                                        "test",
                                                                        null,
                                                                        uploadDir,
                                                                        tmpUploadEntity,
                                                                        uploadTmpTable,
                                                                        _logger);

            var upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode);
            Assert.Null(upload.ManifestFile);
            Assert.Null(upload.LastUploadedFile);
            Assert.Equal("A filename is required. (Parameter 'filename')", upload.Errors);

            _output.WriteLine(upload.ToJson(Formatting.Indented));
        }
Esempio n. 3
0
        public async void Should_UploadEnd_Success_200_Pdf_With_No_Filename()
        {
            var request        = TestFactory.CreateHttpRequestWithDataStream("Data/Sample 2.pdf");
            var uploadDir      = _app.Repository.GetBlobDirectory(BlobNames.UploadDirectory + "/test");
            var uploadTmpTable = _app.Repository.GetTable(TableNames.CommUpload);
            var queue          = _app.Repository.GetQueue(QueueNames.CommProcess);

            var tmpUploadEntity = new TableEntityAdapter <UploadSession>(
                new UploadSession {
                SessionId = "test"
            }, "test", new IdGenerator().UploadSessionId());

            // call Azure Function
            var response = (ObjectResult)await UploadFunctions.End(request,
                                                                   "test",
                                                                   null,
                                                                   uploadDir,
                                                                   tmpUploadEntity,
                                                                   uploadTmpTable,
                                                                   queue,
                                                                   _app.App,
                                                                   _logger);

            var upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.Null(upload.ManifestFile);
            Assert.NotNull(upload.UploadEnd);
            Assert.Null(upload.LastUploadedFile);

            _output.WriteLine(upload.ToJson(Formatting.Indented));
        }
Esempio n. 4
0
        public async void UploadMockTest()
        {
            var repos     = new MockRepository(MockBehavior.Strict);
            var container = repos.Create <CloudBlobContainer>(new Uri("https://localhost/"));

            var storageUri = repos.Create <StorageUri>(new Uri("https://localhost/"));

            var blob = repos.Create <CloudBlockBlob>(new Uri("https://localhost/"));

            blob.Setup(x => x.UploadFromStreamAsync(It.IsAny <Stream>())).Returns(Task.FromResult(true));

            var cloudBlobDirectory = repos.Create <CloudBlobDirectory>(storageUri, "", container);

            cloudBlobDirectory.Setup(x => x.GetBlockBlobReference(It.IsAny <string>())).Returns(() => blob.Object);

            var cloudTable = repos.Create <CloudTable>();

            cloudTable.Setup(x => x.CreateIfNotExistsAsync()).Returns(Task.FromResult(true));

            var request = TestFactory.CreateHttpRequestWithDataStream($"Data/{CommunicationManifest.FileName}");

            var response = (OkObjectResult)await UploadFunctions.Start(request,
                                                                       CommunicationManifest.FileName,
                                                                       cloudBlobDirectory.Object,
                                                                       cloudTable.Object,
                                                                       new IdGenerator(),
                                                                       _app.App,
                                                                       _logger);

            Assert.NotNull(response.Value);

            repos.VerifyAll();

            _output.WriteLine(response.Value.ToJson(Formatting.Indented));
        }
Esempio n. 5
0
        public async void Should_Upload_Completed_With_Manifest_Last()
        {
            var request        = TestFactory.CreateHttpRequestWithDataStream($"Data/Sample 2.pdf");
            var uploadDir      = _app.Repository.GetBlobDirectory(BlobNames.UploadDirectory);
            var uploadTmpTable = _app.Repository.GetTable(TableNames.CommUpload);
            var queue          = _app.Repository.GetQueue(QueueNames.CommProcess);

            // call step1 upload start
            var response = (ObjectResult)await UploadFunctions.Start(request,
                                                                     $"{DateTime.Now:u} Sample 2.pdf",
                                                                     uploadDir,
                                                                     uploadTmpTable,
                                                                     new IdGenerator(),
                                                                     _app.App,
                                                                     _logger);

            var upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.Null(upload.ManifestFile);
            Assert.NotNull(upload.UploadStart);
            Assert.Null(upload.UploadEnd);
            Assert.Contains("Sample 2.pdf", upload.LastUploadedFile);

            _output.WriteLine(upload.ToJson(Formatting.Indented));

            // call step2 upload continue
            var sessionId            = upload.SessionId;
            var sessionBlobDirectory = _app.Repository.GetBlobDirectory(BlobNames.UploadDirectory + $"/{sessionId}");

            var tmpEntity = new TableEntityAdapter <UploadSession>(upload, CommUploadPartitionKeys.Temp, sessionId);

            request = TestFactory.CreateHttpRequestWithDataStream("Data/Sample 1.pdf");

            response = (ObjectResult)await UploadFunctions.Continue(request,
                                                                    sessionId,
                                                                    $"{DateTime.Now:u} Sample 1.pdf",
                                                                    sessionBlobDirectory,
                                                                    tmpEntity,
                                                                    uploadTmpTable,
                                                                    _logger);

            upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.Null(upload.ManifestFile);
            Assert.NotNull(upload.UploadStart);
            Assert.Null(upload.UploadEnd);
            Assert.Contains("Sample 1.pdf", upload.LastUploadedFile);

            _output.WriteLine(upload.ToJson(Formatting.Indented));

            // call step3 upload end
            tmpEntity = new TableEntityAdapter <UploadSession>(upload, CommUploadPartitionKeys.Temp, sessionId);
            request   = TestFactory.CreateHttpRequestWithDataStream($"Data/{CommunicationManifest.FileName}");

            response = (ObjectResult)await UploadFunctions.End(request,
                                                               sessionId,
                                                               CommunicationManifest.FileName,
                                                               sessionBlobDirectory,
                                                               tmpEntity,
                                                               uploadTmpTable,
                                                               queue,
                                                               _app.App,
                                                               _logger);

            upload = response.Value.IsOrMap <UploadSession>();

            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.NotNull(upload.ManifestFile);
            Assert.NotNull(upload.UploadStart);
            Assert.NotNull(upload.UploadEnd);
            Assert.Contains(CommunicationManifest.FileName, upload.LastUploadedFile);

            _output.WriteLine(upload.ToJson(Formatting.Indented));
        }