コード例 #1
0
        public async Task UploadIdsFromCsv_GivenEmptyUploadFile_ReturnsBadRequest()
        {
            _formFile.Setup(x => x.Length).Returns(0); // ensure size is less than 5mb
            var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(""));

            _formFile.Setup(x => x.OpenReadStream()).Returns(memoryStream); //stream of data
            _formFile.Setup(x => x.FileName).Returns("ids.csv");
            var csvUpload = new CsvUploadDto {
                File = _formFile.Object
            };

            var result = await _identityNumberController.UploadIdsFromCsv(csvUpload);

            _dataRepository.Verify(x =>
                                   x.Save(It.IsAny <List <ValidIDInfo> >()), Times.Never);
            Assert.That(result, Is.InstanceOf <BadRequestObjectResult>());
        }
コード例 #2
0
        public async Task UploadIdsFromCsv_GivenAnUploadFileOfValidAndInvalidIds_SavesToCsvAndReturnsNoContent()
        {
            _formFile.Setup(x => x.Length).Returns(312000); // ensure size is less than 5mb
            var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes("8605065447083\r\n8605065397083\r\n"));

            _formFile.Setup(x => x.OpenReadStream()).Returns(memoryStream); //stream of data
            _formFile.Setup(x => x.FileName).Returns("ids.csv");            // validation for upload file extension
            var csvUpload = new CsvUploadDto {
                File = _formFile.Object
            };

            var result = await _identityNumberController.UploadIdsFromCsv(csvUpload);

            _dataRepository.Verify(x =>
                                   x.Save(It.IsAny <List <ValidIDInfo> >()), Times.AtLeastOnce);
            Assert.That(result, Is.InstanceOf <NoContentResult>());
        }
コード例 #3
0
        public async Task <IActionResult> UploadIdsFromCsv([FromForm] CsvUploadDto csvIdDto)
        {
            try
            {
                var file = csvIdDto.File;

                if (file.Length > 0)
                {
                    string fileContents = string.Empty;
                    using (var reader = new StreamReader(file.OpenReadStream()))
                    {
                        fileContents = await reader.ReadToEndAsync();
                    }
                    if (string.IsNullOrWhiteSpace(fileContents))
                    {
                        return(BadRequest("No identity numbers in upload File"));
                    }
                    var idNumbers = fileContents.Trim().Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
                    var idInfos   = _identityNumberService.ExtractIdInformation(idNumbers, _identityNumberValidator);
                    // save valid and invalid ids to csv
                    if (idInfos.validIdInfos.Any())
                    {
                        await _dataRepository.Save(idInfos.validIdInfos);
                    }
                    if (idInfos.InvalidIdInfos.Any())
                    {
                        await _dataRepository.Save(idInfos.InvalidIdInfos);
                    }
                    return(NoContent());
                }

                return(BadRequest("The file upload has id's contained"));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message, e);
                return(StatusCode(500, e.Message));
            }
        }