Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2017-05-17 03:11:49 +0300
committerRebecca Turner <me@re-becca.org>2017-05-26 04:55:23 +0300
commit317ae92913781539d9feeb84a9ac487d355cb60c (patch)
tree07199afd6e8366213d4d56cfd1b518b723cee5ab /test
parent932888fc6977412a4be0117b6681334f6a3cd44b (diff)
shrinkwrap: update packageIntegrity for spec compliance
Diffstat (limited to 'test')
-rw-r--r--test/tap/shrinkwrap-empty-deps.js6
-rw-r--r--test/tap/shrinkwrap-extra-metadata.js6
-rw-r--r--test/tap/shrinkwrap-package-integrity.js50
3 files changed, 54 insertions, 8 deletions
diff --git a/test/tap/shrinkwrap-empty-deps.js b/test/tap/shrinkwrap-empty-deps.js
index c4c218850..f2761a19b 100644
--- a/test/tap/shrinkwrap-empty-deps.js
+++ b/test/tap/shrinkwrap-empty-deps.js
@@ -7,8 +7,8 @@ const mr = require('npm-registry-mock')
const npm = require('../../lib/npm.js')
const osenv = require('osenv')
const path = require('path')
+const pkgSri = require('../../lib/utils/package-integrity.js')
const rimraf = require('rimraf')
-const ssri = require('ssri')
const test = require('tap').test
const pkg = path.resolve(__dirname, 'shrinkwrap-empty-deps')
@@ -56,9 +56,7 @@ test('returns a list of removed items', function (t) {
'version': '0.0.0',
'createdWith': `npm@${npm.version}`,
'lockfileVersion': npm.lockfileVersion,
- 'packageIntegrity': ssri.fromData(JSON.stringify(json, null, 2), {
- algorithms: ['sha512']
- }).toString()
+ 'packageIntegrity': pkgSri.hash(json)
},
JSON.parse(desired),
'shrinkwrap handled empty deps without exploding'
diff --git a/test/tap/shrinkwrap-extra-metadata.js b/test/tap/shrinkwrap-extra-metadata.js
index 011f7a7a5..5c40faf5c 100644
--- a/test/tap/shrinkwrap-extra-metadata.js
+++ b/test/tap/shrinkwrap-extra-metadata.js
@@ -7,8 +7,8 @@ const mr = require('npm-registry-mock')
const npm = require('../../lib/npm.js')
const osenv = require('osenv')
const path = require('path')
+const pkgSri = require('../../lib/utils/package-integrity.js')
const rimraf = require('rimraf')
-const ssri = require('ssri')
const test = require('tap').test
const pkg = path.join(__dirname, path.basename(__filename, '.js'))
@@ -54,9 +54,7 @@ test('adds additional metadata fields from the pkglock spec', function (t) {
'version': '0.0.0',
'createdWith': `npm@${npm.version}`,
'lockfileVersion': npm.lockfileVersion,
- 'packageIntegrity': ssri.fromData(JSON.stringify(json, null, 2), {
- algorithms: ['sha512']
- }).toString()
+ 'packageIntegrity': pkgSri.hash(json)
},
JSON.parse(desired),
'shrinkwrap wrote the expected metadata fields'
diff --git a/test/tap/shrinkwrap-package-integrity.js b/test/tap/shrinkwrap-package-integrity.js
new file mode 100644
index 000000000..6333757d7
--- /dev/null
+++ b/test/tap/shrinkwrap-package-integrity.js
@@ -0,0 +1,50 @@
+'use strict'
+
+const pkgsri = require('../../lib/utils/package-integrity.js')
+const ssri = require('ssri')
+const test = require('tap').test
+
+test('generates integrity according to spec', (t) => {
+ const pkgJson = {
+ 'name': 'foo',
+ 'version': '1.0.0',
+ 'dependencies': {
+ 'x': '1.0.0'
+ },
+ 'devDependencies': {
+ 'y': '1.0.0'
+ },
+ 'optionalDependencies': {
+ 'z': '1.0.0'
+ }
+ }
+ const integrity = pkgsri.hash(pkgJson)
+ t.ok(integrity && integrity.toString(), 'hash returned')
+ t.equal(
+ ssri.parse(integrity).toString(),
+ integrity,
+ 'hash is a valid ssri string'
+ )
+ t.ok(pkgsri.check(pkgJson, integrity), 'same-data integrity check succeeds')
+ t.done()
+})
+
+test('updates if anything changes in package.json', (t) => {
+ const pkgJson = {
+ 'name': 'foo',
+ 'version': '1.0.0',
+ 'dependencies': {
+ 'x': '1.0.0'
+ },
+ 'devDependencies': {
+ 'y': '1.0.0'
+ },
+ 'optionalDependencies': {
+ 'z': '1.0.0'
+ }
+ }
+ const sri = pkgsri.hash(pkgJson)
+ pkgJson.version = '1.2.3'
+ t.equal(pkgsri.check(pkgJson, sri), false, 'no match after pkgJson change')
+ t.done()
+})