diff --git a/lib/datasource/nuget/v3.js b/lib/datasource/nuget/v3.js index 2ccf6969d9ea2e255aa78690fb2cf91fb8a999b1..1b5a3073aa0671ccdb096d71227fd939437cf6c3 100644 --- a/lib/datasource/nuget/v3.js +++ b/lib/datasource/nuget/v3.js @@ -60,7 +60,11 @@ async function getQueryUrl(url) { } async function getPkgReleases(registryUrl, feedUrl, pkgName) { - const queryUrl = `${feedUrl}?q=PackageId:${pkgName}&semVerLevel=2.0.0&prerelease=true`; + let queryUrl = `${feedUrl}?q=${pkgName}`; + if (registryUrl.toLowerCase() === defaultNugetFeed.toLowerCase()) { + queryUrl = queryUrl.replace('q=', 'q=PackageId:'); + queryUrl += '&semVerLevel=2.0.0&prerelease=true'; + } const dep = { pkgName, }; @@ -77,12 +81,14 @@ async function getPkgReleases(registryUrl, feedUrl, pkgName) { return null; } - // There are no pkgName is current feed - if (pkgUrlListRaw.body.totalHits === 0) { + const match = pkgUrlListRaw.body.data.find( + item => item.id.toLowerCase() === pkgName.toLowerCase() + ); + if (!match) { + // There are no pkgName is current feed return null; } - - dep.releases = (pkgUrlListRaw.body.data[0].versions || []).map(item => ({ + dep.releases = (match.versions || []).map(item => ({ version: item.version, })); diff --git a/test/datasource/nuget.spec.js b/test/datasource/nuget.spec.js index e1cc3abee454a59204838159c25b18f16d64e154..0ef9a60c854cc6a865500b00a0e18a2464367996 100644 --- a/test/datasource/nuget.spec.js +++ b/test/datasource/nuget.spec.js @@ -268,6 +268,21 @@ describe('datasource/nuget', () => { expect(res).toMatchSnapshot(); expect(res.sourceUrl).toBeDefined(); }); + it('processes real data (v3) feed is not a nuget.org with mismatch', async () => { + got.mockReturnValueOnce({ + body: JSON.parse(nugetIndexV3), + statusCode: 200, + }); + got.mockReturnValueOnce({ + body: JSON.parse(pkgListV3), + statusCode: 200, + }); + const res = await datasource.getPkgReleases({ + ...configV3NotNugetOrg, + lookupName: 'nun', + }); + expect(res).toBeNull(); + }); it('processes real data without project url (v3)', async () => { got.mockReturnValueOnce({ body: JSON.parse(nugetIndexV3),