From 7c2d48fb9ee0c186f7ec8033e7a0ea67a49208a5 Mon Sep 17 00:00:00 2001 From: eavichay Date: Tue, 7 Nov 2017 16:04:21 +0200 Subject: [PATCH] feat: adding .csproj file recognition as nuget --- lib/detect.js | 3 + package.json | 2 +- test/acceptance/cli.acceptance.test.js | 33 +- .../workspaces/nuget-app/app.csproj | 476 ++++++++++++++++++ 4 files changed, 512 insertions(+), 2 deletions(-) create mode 100644 test/acceptance/workspaces/nuget-app/app.csproj diff --git a/lib/detect.js b/lib/detect.js index 20aec99085..2dad3beace 100644 --- a/lib/detect.js +++ b/lib/detect.js @@ -32,6 +32,7 @@ var DETECTABLE_PACKAGE_MANAGERS = { 'vendor.json': 'golang', 'project.json': 'nuget', 'packages.config': 'nuget', + '.csproj': 'nuget', }; function detectPackageManager(root, options) { @@ -84,6 +85,8 @@ function detectPackageManagerFromFile(file) { var key = path.basename(file); if (/\.gemspec$/.test(key)) { key = '.gemspec'; + } else if (/\.csproj$/.test(key)) { + key = '.csproj'; } if (!(key in DETECTABLE_PACKAGE_MANAGERS)) { throw new Error('Could not detect package manager for file: ' + file); diff --git a/package.json b/package.json index 5d164a781a..13f8b6d34b 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "snyk-gradle-plugin": "1.2.0", "snyk-module": "1.8.1", "snyk-mvn-plugin": "1.1.0", - "snyk-nuget-plugin": "1.0.3", + "snyk-nuget-plugin": "1.1.0", "snyk-policy": "1.7.1", "snyk-python-plugin": "1.4.0", "snyk-recursive-readdir": "^2.0.0", diff --git a/test/acceptance/cli.acceptance.test.js b/test/acceptance/cli.acceptance.test.js index 0a5fc08690..7e6bc4857f 100644 --- a/test/acceptance/cli.acceptance.test.js +++ b/test/acceptance/cli.acceptance.test.js @@ -250,6 +250,37 @@ function (t) { }); }); +test('`test nuget-app --file=app.csproj`', function (t) { + chdirWorkspaces(); + var plugin = { + inspect: function () { + return Promise.resolve({package: {}}); + }, + }; + sinon.spy(plugin, 'inspect'); + + sinon.stub(plugins, 'loadPlugin'); + t.teardown(plugins.loadPlugin.restore); + plugins.loadPlugin + .withArgs('nuget') + .returns(plugin); + + return cli.test('nuget-app', { + file: 'app.csproj', + }) + .then(function () { + var req = server.popRequest(); + t.equal(req.method, 'POST', 'makes POST request'); + t.match(req.url, '/vuln/nuget', 'posts to correct url'); + t.same(plugin.inspect.getCall(0).args, + ['nuget-app', 'app.csproj', { + args: null, + file: 'app.csproj', + packageManager: 'nuget', + },], 'calls nuget plugin'); + }); +}); + test('`test nuget-app --file=project.json`', function (t) { chdirWorkspaces(); var plugin = { @@ -279,7 +310,7 @@ test('`test nuget-app --file=project.json`', function (t) { packageManager: 'nuget', },], 'calls nuget plugin'); }); -}) +}); test('`test golang-app --file=Gopkg.lock`', function (t) { diff --git a/test/acceptance/workspaces/nuget-app/app.csproj b/test/acceptance/workspaces/nuget-app/app.csproj new file mode 100644 index 0000000000..e25f2c37b6 --- /dev/null +++ b/test/acceptance/workspaces/nuget-app/app.csproj @@ -0,0 +1,476 @@ + + + + + + + Debug + AnyCPU + + + 2.0 + {B35A27D9-603A-4A68-A0EF-9DB9FD5EEB50} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + WebApplication1 + WebApplication1 + v4.6.1 + false + true + + + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + true + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + True + ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + + + True + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + + + True + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + + + ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll + + + ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll + + + ..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll + + + ..\packages\Microsoft.CodeAnalysis.Common.1.3.2\lib\net45\Microsoft.CodeAnalysis.dll + + + ..\packages\Microsoft.CodeAnalysis.CSharp.1.3.2\lib\net45\Microsoft.CodeAnalysis.CSharp.dll + + + ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.5\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + + + ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll + + + ..\packages\Microsoft.Owin.Security.Cookies.3.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll + + + ..\packages\Microsoft.Owin.Security.Facebook.3.0.1\lib\net45\Microsoft.Owin.Security.Facebook.dll + + + ..\packages\Microsoft.Owin.Security.Google.3.0.1\lib\net45\Microsoft.Owin.Security.Google.dll + + + ..\packages\Microsoft.Owin.Security.MicrosoftAccount.3.0.1\lib\net45\Microsoft.Owin.Security.MicrosoftAccount.dll + + + ..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll + + + ..\packages\Microsoft.Owin.Security.Twitter.3.0.1\lib\net45\Microsoft.Owin.Security.Twitter.dll + + + True + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll + + + ..\packages\Microsoft.Orleans.Core.1.4.0\lib\net451\Orleans.dll + + + ..\packages\Microsoft.Orleans.OrleansCodeGenerator.1.4.0\lib\net451\OrleansCodeGenerator.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + + ..\packages\System.AppContext.4.1.0\lib\net46\System.AppContext.dll + + + ..\packages\System.Collections.Immutable.1.2.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + + + + + + ..\packages\System.Console.4.0.0\lib\net46\System.Console.dll + + + + + + ..\packages\System.Diagnostics.FileVersionInfo.4.0.0\lib\net46\System.Diagnostics.FileVersionInfo.dll + + + ..\packages\System.Diagnostics.StackTrace.4.0.1\lib\net46\System.Diagnostics.StackTrace.dll + + + + + ..\packages\System.IO.FileSystem.4.0.1\lib\net46\System.IO.FileSystem.dll + + + ..\packages\System.IO.FileSystem.Primitives.4.0.1\lib\net46\System.IO.FileSystem.Primitives.dll + + + + True + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + + + + + ..\packages\System.Reflection.Metadata.1.3.0\lib\portable-net45+win8\System.Reflection.Metadata.dll + + + + ..\packages\System.Security.Cryptography.Algorithms.4.2.0\lib\net461\System.Security.Cryptography.Algorithms.dll + + + ..\packages\System.Security.Cryptography.Encoding.4.0.0\lib\net46\System.Security.Cryptography.Encoding.dll + + + ..\packages\System.Security.Cryptography.Primitives.4.0.0\lib\net46\System.Security.Cryptography.Primitives.dll + + + ..\packages\System.Security.Cryptography.X509Certificates.4.1.0\lib\net461\System.Security.Cryptography.X509Certificates.dll + + + ..\packages\System.Text.Encoding.CodePages.4.0.1\lib\net46\System.Text.Encoding.CodePages.dll + + + ..\packages\System.Threading.Thread.4.0.0\lib\net46\System.Threading.Thread.dll + + + + + + + + + + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll + + + True + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll + + + True + ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll + + + True + ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll + + + True + ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll + + + True + ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + + + True + ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll + + + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll + + + ..\packages\System.Xml.XmlDocument.4.0.1\lib\net46\System.Xml.XmlDocument.dll + + + ..\packages\System.Xml.XPath.4.0.1\lib\net46\System.Xml.XPath.dll + + + ..\packages\System.Xml.XPath.XDocument.4.0.1\lib\net46\System.Xml.XPath.XDocument.dll + + + True + ..\packages\WebGrease.1.5.2\lib\WebGrease.dll + + + + + ..\packages\Microsoft.ApplicationInsights.2.2.0\lib\net45\Microsoft.ApplicationInsights.dll + + + ..\packages\Microsoft.ApplicationInsights.Agent.Intercept.2.0.6\lib\net45\Microsoft.AI.Agent.Intercept.dll + + + ..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.2.0\lib\net45\Microsoft.AI.DependencyCollector.dll + + + ..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.2.0\lib\net45\Microsoft.AI.PerfCounterCollector.dll + + + ..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.2.0\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll + + + ..\packages\Microsoft.ApplicationInsights.WindowsServer.2.2.0\lib\net45\Microsoft.AI.WindowsServer.dll + + + ..\packages\Microsoft.ApplicationInsights.Web.2.2.0\lib\net45\Microsoft.AI.Web.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Global.asax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + Designer + + + Web.config + + + Web.config + + + + + + + + + + + + + + + + + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + True + True + 49807 + / + http://localhost:49807/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file