summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npm-registry-client/test/dist-tags-add.js
blob: 00f43b0f283699df5af0d65b4dda960a4449a936 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
var test = require('tap').test

var server = require('./lib/server.js')
var common = require('./lib/common.js')
var client = common.freshClient()

function nop () {}

var BASE_URL = 'http://localhost:1337/'
var URI = '/-/package/underscore/dist-tags/test'
var TOKEN = 'foo'
var AUTH = {
  token: TOKEN
}
var PACKAGE = 'underscore'
var DIST_TAG = 'test'
var VERSION = '3.1.3'
var PARAMS = {
  'package': PACKAGE,
  distTag: DIST_TAG,
  version: VERSION,
  auth: AUTH
}

test('distTags.add call contract', function (t) {
  t.throws(function () {
    client.distTags.add(undefined, AUTH, nop)
  }, 'requires a URI')

  t.throws(function () {
    client.distTags.add([], PARAMS, nop)
  }, 'requires URI to be a string')

  t.throws(function () {
    client.distTags.add(BASE_URL, undefined, nop)
  }, 'requires params object')

  t.throws(function () {
    client.distTags.add(BASE_URL, '', nop)
  }, 'params must be object')

  t.throws(function () {
    client.distTags.add(BASE_URL, PARAMS, undefined)
  }, 'requires callback')

  t.throws(function () {
    client.distTags.add(BASE_URL, PARAMS, 'callback')
  }, 'callback must be function')

  t.throws(
    function () {
      var params = {
        distTag: DIST_TAG,
        version: VERSION,
        auth: AUTH
      }
      client.distTags.add(BASE_URL, params, nop)
    },
    {
      name: 'AssertionError',
      message: 'must pass package name to distTags.add'
    },
    'distTags.add must include package name'
  )

  t.throws(
    function () {
      var params = {
        'package': PACKAGE,
        version: VERSION,
        auth: AUTH
      }
      client.distTags.add(BASE_URL, params, nop)
    },
    {
      name: 'AssertionError',
      message: 'must pass package distTag name to distTags.add'
    },
    'distTags.add must include dist-tag'
  )

  t.throws(
    function () {
      var params = {
        'package': PACKAGE,
        distTag: DIST_TAG,
        auth: AUTH
      }
      client.distTags.add(BASE_URL, params, nop)
    },
    {
      name: 'AssertionError',
      message: 'must pass version to be mapped to distTag to distTags.add'
    },
    'distTags.add must include version'
  )

  t.throws(
    function () {
      var params = {
        'package': PACKAGE,
        distTag: DIST_TAG,
        version: VERSION
      }
      client.distTags.add(BASE_URL, params, nop)
    },
    { name: 'AssertionError', message: 'must pass auth to distTags.add' },
    'distTags.add must include auth'
  )

  t.end()
})

test('add a new dist-tag to a package', function (t) {
  server.expect('PUT', URI, function (req, res) {
    t.equal(req.method, 'PUT')

    var b = ''
    req.setEncoding('utf8')
    req.on('data', function (d) {
      b += d
    })

    req.on('end', function () {
      t.doesNotThrow(function () {
        var parsed = JSON.parse(b)
        t.deepEqual(parsed, VERSION)

        res.statusCode = 200
        res.json({ test: VERSION })
      }, 'got valid JSON from client')
    })
  })

  client.distTags.add(BASE_URL, PARAMS, function (error, data) {
    t.ifError(error, 'no errors')
    t.ok(data.test, 'dist-tag added')

    server.close()
    t.end()
  })
})