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>()); }
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>()); }
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)); } }