-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathenvironment-variable-tests.js
131 lines (112 loc) · 4.09 KB
/
environment-variable-tests.js
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
'use strict'
const Suite = require('../../suite')
var assert = require('assert')
var ConnectionParameters = require('../../../lib/connection-parameters')
var defaults = require('../../../lib').defaults
// clear process.env
var realEnv = {}
for (var key in process.env) {
realEnv[key] = process.env[key]
delete process.env[key]
}
const suite = new Suite('ConnectionParameters')
const clearEnv = () => {
// clear process.env
for (var key in process.env) {
delete process.env[key]
}
}
suite.test('ConnectionParameters initialized from environment variables', function () {
clearEnv()
process.env['PGHOST'] = 'local'
process.env['PGUSER'] = 'bmc2'
process.env['PGPORT'] = 7890
process.env['PGDATABASE'] = 'allyerbase'
process.env['PGPASSWORD'] = 'open'
process.env['PGPRINCIPAL'] = 'postgres'
var subject = new ConnectionParameters()
assert.equal(subject.host, 'local', 'env host')
assert.equal(subject.user, 'bmc2', 'env user')
assert.equal(subject.port, 7890, 'env port')
assert.equal(subject.database, 'allyerbase', 'env database')
assert.equal(subject.password, 'open', 'env password')
assert.equal(subject.principal, 'postgres', 'env principal')
})
suite.test('ConnectionParameters initialized from mix', function () {
clearEnv()
process.env['PGHOST'] = 'local'
process.env['PGUSER'] = 'bmc2'
process.env['PGPORT'] = 7890
process.env['PGDATABASE'] = 'allyerbase'
process.env['PGPASSWORD'] = 'open'
delete process.env['PGPASSWORD']
delete process.env['PGDATABASE']
var subject = new ConnectionParameters({
user: 'testing',
database: 'zugzug',
principal: 'postgres',
})
assert.equal(subject.host, 'local', 'env host')
assert.equal(subject.user, 'testing', 'config user')
assert.equal(subject.port, 7890, 'env port')
assert.equal(subject.database, 'zugzug', 'config database')
assert.equal(subject.password, defaults.password, 'defaults password')
assert.equal(subject.principal, 'postgres', 'config principal')
})
suite.test('connection string parsing', function () {
clearEnv()
var string = 'postgres://brian:pw@boom:381/lala'
var subject = new ConnectionParameters(string)
assert.equal(subject.host, 'boom', 'string host')
assert.equal(subject.user, 'brian', 'string user')
assert.equal(subject.password, 'pw', 'string password')
assert.equal(subject.port, 381, 'string port')
assert.equal(subject.database, 'lala', 'string database')
})
suite.test('connection string parsing - ssl', function () {
// clear process.env
clearEnv()
var string = 'postgres://brian:pw@boom:381/lala?ssl=true'
var subject = new ConnectionParameters(string)
assert.equal(subject.ssl, true, 'ssl')
string = 'postgres://brian:pw@boom:381/lala?ssl=1'
subject = new ConnectionParameters(string)
assert.equal(subject.ssl, true, 'ssl')
string = 'postgres://brian:pw@boom:381/lala?other&ssl=true'
subject = new ConnectionParameters(string)
assert.equal(subject.ssl, true, 'ssl')
string = 'postgres://brian:pw@boom:381/lala?ssl=0'
subject = new ConnectionParameters(string)
assert.equal(!!subject.ssl, false, 'ssl')
string = 'postgres://brian:pw@boom:381/lala'
subject = new ConnectionParameters(string)
assert.equal(!!subject.ssl, false, 'ssl')
string = 'postgres://brian:pw@boom:381/lala?ssl=no-verify'
subject = new ConnectionParameters(string)
assert.deepStrictEqual(subject.ssl, { rejectUnauthorized: false }, 'ssl')
})
suite.test('ssl is false by default', function () {
clearEnv()
var subject = new ConnectionParameters()
assert.equal(subject.ssl, false)
})
var testVal = function (mode, expected) {
suite.test('ssl is ' + expected + ' when $PGSSLMODE=' + mode, function () {
clearEnv()
process.env.PGSSLMODE = mode
var subject = new ConnectionParameters()
assert.deepStrictEqual(subject.ssl, expected)
})
}
testVal('', false)
testVal('disable', false)
testVal('allow', false)
testVal('prefer', true)
testVal('require', true)
testVal('verify-ca', true)
testVal('verify-full', true)
testVal('no-verify', { rejectUnauthorized: false })
// restore process.env
for (var key in realEnv) {
process.env[key] = realEnv[key]
}