1var fs = require('fs') 2var path = require('path') 3var mocha = require('mocha') 4var assert = require('assert') 5var requireUncached = require('require-uncached') 6 7var npmRcPath = path.join(__dirname, '..', '.npmrc') 8var afterEach = mocha.afterEach 9var describe = mocha.describe 10var it = mocha.it 11 12describe('registry-url', function () { 13 afterEach(function (done) { 14 fs.unlink(npmRcPath, function () { 15 done() 16 }) 17 }) 18 19 it('should read global if no local is found', function () { 20 var getRegistryUrl = requireUncached('../registry-url') 21 getRegistryUrl() 22 }) 23 24 it('should return default registry if no url is given for scope', function (done) { 25 fs.writeFile(npmRcPath, 'registry=https://registry.npmjs.org/', function (err) { 26 var getRegistryUrl = requireUncached('../registry-url') 27 assert(!err, err) 28 assert.equal(getRegistryUrl('@somescope'), 'https://registry.npmjs.org/') 29 done() 30 }) 31 }) 32 33 it('should return registry url if url is given for scope ', function (done) { 34 fs.writeFile(npmRcPath, '@somescope:registry=https://some.registry/', function (err) { 35 var getRegistryUrl = requireUncached('../registry-url') 36 assert(!err, err) 37 assert.equal(getRegistryUrl('@somescope'), 'https://some.registry/') 38 done() 39 }) 40 }) 41 42 it('should append trailing slash if not present', function (done) { 43 fs.writeFile(npmRcPath, '@somescope:registry=https://some.registry', function (err) { 44 var getRegistryUrl = requireUncached('../registry-url') 45 assert(!err, err) 46 assert.equal(getRegistryUrl('@somescope'), 'https://some.registry/') 47 done() 48 }) 49 }) 50 51 it('should return configured global registry if given', function (done) { 52 var content = [ 53 'registry=http://registry.foobar.eu/', 54 '@somescope:registry=https://some.url/', '' 55 ].join('\n') 56 57 fs.writeFile(npmRcPath, content, function (err) { 58 var getRegistryUrl = requireUncached('../registry-url') 59 assert(!err, err) 60 assert.equal(getRegistryUrl(), 'http://registry.foobar.eu/') 61 done() 62 }) 63 }) 64}) 65