summaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js')
-rw-r--r--deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js919
1 files changed, 0 insertions, 919 deletions
diff --git a/deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js b/deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js
deleted file mode 100644
index 65b8c825..00000000
--- a/deps/node/deps/npm/node_modules/libnpmpublish/test/publish.js
+++ /dev/null
@@ -1,919 +0,0 @@
-'use strict'
-
-const crypto = require('crypto')
-const cloneDeep = require('lodash.clonedeep')
-const figgyPudding = require('figgy-pudding')
-const mockTar = require('./util/mock-tarball.js')
-const { PassThrough } = require('stream')
-const ssri = require('ssri')
-const { test } = require('tap')
-const tnock = require('./util/tnock.js')
-
-const publish = require('../publish.js')
-
-const OPTS = figgyPudding({ registry: {} })({
- registry: 'https://mock.reg/'
-})
-
-const REG = OPTS.registry
-
-test('basic publish', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData, OPTS.concat({
- token: 'deadbeef'
- })).then(ret => {
- t.ok(ret, 'publish succeeded')
- })
- })
-})
-
-test('scoped publish', t => {
- const manifest = {
- name: '@zkat/libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: '@zkat/libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: '@zkat/libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: '@zkat/libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: '@zkat/libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/@zkat/libnpmpublish/-/@zkat/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- '@zkat/libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/@zkat%2flibnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('retry after a conflict', t => {
- const REV = '72-47f2986bfd8e8b55068b204588bbf484'
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const basePackument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {},
- versions: {},
- _attachments: {}
- }
- const currentPackument = cloneDeep(Object.assign({}, basePackument, {
- time: {
- modified: new Date().toISOString(),
- created: new Date().toISOString(),
- '1.0.1': new Date().toISOString()
- },
- 'dist-tags': { latest: '1.0.1' },
- maintainers: [{ name: 'zkat', email: 'idk@idk.tech' }],
- versions: {
- '1.0.1': {
- _id: 'libnpmpublish@1.0.1',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: 'libnpmpublish',
- version: '1.0.1',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.1.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.1.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }))
- const newPackument = cloneDeep(Object.assign({}, basePackument, {
- 'dist-tags': { latest: '1.0.0' },
- maintainers: [{ name: 'other', email: 'other@idk.tech' }],
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- _npmUser: {
- name: 'other',
- email: 'other@idk.tech'
- },
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- maintainers: [{ name: 'other', email: 'other@idk.tech' }],
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }))
- const mergedPackument = cloneDeep(Object.assign({}, basePackument, {
- time: currentPackument.time,
- 'dist-tags': { latest: '1.0.0' },
- maintainers: currentPackument.maintainers,
- versions: Object.assign({}, currentPackument.versions, newPackument.versions),
- _attachments: Object.assign({}, currentPackument._attachments, newPackument._attachments)
- }))
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.notOk(body._rev, 'no _rev in initial post')
- t.deepEqual(body, newPackument, 'got conflicting packument')
- return true
- }).reply(409, { error: 'gimme _rev plz' })
- srv.get('/libnpmpublish?write=true').reply(200, Object.assign({
- _rev: REV
- }, currentPackument))
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, Object.assign({
- _rev: REV
- }, mergedPackument), 'posted packument includes _rev and a merged version')
- return true
- }).reply(201, {})
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- username: 'other',
- email: 'other@idk.tech'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('retry after a conflict -- no versions on remote', t => {
- const REV = '72-47f2986bfd8e8b55068b204588bbf484'
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const basePackument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish'
- }
- const currentPackument = cloneDeep(Object.assign({}, basePackument, {
- maintainers: [{ name: 'zkat', email: 'idk@idk.tech' }]
- }))
- const newPackument = cloneDeep(Object.assign({}, basePackument, {
- 'dist-tags': { latest: '1.0.0' },
- maintainers: [{ name: 'other', email: 'other@idk.tech' }],
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- _npmUser: {
- name: 'other',
- email: 'other@idk.tech'
- },
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- maintainers: [{ name: 'other', email: 'other@idk.tech' }],
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }))
- const mergedPackument = cloneDeep(Object.assign({}, basePackument, {
- 'dist-tags': { latest: '1.0.0' },
- maintainers: currentPackument.maintainers,
- versions: Object.assign({}, currentPackument.versions, newPackument.versions),
- _attachments: Object.assign({}, currentPackument._attachments, newPackument._attachments)
- }))
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.notOk(body._rev, 'no _rev in initial post')
- t.deepEqual(body, newPackument, 'got conflicting packument')
- return true
- }).reply(409, { error: 'gimme _rev plz' })
- srv.get('/libnpmpublish?write=true').reply(200, Object.assign({
- _rev: REV
- }, currentPackument))
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, Object.assign({
- _rev: REV
- }, mergedPackument), 'posted packument includes _rev and a merged version')
- return true
- }).reply(201, {})
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- username: 'other',
- email: 'other@idk.tech'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-test('version conflict', t => {
- const REV = '72-47f2986bfd8e8b55068b204588bbf484'
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const basePackument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {},
- versions: {},
- _attachments: {}
- }
- const newPackument = cloneDeep(Object.assign({}, basePackument, {
- 'dist-tags': { latest: '1.0.0' },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }))
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.notOk(body._rev, 'no _rev in initial post')
- t.deepEqual(body, newPackument, 'got conflicting packument')
- return true
- }).reply(409, { error: 'gimme _rev plz' })
- srv.get('/libnpmpublish?write=true').reply(200, Object.assign({
- _rev: REV
- }, newPackument))
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(
- () => { throw new Error('should not succeed') },
- err => {
- t.equal(err.code, 'EPUBLISHCONFLICT', 'got publish conflict code')
- }
- )
- })
-})
-
-test('publish with basic auth', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- maintainers: [{
- name: 'zkat',
- email: 'kat@example.tech'
- }],
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- _npmUser: {
- name: 'zkat',
- email: 'kat@example.tech'
- },
- maintainers: [{
- name: 'zkat',
- email: 'kat@example.tech'
- }],
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: /^Basic /
- }).reply(201, {})
-
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- username: 'zkat',
- email: 'kat@example.tech'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('publish base64 string', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData.toString('base64'), OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('publish tar stream', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- const stream = new PassThrough()
- setTimeout(() => stream.end(tarData), 0)
- return publish(manifest, stream, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('refuse if package marked private', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- private: true
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(
- () => { throw new Error('should not have succeeded') },
- err => {
- t.equal(err.code, 'EPRIVATE', 'got correct error code')
- }
- )
- })
-})
-
-test('publish includes access', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- access: 'public',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData, OPTS.concat({
- token: 'deadbeef',
- access: 'public'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('refuse if package is unscoped plus `restricted` access', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- access: 'restricted'
- })).then(
- () => { throw new Error('should not have succeeded') },
- err => {
- t.equal(err.code, 'EUNSCOPED', 'got correct error code')
- }
- )
- })
-})
-
-test('refuse if tarball is wrong type', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return publish(manifest, { data: 42 }, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(
- () => { throw new Error('should not have succeeded') },
- err => {
- t.equal(err.code, 'EBADTAR', 'got correct error code')
- }
- )
-})
-
-test('refuse if bad semver on manifest', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: 'lmao',
- description: 'some stuff'
- }
- return publish(manifest, 'deadbeef', OPTS).then(
- () => { throw new Error('should not have succeeded') },
- err => {
- t.equal(err.code, 'EBADSEMVER', 'got correct error code')
- }
- )
-})
-
-test('other error code', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- _npmVersion: '6.9.0',
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(500, { error: 'go away' })
-
- return publish(manifest, tarData, OPTS.concat({
- npmVersion: '6.9.0',
- token: 'deadbeef'
- })).then(
- () => { throw new Error('should not succeed') },
- err => {
- t.match(err.message, /go away/, 'no retry on non-409')
- }
- )
- })
-})
-
-test('publish includes access', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff'
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- access: 'public',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData, OPTS.concat({
- token: 'deadbeef',
- access: 'public'
- })).then(() => {
- t.ok(true, 'publish succeeded')
- })
- })
-})
-
-test('publishConfig on manifest', t => {
- const manifest = {
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- publishConfig: {
- registry: REG
- }
- }
- return mockTar({
- 'package.json': JSON.stringify(manifest),
- 'index.js': 'console.log("hello world")'
- }).then(tarData => {
- const shasum = crypto.createHash('sha1').update(tarData).digest('hex')
- const integrity = ssri.fromData(tarData, { algorithms: ['sha512'] })
- const packument = {
- name: 'libnpmpublish',
- description: 'some stuff',
- readme: '',
- _id: 'libnpmpublish',
- 'dist-tags': {
- latest: '1.0.0'
- },
- versions: {
- '1.0.0': {
- _id: 'libnpmpublish@1.0.0',
- _nodeVersion: process.versions.node,
- name: 'libnpmpublish',
- version: '1.0.0',
- description: 'some stuff',
- dist: {
- shasum,
- integrity: integrity.toString(),
- tarball: `http://mock.reg/libnpmpublish/-/libnpmpublish-1.0.0.tgz`
- },
- publishConfig: {
- registry: REG
- }
- }
- },
- _attachments: {
- 'libnpmpublish-1.0.0.tgz': {
- 'content_type': 'application/octet-stream',
- data: tarData.toString('base64'),
- length: tarData.length
- }
- }
- }
- const srv = tnock(t, REG)
- srv.put('/libnpmpublish', body => {
- t.deepEqual(body, packument, 'posted packument matches expectations')
- return true
- }, {
- authorization: 'Bearer deadbeef'
- }).reply(201, {})
-
- return publish(manifest, tarData, { token: 'deadbeef' }).then(ret => {
- t.ok(ret, 'publish succeeded')
- })
- })
-})