64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
const { test, describe, beforeEach, afterEach } = require('node:test')
|
|
const assert = require('assert/strict')
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
|
|
const { downloadPackage } = require('../../src/app/lib/npm')
|
|
|
|
const testFolder = path.join(__dirname, 'npm-test-modules')
|
|
|
|
describe('npm', () => {
|
|
beforeEach(() => {
|
|
if (fs.existsSync(testFolder)) {
|
|
fs.rmSync(testFolder, { recursive: true, force: true })
|
|
}
|
|
})
|
|
|
|
afterEach(() => {
|
|
if (fs.existsSync(testFolder)) {
|
|
fs.rmSync(testFolder, { recursive: true, force: true })
|
|
}
|
|
})
|
|
|
|
test('should download a simple package from npm', async () => {
|
|
const pkgPath = await downloadPackage('lodash', testFolder)
|
|
assert.ok(fs.existsSync(pkgPath))
|
|
assert.ok(fs.existsSync(path.join(pkgPath, 'package.json')))
|
|
const lodash = require(path.join(pkgPath, 'lodash.js'))
|
|
assert.ok(lodash.clone)
|
|
assert.ok(lodash.without)
|
|
})
|
|
|
|
test('should return cached path if package already exists', async () => {
|
|
const firstPath = await downloadPackage('lodash', testFolder)
|
|
const secondPath = await downloadPackage('lodash', testFolder)
|
|
assert.strictEqual(firstPath, secondPath)
|
|
})
|
|
|
|
test('should download a package with dependencies', async () => {
|
|
const pkgPath = await downloadPackage('debug', testFolder)
|
|
assert.ok(fs.existsSync(pkgPath))
|
|
assert.ok(fs.existsSync(path.join(pkgPath, 'package.json')))
|
|
})
|
|
|
|
test('should throw error for non-existent package', async () => {
|
|
await assert.rejects(
|
|
async () => {
|
|
await downloadPackage('this-package-does-not-exist-12345', testFolder)
|
|
},
|
|
(err) => {
|
|
return err.message.includes('this-package-does-not-exist-12345') || err.code === 'ENOTFOUND'
|
|
}
|
|
)
|
|
})
|
|
|
|
test('should download ftp-srv package with dependencies', async () => {
|
|
const pkgPath = await downloadPackage('ftp-srv', testFolder)
|
|
assert.ok(fs.existsSync(pkgPath))
|
|
assert.ok(fs.existsSync(path.join(pkgPath, 'package.json')))
|
|
const { FtpSrv } = require(pkgPath)
|
|
assert.ok(FtpSrv)
|
|
assert.ok(typeof FtpSrv === 'function')
|
|
})
|
|
})
|