]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/update-index.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / update-index.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/update-index.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/update-index.js
new file mode 100644 (file)
index 0000000..fe4244c
--- /dev/null
@@ -0,0 +1,195 @@
+var common = require('../common-tap.js')
+var test = require('tap').test
+var npm = require('../../')
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+var path = require('path')
+var mr = require('npm-registry-mock')
+
+var updateIndex = require('../../lib/cache/update-index.js')
+
+var PKG_DIR = path.resolve(__dirname, 'get-basic')
+var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+
+var server
+
+var mocks = {
+  basic: function (mock) {
+    mock.get('/-/all').reply(200, allMock)
+  },
+  auth: function (mock) {
+    var littleBobbyTablesAuth = new Buffer('bobby:tables').toString('base64')
+    var auth = 'Basic ' + littleBobbyTablesAuth
+    mock.get('/-/all', { authorization: auth }).reply(200, allMock)
+    mock.get('/-/all').reply(401, {
+      error: 'unauthorized',
+      reason: 'You are not authorized to access this db.'
+    })
+  }
+}
+
+var allMock = {
+  '_updated': 1411727900 + 25,
+  'generator-frontcow': {
+      'name': 'generator-frontcow',
+      'description': 'f36b6a6123da50959741e2ce4d634f96ec668c56 This is a fake description to ensure we do not accidentally search the real npm registry or use some kind of cache',
+      'dist-tags': {
+          'latest': '0.1.19'
+      },
+      'maintainers': [
+          {
+              'name': 'bcabanes',
+              'email': 'contact@benjamincabanes.com'
+          }
+      ],
+      'homepage': 'https://github.com/bcabanes/generator-frontcow',
+      'keywords': [
+          'sass',
+          'frontend',
+          'yeoman-generator',
+          'atomic',
+          'design',
+          'sass',
+          'foundation',
+          'foundation5',
+          'atomic design',
+          'bourbon',
+          'polyfill',
+          'font awesome'
+      ],
+      'repository': {
+          'type': 'git',
+          'url': 'https://github.com/bcabanes/generator-frontcow'
+      },
+      'author': {
+          'name': 'ben',
+          'email': 'contact@benjamincabanes.com',
+          'url': 'https://github.com/bcabanes'
+      },
+      'bugs': {
+          'url': 'https://github.com/bcabanes/generator-frontcow/issues'
+      },
+      'license': 'MIT',
+      'readmeFilename': 'README.md',
+      'time': {
+          'modified': '2014-10-03T02:26:18.406Z'
+      },
+      'versions': {
+          '0.1.19': 'latest'
+      }
+  },
+  'marko': {
+      'name': 'marko',
+      'description': 'Marko is an extensible, streaming, asynchronous, high performance, HTML-based templating language that can be used in Node.js or in the browser.',
+      'dist-tags': {
+          'latest': '1.2.16'
+      },
+      'maintainers': [
+          {
+              'name': 'pnidem',
+              'email': 'pnidem@gmail.com'
+          },
+          {
+              'name': 'philidem',
+              'email': 'phillip.idem@gmail.com'
+          }
+      ],
+      'homepage': 'https://github.com/raptorjs/marko',
+      'keywords': [
+          'templating',
+          'template',
+          'async',
+          'streaming'
+      ],
+      'repository': {
+          'type': 'git',
+          'url': 'https://github.com/raptorjs/marko.git'
+      },
+      'author': {
+          'name': 'Patrick Steele-Idem',
+          'email': 'pnidem@gmail.com'
+      },
+      'bugs': {
+          'url': 'https://github.com/raptorjs/marko/issues'
+      },
+      'license': 'Apache License v2.0',
+      'readmeFilename': 'README.md',
+      'users': {
+          'pnidem': true
+      },
+      'time': {
+          'modified': '2014-10-03T02:27:31.775Z'
+      },
+      'versions': {
+          '1.2.16': 'latest'
+      }
+  }
+}
+
+function setup (t, mock, extra) {
+  mkdirp.sync(CACHE_DIR)
+  mr({ port: common.port, plugin: mock }, function (er, s) {
+    npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+      if (extra) {
+        Object.keys(extra).forEach(function (k) {
+          npm.config.set(k, extra[k], 'user')
+        })
+      }
+      t.ifError(err, 'no error')
+      server = s
+      t.end()
+    })
+  })
+}
+
+function cleanup (t) {
+  server.close(function () {
+    rimraf.sync(PKG_DIR)
+
+    t.end()
+  })
+}
+
+test('setup basic', function (t) {
+  setup(t, mocks.basic)
+})
+
+test('request basic', function (t) {
+  updateIndex(0, function (er) {
+    t.ifError(er, 'no error')
+    t.end()
+  })
+})
+
+test('cleanup basic', cleanup)
+
+test('setup auth', function (t) {
+  setup(t, mocks.auth)
+})
+
+test('request auth failure', function (t) {
+  updateIndex(0, function (er) {
+    t.equals(er.code, 'E401', 'gotta get that auth')
+    t.ok(/^unauthorized/.test(er.message), 'unauthorized message')
+    t.end()
+  })
+})
+
+test('cleanup auth failure', cleanup)
+
+test('setup auth', function (t) {
+  // mimic as if alwaysAuth had been set
+  setup(t, mocks.auth, {
+    _auth: new Buffer('bobby:tables').toString('base64'),
+    'always-auth': true
+  })
+})
+
+test('request auth success', function (t) {
+  updateIndex(0, function (er) {
+    t.ifError(er, 'no error')
+    t.end()
+  })
+})
+
+test('cleanup auth', cleanup)