Files
cnpmjs.org/test/utils.js
fengmk2 aa7cb3df01 feat: allow to disable total modules query on db (#1624)
use `config.enableTotalCount = false`
2021-02-24 18:29:49 +08:00

128 lines
4.0 KiB
JavaScript

'use strict';
var path = require('path');
var fs = require('fs');
var mm = require('mm');
var config = require('../config');
var SyncModuleWorker = require('../controllers/sync_module_worker');
var Package = require('../services/package');
var fixtures = path.join(__dirname, 'fixtures');
var admin = exports.admin = 'cnpmjstest10';
exports.adminAuth = 'Basic ' + Buffer.from(admin + ':' + admin).toString('base64');
config.admins[admin] = admin + '@cnpmjs.org';
var otherAdmin2 = exports.otherAdmin2 = 'cnpmjstestAdmin2';
exports.otherAdmin2Auth = 'Basic ' + Buffer.from(otherAdmin2 + ':' + otherAdmin2).toString('base64');
config.admins[otherAdmin2] = otherAdmin2 + '@cnpmjs.org';
var otherAdmin3 = exports.otherAdmin3 = 'cnpmjstestAdmin3';
exports.otherAdmin3Auth = 'Basic ' + Buffer.from(otherAdmin3 + ':' + otherAdmin3).toString('base64');
config.admins[otherAdmin3] = otherAdmin3 + '@cnpmjs.org';
var otherUser = exports.otherUser = 'cnpmjstest101';
exports.otherUserAuth = 'Basic ' + Buffer.from(otherUser + ':' + otherUser).toString('base64');
var secondUser = exports.secondUser = 'cnpmjstest102';
exports.secondUserAuth = 'Basic ' + Buffer.from(secondUser + ':' + secondUser).toString('base64');
var thirdUser = exports.thirdUser = 'cnpmjstest103';
exports.thirdUserAuth = 'Basic ' + Buffer.from(thirdUser + ':' + thirdUser).toString('base64');
var _pkg = fs.readFileSync(path.join(fixtures, 'package_and_tgz.json'));
var _pkg2 = fs.readFileSync(path.join(fixtures, 'package_and_tgz_by_token.json'));
exports.getPackage = function (name, version, user, tag, readme) {
// name: mk2testmodule
name = name || 'mk2testmodule';
version = version || '0.0.1';
user = user || admin;
tag = tag || 'latest';
var tags = {};
tags[tag] = version;
var pkg = JSON.parse(_pkg);
var versions = pkg.versions;
pkg.versions = {};
pkg.versions[version] = versions[Object.keys(versions)[0]];
pkg.maintainers[0].name = user;
pkg.versions[version].maintainers[0].name = user;
pkg.versions[version].name = name;
pkg.versions[version].version = version;
pkg.versions[version]._id = name + '@' + version;
pkg.name = name;
pkg['dist-tags'] = tags;
if (readme) {
pkg.versions[version].readme = pkg.readme = readme;
}
return pkg;
};
exports.getPackageWithToken = function (name, version, user, tag, readme) {
// name: mk2testmodule
name = name || 'mk2testmodule';
version = version || '0.0.1';
tag = tag || 'latest';
var tags = {};
tags[tag] = version;
var pkg = JSON.parse(_pkg2);
var versions = pkg.versions;
pkg.versions = {};
pkg.versions[version] = versions[Object.keys(versions)[0]];
pkg.versions[version].name = name;
pkg.versions[version].version = version;
pkg.versions[version]._id = name + '@' + version;
pkg.name = name;
pkg['dist-tags'] = tags;
if (readme) {
pkg.versions[version].readme = pkg.readme = readme;
}
return pkg;
};
exports.sync = function (name, callback) {
mm(config, 'syncModel', 'all');
var worker = new SyncModuleWorker({
name: name,
noDep: true,
});
worker.start();
worker.on('end', function () {
mm.restore();
callback();
});
};
exports.getFileContent = function (name) {
var fixtures = path.join(__dirname, 'fixtures');
return fs.readFileSync(path.join(fixtures, name), 'utf8');
};
exports.createModule = function* (name, version, user, tag) {
var sourcePackage = {
version: version,
name: name,
publish_time: Date.now(),
};
var mod = {
version: sourcePackage.version,
name: sourcePackage.name,
package: sourcePackage,
author: user || 'unittest',
publish_time: sourcePackage.publish_time,
};
var dist = {
tarball: 'http://registry.npmjs.org/' + name + '/-/' + name + '-' + version + '.tgz',
shasum: '9d7bc446e77963933301dd602d5731cb861135e0',
size: 100,
};
mod.package.dist = dist;
yield Package.saveModule(mod);
yield Package.saveModuleAbbreviated(mod);
// add tag
yield Package.addModuleTag(name, tag || 'latest', version);
return yield Package.getModule(mod.name, mod.version);
}