| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- var test = require('tap').test
- var CC = require('../index.js').ConfigChain
- var env = { foo_blaz : 'blzaa', foo_env : 'myenv' }
- var jsonObj = { blaz: 'json', json: true }
- var iniObj = { 'x.y.z': 'xyz', blaz: 'ini' }
- var fs = require('fs')
- var ini = require('ini')
- fs.writeFileSync('/tmp/config-chain-class.json', JSON.stringify(jsonObj))
- fs.writeFileSync('/tmp/config-chain-class.ini', ini.stringify(iniObj))
- var http = require('http')
- var reqs = 0
- http.createServer(function (q, s) {
- if (++reqs === 2) this.close()
- if (q.url === '/json') {
- // make sure that the requests come back from the server
- // out of order. they should still be ordered properly
- // in the resulting config object set.
- setTimeout(function () {
- s.setHeader('content-type', 'application/json')
- s.end(JSON.stringify({
- blaz: 'http',
- http: true,
- json: true
- }))
- }, 200)
- } else {
- s.setHeader('content-type', 'application/ini')
- s.end(ini.stringify({
- blaz: 'http',
- http: true,
- ini: true,
- json: false
- }))
- }
- }).listen(1337)
- test('basic class test', function (t) {
- var cc = new CC()
- var expectlist =
- [ { blaz: 'json', json: true },
- { 'x.y.z': 'xyz', blaz: 'ini' },
- { blaz: 'blzaa', env: 'myenv' },
- { blaz: 'http', http: true, json: true },
- { blaz: 'http', http: true, ini: true, json: false } ]
- cc.addFile('/tmp/config-chain-class.json')
- .addFile('/tmp/config-chain-class.ini')
- .addEnv('foo_', env)
- .addUrl('http://localhost:1337/json')
- .addUrl('http://localhost:1337/ini')
- .on('load', function () {
- t.same(cc.list, expectlist)
- t.same(cc.snapshot, { blaz: 'json',
- json: true,
- 'x.y.z': 'xyz',
- env: 'myenv',
- http: true,
- ini: true })
- cc.del('blaz', '/tmp/config-chain-class.json')
- t.same(cc.snapshot, { blaz: 'ini',
- json: true,
- 'x.y.z': 'xyz',
- env: 'myenv',
- http: true,
- ini: true })
- cc.del('blaz')
- t.same(cc.snapshot, { json: true,
- 'x.y.z': 'xyz',
- env: 'myenv',
- http: true,
- ini: true })
- cc.shift()
- t.same(cc.snapshot, { 'x.y.z': 'xyz',
- env: 'myenv',
- http: true,
- json: true,
- ini: true })
- cc.shift()
- t.same(cc.snapshot, { env: 'myenv',
- http: true,
- json: true,
- ini: true })
- cc.shift()
- t.same(cc.snapshot, { http: true,
- json: true,
- ini: true })
- cc.shift()
- t.same(cc.snapshot, { http: true,
- ini: true,
- json: false })
- cc.shift()
- t.same(cc.snapshot, {})
- t.end()
- })
- })
|