public async Task UploadFilesTest() { var fileContents = new Faker <string>().CustomInstantiator(f => f.Lorem.Paragraphs(3, 10)).Generate(4) .ToDictionary(f => $"{string.Join("_", new Faker().Lorem.Words(4))}.txt", f => f); var fileService = Substitute.For <ITempFileService>(); var msblocService = Substitute.For <ILogAnalyzerService>(); var receivedFiles = new Dictionary <string, string>(); fileService.CreateFromStreamAsync(Arg.Any <string>(), Arg.Any <Stream>()) .Returns(ci => { var fileName = (string)ci[0]; var stream = (Stream)ci[1]; receivedFiles.Add(fileName, new StreamReader(stream, Encoding.UTF8).ReadToEnd()); return($"temp/{fileName}"); }); var fileController = new LogControllerStub(TestLogger.Create <LogController>(_testOutputHelper), fileService, msblocService) { ControllerContext = await RequestWithFiles(fileContents), MetadataProvider = new EmptyModelMetadataProvider(), ModelBinderFactory = Substitute.For <IModelBinderFactory>(), ObjectValidator = Substitute.For <IObjectModelValidator>() }; await fileController.Upload(); await fileService.Received(1).CreateFromStreamAsync(Arg.Any <string>(), Arg.Any <Stream>()); receivedFiles.Count.Should().Be(1); }
public async Task UploadWithMissingFile() { var name = "dummyFileName.txt"; var fileContent = "This is some dummy file contents"; var fileDictionary = new Dictionary <string, string> { { name, fileContent } }; var fileService = Substitute.For <ITempFileService>(); var msblocService = Substitute.For <ILogAnalyzerService>(); var receivedFiles = new Dictionary <string, string>(); fileService.CreateFromStreamAsync(Arg.Any <string>(), Arg.Any <Stream>()) .Returns(ci => { var fileName = (string)ci[0]; var stream = (Stream)ci[1]; receivedFiles.Add(fileName, new StreamReader(stream, Encoding.UTF8).ReadToEnd()); return($"temp/{fileName}"); }); fileService.Files.Returns(new[] { name }); var formData = new SubmissionData { CommitSha = "12345", CloneRoot = "c:/cloneRoot", BinaryLogFile = "someOtherFileName.txt" //Bad Data }; var fileController = new LogControllerStub(TestLogger.Create <LogController>(_testOutputHelper), fileService, msblocService) { ControllerContext = await RequestWithFiles(fileDictionary, formData), MetadataProvider = new EmptyModelMetadataProvider(), ModelBinderFactory = Substitute.For <IModelBinderFactory>(), ObjectValidator = Substitute.For <IObjectModelValidator>() }; var result = await fileController.Upload() as BadRequestObjectResult; result.Should().NotBeNull(); result.Value.Should().BeOfType <SerializableError>(); }
public async Task UploadBadRequestTest() { var fileService = Substitute.For <ITempFileService>(); var msblocService = Substitute.For <ILogAnalyzerService>(); var fileController = new LogControllerStub(TestLogger.Create <LogController>(_testOutputHelper), fileService, msblocService) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }, MetadataProvider = new EmptyModelMetadataProvider(), ModelBinderFactory = Substitute.For <IModelBinderFactory>(), ObjectValidator = Substitute.For <IObjectModelValidator>() }; var result = await fileController.Upload() as BadRequestObjectResult; result.Should().NotBeNull(); result.StatusCode.Should().Be(400); }
public async Task UploadFileTest() { var name = "dummyFileName.txt"; var fileContent = "This is some dummy file contents"; var fileDictionary = new Dictionary <string, string> { { name, fileContent } }; var fileService = Substitute.For <ITempFileService>(); var msblocService = Substitute.For <ILogAnalyzerService>(); var receivedFiles = new Dictionary <string, string>(); fileService.CreateFromStreamAsync(Arg.Any <string>(), Arg.Any <Stream>()) .Returns(ci => { var fileName = (string)ci[0]; var stream = (Stream)ci[1]; receivedFiles.Add(fileName, new StreamReader(stream, Encoding.UTF8).ReadToEnd()); return($"temp/{fileName}"); }); var fileController = new LogControllerStub(TestLogger.Create <LogController>(_testOutputHelper), fileService, msblocService) { ControllerContext = await RequestWithFiles(fileDictionary), MetadataProvider = new EmptyModelMetadataProvider(), ModelBinderFactory = Substitute.For <IModelBinderFactory>(), ObjectValidator = Substitute.For <IObjectModelValidator>() }; await fileController.Upload(); await fileService.Received(1).CreateFromStreamAsync(Arg.Is(name), Arg.Any <Stream>()); receivedFiles.Should().BeEquivalentTo(fileDictionary); }
public async Task UploadFileWithFormData() { var name = "dummyFileName.txt"; var fileContent = "This is some dummy file contents"; var fileDictionary = new Dictionary <string, string> { { name, fileContent } }; var fileService = Substitute.For <ITempFileService>(); var msblocService = Substitute.For <ILogAnalyzerService>(); var receivedFiles = new Dictionary <string, string>(); fileService.CreateFromStreamAsync(Arg.Any <string>(), Arg.Any <Stream>()) .Returns(ci => { var fileName = (string)ci[0]; var stream = (Stream)ci[1]; receivedFiles.Add(fileName, new StreamReader(stream, Encoding.UTF8).ReadToEnd()); return($"temp/{fileName}"); }); fileService.Files.Returns(new[] { name }); var checkRun = new CheckRun() { Id = Faker.Random.Long(), Url = Faker.Internet.Url() }; msblocService.SubmitAsync(null, null, null, null, null).ReturnsForAnyArgs(checkRun); var submissionData = new SubmissionData { CommitSha = "12345", CloneRoot = "c:/cloneRoot" }; var faker = new Faker(); var repoOwner = faker.Person.FullName; var repoName = faker.Hacker.Phrase(); var claims = new[] { new Claim("urn:msbloc:repositoryName", repoName), new Claim("urn:msbloc:repositoryOwner", repoOwner), new Claim("urn:msbloc:repositoryOwnerId", faker.Random.Long().ToString()) }; var fileController = new LogControllerStub(TestLogger.Create <LogController>(_testOutputHelper), fileService, msblocService) { ControllerContext = await RequestWithFiles(fileDictionary, submissionData, claims), MetadataProvider = new EmptyModelMetadataProvider(), ModelBinderFactory = Substitute.For <IModelBinderFactory>(), ObjectValidator = Substitute.For <IObjectModelValidator>() }; var result = await fileController.Upload() as JsonResult; await fileService.Received(1).CreateFromStreamAsync(Arg.Is(name), Arg.Any <Stream>()); await msblocService.Received(1).SubmitAsync( repoOwner, repoName, submissionData.CommitSha, submissionData.CloneRoot, string.Empty); receivedFiles.Should().BeEquivalentTo(fileDictionary); var resultFormData = result?.Value as CheckRun; resultFormData.Should().NotBeNull(); resultFormData.Id.Should().Be(checkRun.Id); resultFormData.Url.Should().Be(checkRun.Url); }