public void CallingCycloneDX_CreatesBomFromDirectory() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\Project1\packages.config"), Helpers.GetPackagesFileWithPackageReference("Package1", "1.2.3") }, { XFS.Path(@"c:\SolutionPath\Project2\packages.config"), Helpers.GetPackagesFileWithPackageReference("Package2", "1.2.3") }, { XFS.Path(@"c:\SolutionPath\Project3\packages.config"), Helpers.GetPackagesFileWithPackageReference("Package3", "1.2.3") }, }); var mockHttpClient = Helpers.GetNugetMockHttpClient(new List <NugetPackage> { new NugetPackage { Name = "Package1", Version = "1.2.3" }, new NugetPackage { Name = "Package2", Version = "1.2.3" }, new NugetPackage { Name = "Package3", Version = "1.2.3" }, }); Program.fileSystem = mockFileSystem; Program.httpClient = mockHttpClient; var args = new string[] { XFS.Path(@"c:\SolutionPath"), "-o", XFS.Path(@"c:\SolutionPath") }; var exitCode = Program.Main(args); Assert.Equal((int)ExitCode.OK, exitCode); Assert.True(mockFileSystem.FileExists(XFS.Path(@"c:\SolutionPath\bom.xml"))); }
public void CallingCycloneDX_CreatesOutputDirectory() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\SolutionFile.sln"), new MockFileData(@" Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = ""CycloneDX"", ""Project\Project.csproj"", ""{88DFA76C-1C0A-4A83-AA48-EA1D28A9ABED}"" ") }, { XFS.Path(@"c:\SolutionPath\Project\Project.csproj"), Helpers.GetProjectFileWithPackageReference("Package", "1.2.3") }, }); var mockHttpClient = Helpers.GetNugetMockHttpClient(new List <NugetPackage> { new NugetPackage { Name = "Package", Version = "1.2.3" }, }); Program.fileSystem = mockFileSystem; Program.httpClient = mockHttpClient; var args = new string[] { XFS.Path(@"c:\SolutionPath\SolutionFile.sln"), "-o", XFS.Path(@"c:\NewDirectory") }; var exitCode = Program.Main(args); Assert.Equal((int)ExitCode.OK, exitCode); Assert.True(mockFileSystem.FileExists(XFS.Path(@"c:\NewDirectory\bom.xml"))); }
public async Task GetComponent_FromCachedNugetFile_DoNotReturnsHash_WhenDisabled() { var nuspecFileContents = @"<?xml version=""1.0"" encoding=""utf-8""?> <package xmlns=""http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd""> <metadata> <id>testpackage</id> </metadata> </package>"; var nugetFileContent = "FooBarBaz"; var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.nuspec"), new MockFileData(nuspecFileContents) }, { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.1.0.0.nupkg"), new MockFileData(nugetFileContent) }, }); var nugetService = new NugetService( mockFileSystem, new List <string> { XFS.Path(@"c:\nugetcache") }, new Mock <IGithubService>().Object, new HttpClient(), disableHashComputation: true); var component = await nugetService.GetComponentAsync("testpackage", "1.0.0", Component.ComponentScope.Required).ConfigureAwait(false); Assert.Null(component.Hashes); }
public void SuccessfulDotNetRunnerExecution_ReturnsDependencyGraph() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData>()); // Arrange var dotNetRunner = new Mock <IDotNetRunner>(); dotNetRunner.Setup(runner => runner.Run(It.IsAny <string>(), It.IsAny <string[]>())) .Returns(new RunStatus(string.Empty, string.Empty, 0)) .Callback((string directory, string[] arguments) => { // Grab the temp filename that was passed... string tempFileName = arguments[3].Replace("/p:RestoreGraphOutputPath=", string.Empty).Trim('"'); // ... and stuff it with our dummy dependency graph mockFileSystem.AddFileFromEmbeddedResource(tempFileName, GetType().Assembly, "DotNetOutdated.Tests.TestData.test.dg"); }); var graphService = new DependencyGraphService(dotNetRunner.Object, mockFileSystem); // Act var dependencyGraph = graphService.GenerateDependencyGraph(_path); // Assert Assert.NotNull(dependencyGraph); Assert.Equal(3, dependencyGraph.Projects.Count); dotNetRunner.Verify(runner => runner.Run(XFS.Path(@"c:\"), It.Is <string[]>(a => a[0] == "msbuild" && a[1] == '\"' + _path + '\"'))); }
public void GetPackageCachePaths_ReturnsGlobalCacheWithoutFallbackCachePath() { var fileSystem = new MockFileSystem(); var dotnetCommandService = new Mock <IDotnetCommandService>(); dotnetCommandService .Setup(m => m.Run("--list-sdks")) .Returns(new DotnetCommandResult { ExitCode = 0, StdOut = @"2.2.402 [" + XFS.Path(@"c:\dotnet\sdk") + "]" }); dotnetCommandService .Setup(m => m.Run("nuget locals global-packages --list")) .Returns(new DotnetCommandResult { ExitCode = 0, StdOut = @"info : global-packages: " + XFS.Path(@"c:\user\.nuget\packages") }); var dotnetUtilsService = new DotnetUtilsService( fileSystem, dotnetCommandService.Object); // act var cachePaths = dotnetUtilsService.GetPackageCachePaths(); Assert.Collection( cachePaths.Result, path => Assert.Equal(XFS.Path(@"c:\user\.nuget\packages"), path)); }
public void GetNuGetFallbackFolderPath_ReturnsCorrectFallbackPath() { var fileSystem = new MockFileSystem(); fileSystem.Directory .CreateDirectory(XFS.Path(@"c:\dotnet\sdk\NuGetFallbackFolder")); var dotnetCommandService = new Mock <IDotnetCommandService>(); dotnetCommandService .Setup(m => m.Run("--list-sdks")) .Returns(new DotnetCommandResult { ExitCode = 0, StdOut = @"2.2.402 [" + XFS.Path(@"c:\dotnet\sdk") + "]" }); var dotnetUtilsService = new DotnetUtilsService( fileSystem, dotnetCommandService.Object); // act var fallbackPath = dotnetUtilsService.GetNuGetFallbackFolderPath(); Assert.Equal( XFS.Path(@"c:\dotnet\sdk\NuGetFallbackFolder"), fallbackPath.Result); }
public async Task GetSolutionProjectReferences_ReturnsListOfProjects_IncludingSecondaryProjectReferences() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\SolutionFile.sln"), new MockFileData(@" Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = ""CycloneDX"", ""Project1\Project1.csproj"", ""{88DFA76C-1C0A-4A83-AA48-EA1D28A9ABED}"" ") }, { XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), Helpers.GetEmptyProjectFile() }, { XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), Helpers.GetEmptyProjectFile() } }); var mockProjectFileService = new Mock <IProjectFileService>(); mockProjectFileService .SetupSequence(s => s.RecursivelyGetProjectReferencesAsync(It.IsAny <string>())) .ReturnsAsync(new HashSet <string> { XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), }) .ReturnsAsync(new HashSet <string>()); var solutionFileService = new SolutionFileService(mockFileSystem, mockProjectFileService.Object); var projects = await solutionFileService.GetSolutionProjectReferencesAsync(XFS.Path(@"c:\SolutionPath\SolutionFile.sln")).ConfigureAwait(false); var sortedProjects = new List <string>(projects); sortedProjects.Sort(); Assert.Collection(sortedProjects, item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), item), item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), item)); }
public void GetNugetPackages_PackageAsTopLevelAndTransitive(string framework, int frameworkMajor, int frameworkMinor) { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), Helpers.GetProjectFileWithPackageReferences( new[] { new NugetPackage { Name = "Package1", Version = "1.5.0", Dependencies = new Dictionary <string, string> { { "Package2", "[4.5, )" }, }, }, new NugetPackage { Name = "Package2", Version = "4.5.1", Dependencies = new Dictionary <string, string>(), } }) }, { XFS.Path(@"c:\SolutionPath\Project1\obj\project.assets.json"), new MockFileData("") } }); var mockDotnetCommandsService = new Mock <IDotnetCommandService>(); mockDotnetCommandsService.Setup(m => m.Run(It.IsAny <string>())) .Returns(() => Helpers.GetDotnetListPackagesResult( new[]
public async Task GetComponent_FromCachedNugetHashFile_ReturnsComponentWithHash() { var nuspecFileContents = @"<?xml version=""1.0"" encoding=""utf-8""?> <package xmlns=""http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd""> <metadata> <id>testpackage</id> </metadata> </package>"; byte[] sampleHash = new byte[] { 1, 2, 3, 4, 5, 6, 78, 125, 200 }; var nugetHashFileContents = Convert.ToBase64String(sampleHash); var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.nuspec"), new MockFileData(nuspecFileContents) }, { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.1.0.0.nupkg.sha512"), new MockFileData(nugetHashFileContents) }, }); var nugetService = new NugetService( mockFileSystem, new List <string> { XFS.Path(@"c:\nugetcache") }, new Mock <IGithubService>().Object, new HttpClient()); var component = await nugetService.GetComponentAsync("testpackage", "1.0.0", Component.ComponentScope.Required).ConfigureAwait(false); Assert.Equal(Hash.HashAlgorithm.SHA_512, component.Hashes[0].Alg); Assert.Equal(BitConverter.ToString(sampleHash).Replace("-", string.Empty), component.Hashes[0].Content); }
public async Task RecursivelyGetProjectReferences_ReturnsProjectReferences() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), Helpers.GetProjectFileWithProjectReferences( new string[] { @"..\Project2\Project2.csproj", }) }, { XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), Helpers.GetProjectFileWithProjectReferences( new string[] { @"..\Project3\Project3.csproj", }) }, { XFS.Path(@"c:\SolutionPath\Project3\Project3.csproj"), new MockFileData(@"<Project></Project>") }, }); var mockDotnetUtilsService = new Mock <IDotnetUtilsService>(); var mockPackageFileService = new Mock <IPackagesFileService>(); var mockProjectAssetsFileService = new Mock <IProjectAssetsFileService>(); var projectFileService = new ProjectFileService( mockFileSystem, mockDotnetUtilsService.Object, mockPackageFileService.Object, mockProjectAssetsFileService.Object); var projects = await projectFileService.RecursivelyGetProjectReferencesAsync(XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj")).ConfigureAwait(false); var sortedProjects = new List <string>(projects); sortedProjects.Sort(); Assert.Collection(sortedProjects, item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), item), item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project3\Project3.csproj"), item)); }
public async Task GetNugetPackages_ReturnsMultipleNugetPackages() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\packages.config"), Helpers.GetPackagesFileWithPackageReferences( new List <NugetPackage> { new NugetPackage { Name = "Package1", Version = "1.2.3" }, new NugetPackage { Name = "Package2", Version = "1.2.3" }, new NugetPackage { Name = "Package3", Version = "1.2.3" }, }) }, }); var packagesFileService = new PackagesFileService(mockFileSystem); var packages = await packagesFileService.GetNugetPackagesAsync(XFS.Path(@"c:\Project\packages.config")).ConfigureAwait(false); var sortedPackages = new List <NugetPackage>(packages); sortedPackages.Sort(); Assert.Collection(sortedPackages, item => Assert.Equal("Package1", item.Name), item => Assert.Equal("Package2", item.Name), item => Assert.Equal("Package3", item.Name)); }
public async Task GetSolutionProjectReferences_ReturnsListOfProjects_IncludingSecondaryProjectReferences() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\SolutionFile.sln"), new MockFileData(@" Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = ""CycloneDX"", ""Project1\Project1.csproj"", ""{88DFA76C-1C0A-4A83-AA48-EA1D28A9ABED}"" ") }, { XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), Helpers.GetProjectFileWithProjectReferences( new string[] { @"..\Project2\Project2.csproj", }) }, { XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), new MockFileData(@"<Project></Project>") } }); var solutionFileService = new SolutionFileService(mockFileSystem); var projects = await solutionFileService.GetSolutionProjectReferencesAsync(XFS.Path(@"c:\SolutionPath\SolutionFile.sln")); var sortedProjects = new List <string>(projects); sortedProjects.Sort(); Assert.Collection(sortedProjects, item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project1\Project1.csproj"), item), item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project2\Project2.csproj"), item)); }
public async Task GetComponent_FromCachedNuspecFile_ReturnsComponent() { var nuspecFileContents = @"<?xml version=""1.0"" encoding=""utf-8""?> <package xmlns=""http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd""> <metadata> <id>testpackage</id> </metadata> </package>"; var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.nuspec"), new MockFileData(nuspecFileContents) }, }); var nugetService = new NugetV3Service(null, mockFileSystem, new List <string> { XFS.Path(@"c:\nugetcache") }, new Mock <IGithubService>().Object, new NullLogger(), false); var component = await nugetService.GetComponentAsync("testpackage", "1.0.0", Component.ComponentScope.Required).ConfigureAwait(false); Assert.Equal("testpackage", component.Name); }
public async Task GetComponent_FromCachedNugetFile_ReturnsComponentWithHash() { var nuspecFileContents = @"<?xml version=""1.0"" encoding=""utf-8""?> <package xmlns=""http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd""> <metadata> <id>testpackage</id> </metadata> </package>"; var nugetFileContent = "FooBarBaz"; var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.nuspec"), new MockFileData(nuspecFileContents) }, { XFS.Path(@"c:\nugetcache\testpackage\1.0.0\testpackage.1.0.0.nupkg"), new MockFileData(nugetFileContent) }, }); var nugetService = new NugetService( mockFileSystem, new List <string> { XFS.Path(@"c:\nugetcache") }, new Mock <IGithubService>().Object, new HttpClient()); var component = await nugetService.GetComponentAsync("testpackage", "1.0.0", Component.ComponentScope.Required).ConfigureAwait(false); byte[] hashBytes; using (SHA512 sha = new SHA512Managed()) { hashBytes = sha.ComputeHash(Encoding.UTF8.GetBytes(nugetFileContent)); } Assert.Equal(Hash.HashAlgorithm.SHA_512, component.Hashes[0].Alg); Assert.Equal(BitConverter.ToString(hashBytes).Replace("-", string.Empty), component.Hashes[0].Content); }
private static MockFileSystem CreateMockFileSystem() { var mockFileSystem = new MockFileSystem(); mockFileSystem.AddFile(XFS.Path(@"C:\assets\dir1\dir1_1\file1.txt"), new MockFileData("data")); mockFileSystem.AddFile(XFS.Path(@"C:\assets\dir1\dir1_1\file2.txt"), new MockFileData("data")); mockFileSystem.AddFile(XFS.Path(@"C:\assets\dir2\file2.zip"), new MockFileData("data")); return(mockFileSystem); }
public void CallingCycloneDX_WithNoPackages_GeneratesEmptyBom() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Solution\Solution.sln"), new MockFileData(@"Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = ""Project"", ""Project\Project.csproj"", ""{318AD44C-F5E0-49E4-B474-AE5D20C74A1A}"" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|Any CPU.Build.0 = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|x64.ActiveCfg = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|x64.Build.0 = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|x86.ActiveCfg = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Debug|x86.Build.0 = Debug|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|Any CPU.Build.0 = Release|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|x64.ActiveCfg = Release|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|x64.Build.0 = Release|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|x86.ActiveCfg = Release|Any CPU {318AD44C-F5E0-49E4-B474-AE5D20C74A1A}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection EndGlobal") }, { XFS.Path(@"c:\Solution\Project\Project.csproj"), new MockFileData(@"<Project Sdk=""Microsoft.NET.Sdk""><ItemGroup></ItemGroup></Project>") }, }); Program.fileSystem = mockFileSystem; var exitCode = Program.Main(new string[] { XFS.Path(@"c:\Solution\Solution.sln"), "--noSerialNumber", "--out", XFS.Path(@"c:\Solution") }); var bomContents = mockFileSystem.File.ReadAllText(XFS.Path(@"c:\Solution\bom.xml")); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <bom version=""1"" xmlns=""http://cyclonedx.org/schema/bom/1.1""> <components /> </bom>", bomContents); }
public void GetPackagesConfigFiles_DoesNotReturnNonPackagesConfigFiles_InSpecifiedPath() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\something.config"), new MockFileData("") }, }); var fileDiscoveryService = new FileDiscoveryService(mockFileSystem); var files = fileDiscoveryService.GetPackagesConfigFiles(XFS.Path(@"c:\Project")); Assert.Empty(files); }
public async Task GetProjectNugetPackages_IgnoresImplicitPackageVersions() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\Project.csproj"), Helpers.GetProjectFileWithPackageReference("Package", "") }, }); var projectFileService = new ProjectFileService(mockFileSystem); var packages = await projectFileService.GetProjectNugetPackagesAsync(XFS.Path(@"c:\Project\Project.csproj")); Assert.Empty(packages); }
public async Task GetProjectNugetPackages_WithPackagesConfig_ReturnsMultipleNugetPackages() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\Project.csproj"), "" }, { XFS.Path(@"c:\Project\packages.config"), "" }, }); var mockDotnetUtilsService = new Mock <IDotnetUtilsService>(); mockDotnetUtilsService .Setup(s => s.Restore(It.IsAny <string>())) .Returns(new DotnetUtilsResult()); var mockPackageFileService = new Mock <IPackagesFileService>(); mockPackageFileService .Setup(s => s.GetNugetPackagesAsync(It.IsAny <string>())) .ReturnsAsync( new HashSet <NugetPackage> { new NugetPackage { Name = "Package1", Version = "1.2.3" }, new NugetPackage { Name = "Package2", Version = "1.2.3" }, new NugetPackage { Name = "Package3", Version = "1.2.3" }, } ); var mockProjectAssetsFileService = new Mock <IProjectAssetsFileService>(); mockProjectAssetsFileService .Setup(s => s.GetNugetPackages(It.IsAny <string>())) .Returns(new HashSet <NugetPackage>()); var projectFileService = new ProjectFileService( mockFileSystem, mockDotnetUtilsService.Object, mockPackageFileService.Object, mockProjectAssetsFileService.Object); var packages = await projectFileService.GetProjectNugetPackagesAsync(XFS.Path(@"c:\Project\Project.csproj")).ConfigureAwait(false); var sortedPackages = new List <NugetPackage>(packages); sortedPackages.Sort(); Assert.Collection(sortedPackages, item => Assert.Equal("Package1", item.Name), item => Assert.Equal("Package2", item.Name), item => Assert.Equal("Package3", item.Name)); }
public void SearchRecursively_RecursiveFilesDoNotExist_ReturnsEmpty() { // Arrange var mockFileSystem = CreateMockFileSystem(); var ant = new AntDirectory(new Ant("/assets/**/*.xml"), mockFileSystem); // Act var files = ant.SearchRecursively(XFS.Path(@"C:\")); // Assert files.Should().BeEmpty(); }
public void SearchRecursively_PatternWithThreeQuestionMarks_ReturnsEmpty() { // Arrange var mockFileSystem = CreateMockFileSystem(); var ant = new AntDirectory(new Ant("/assets/dir1/*/file???.txt"), mockFileSystem); // Act var files = ant.SearchRecursively(XFS.Path(@"C:\")); // Assert files.Should().BeEmpty(); }
public void GetPackagesConfigFiles_ReturnsPackagesConfigFiles_InSpecifiedPathSubdirectories() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\Subdirectory\packages.config"), new MockFileData("") }, }); var fileDiscoveryService = new FileDiscoveryService(mockFileSystem); var files = fileDiscoveryService.GetPackagesConfigFiles(XFS.Path(@"c:\Project")); Assert.Collection(files, item => Assert.Equal(XFS.Path(@"c:\Project\Subdirectory\packages.config"), item)); }
public void MockFile_WriteAllBytes_ShouldThrowAnArgumentNullExceptionIfBytesAreNull() { // Arrange MockFileSystem fileSystem = new MockFileSystem(); string path = XFS.Path(@"c:\something\demo.txt"); // Act Action action = () => fileSystem.File.WriteAllBytes(path, null); // Assert ArgumentNullException exception = Assert.Throws <ArgumentNullException>(action); Assert.StartsWith("Value cannot be null.", exception.Message); Assert.Equal(exception.ParamName, "bytes"); }
public void SearchRecursively_WithDirectoryPathSetting_ReturnsExpectedValue( bool includeDirectoryPath) { var ant = new AntDirectory(new Ant("/assets/dir1/*/file?.txt"), CreateMockFileSystem()); var match = ant.SearchRecursively(XFS.Path(@"C:\"), includeDirectoryPath); if (includeDirectoryPath) { match.First().Should().StartWith(XFS.Path(@"C:\")); } else { match.First().Should().NotStartWith(XFS.Path(@"C:\")); } }
public void SearchRecursively_PatternWithQuestionMark_ReturnsTwoFiles() { // Arrange var mockFileSystem = CreateMockFileSystem(); var ant = new AntDirectory(new Ant("/assets/dir1/*/file?.txt"), mockFileSystem); // Act var files = ant.SearchRecursively(XFS.Path(@"C:\")).ToList(); // Assert files.Should().HaveCount(2); files.Should().Contain(f => f == XFS.Path(@"assets\dir1\dir1_1\file1.txt")); files.Should().Contain(f => f == XFS.Path(@"assets\dir1\dir1_1\file2.txt")); }
public void MockFile_WriteAllBytes_ShouldWriteDataToMemoryFileSystem() { // Arrange string path = XFS.Path(@"c:\something\demo.txt"); MockFileSystem fileSystem = new MockFileSystem(); byte[] fileContent = new byte[] { 1, 2, 3, 4 }; // Act fileSystem.File.WriteAllBytes(path, fileContent); // Assert Assert.Equal( fileContent, fileSystem.GetFile(path).Contents); }
public async Task GetSolutionProjectReferences_ReturnsProjectThatExists() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\SolutionPath\SolutionFile.sln"), new MockFileData(@" Project(""{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"") = ""CycloneDX"", ""Project\Project.csproj"", ""{88DFA76C-1C0A-4A83-AA48-EA1D28A9ABED}"" ") }, { XFS.Path(@"c:\SolutionPath\Project\Project.csproj"), new MockFileData(@"<Project></Project>") }, }); var solutionFileService = new SolutionFileService(mockFileSystem); var projects = await solutionFileService.GetSolutionProjectReferencesAsync(XFS.Path(@"c:\SolutionPath\SolutionFile.sln")); Assert.Collection(projects, item => Assert.Equal(XFS.Path(@"c:\SolutionPath\Project\Project.csproj"), item)); }
public async Task GetNugetPackages_ReturnsNugetPackage() { var mockFileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { XFS.Path(@"c:\Project\packages.config"), Helpers.GetPackagesFileWithPackageReference("Package", "1.2.3") }, }); var packagesFileService = new PackagesFileService(mockFileSystem); var packages = await packagesFileService.GetNugetPackagesAsync(XFS.Path(@"c:\Project\packages.config")).ConfigureAwait(false); Assert.Collection(packages, item => { Assert.Equal("Package", item.Name); Assert.Equal("1.2.3", item.Version); }); }
public void SearchRecursively_PatternRecursiveWithWildcard_ReturnsThreeFiles() { // Arrange var mockFileSystem = CreateMockFileSystem(); var ant = new AntDirectory(new Ant("/assets/**/*.*"), mockFileSystem); // Act var files = ant.SearchRecursively(XFS.Path(@"C:\")).ToList(); // Assert files.Should().HaveCount(3); files.Should().Contain(f => f == XFS.Path(@"assets\dir1\dir1_1\file1.txt")); files.Should().Contain(f => f == XFS.Path(@"assets\dir1\dir1_1\file2.txt")); files.Should().Contain(f => f == XFS.Path(@"assets\dir2\file2.zip")); }
public void MockFile_WriteAllBytes_ShouldThrowAnUnauthorizedAccessExceptionIfFileIsHidden() { // Arrange string path = XFS.Path(@"c:\something\demo.txt"); MockFileSystem fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { path, new MockFileData("this is hidden") }, }); fileSystem.File.SetAttributes(path, FileAttributes.Hidden); // Act Action action = () => fileSystem.File.WriteAllBytes(path, new byte[] { 123 }); // Assert Assert.Throws <UnauthorizedAccessException>(action); }