@wiajs/request 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE.md +56 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/stale.yml +19 -0
- package/.swcrc +57 -0
- package/.travis.yml +21 -0
- package/CHANGELOG.md +717 -0
- package/CONTRIBUTING.md +81 -0
- package/biome.json +44 -0
- package/codecov.yml +2 -0
- package/disabled.appveyor.yml +36 -0
- package/dist/request.cjs +1476 -0
- package/dist/request.mjs +1474 -0
- package/examples/README.md +135 -0
- package/gulpfile.js +71 -0
- package/package.json +1 -2
- package/release.sh +45 -0
- package/tests/browser/karma.conf.js +57 -0
- package/tests/browser/ssl/ca.crt +14 -0
- package/tests/browser/ssl/server.crt +14 -0
- package/tests/browser/ssl/server.key +15 -0
- package/tests/browser/start.js +37 -0
- package/tests/browser/test.js +34 -0
- package/tests/fixtures/har.json +158 -0
- package/tests/googledoodle.jpg +0 -0
- package/tests/server.js +142 -0
- package/tests/squid.conf +76 -0
- package/tests/ssl/ca/README.md +8 -0
- package/tests/ssl/ca/ca.cnf +20 -0
- package/tests/ssl/ca/ca.crl +0 -0
- package/tests/ssl/ca/ca.crt +17 -0
- package/tests/ssl/ca/ca.csr +13 -0
- package/tests/ssl/ca/ca.key +18 -0
- package/tests/ssl/ca/ca.srl +1 -0
- package/tests/ssl/ca/client-enc.key +30 -0
- package/tests/ssl/ca/client.cnf +20 -0
- package/tests/ssl/ca/client.crt +20 -0
- package/tests/ssl/ca/client.csr +18 -0
- package/tests/ssl/ca/client.key +27 -0
- package/tests/ssl/ca/gen-all-certs.sh +6 -0
- package/tests/ssl/ca/gen-client.sh +25 -0
- package/tests/ssl/ca/gen-localhost.sh +22 -0
- package/tests/ssl/ca/gen-server.sh +18 -0
- package/tests/ssl/ca/localhost.cnf +20 -0
- package/tests/ssl/ca/localhost.crt +20 -0
- package/tests/ssl/ca/localhost.csr +18 -0
- package/tests/ssl/ca/localhost.js +33 -0
- package/tests/ssl/ca/localhost.key +27 -0
- package/tests/ssl/ca/server.cnf +19 -0
- package/tests/ssl/ca/server.crt +25 -0
- package/tests/ssl/ca/server.csr +29 -0
- package/tests/ssl/ca/server.js +34 -0
- package/tests/ssl/ca/server.key +51 -0
- package/tests/ssl/npm-ca.crt +16 -0
- package/tests/ssl/test.crt +15 -0
- package/tests/ssl/test.key +15 -0
- package/tests/test-agent.js +102 -0
- package/tests/test-agentOptions.js +51 -0
- package/tests/test-api.js +33 -0
- package/tests/test-aws.js +123 -0
- package/tests/test-baseUrl.js +133 -0
- package/tests/test-basic-auth.js +221 -0
- package/tests/test-bearer-auth.js +187 -0
- package/tests/test-body.js +154 -0
- package/tests/test-cookies.js +130 -0
- package/tests/test-defaults.js +340 -0
- package/tests/test-digest-auth.js +232 -0
- package/tests/test-emptyBody.js +56 -0
- package/tests/test-errors.js +108 -0
- package/tests/test-event-forwarding.js +39 -0
- package/tests/test-follow-all-303.js +45 -0
- package/tests/test-follow-all.js +57 -0
- package/tests/test-form-data-error.js +85 -0
- package/tests/test-form-data.js +133 -0
- package/tests/test-form-urlencoded.js +73 -0
- package/tests/test-form.js +101 -0
- package/tests/test-gzip.js +296 -0
- package/tests/test-har.js +175 -0
- package/tests/test-hawk.js +187 -0
- package/tests/test-headers.js +305 -0
- package/tests/test-http-signature.js +110 -0
- package/tests/test-httpModule.js +112 -0
- package/tests/test-https.js +116 -0
- package/tests/test-isUrl.js +120 -0
- package/tests/test-json-request.js +117 -0
- package/tests/test-localAddress.js +49 -0
- package/tests/test-multipart-encoding.js +147 -0
- package/tests/test-multipart.js +129 -0
- package/tests/test-node-debug.js +95 -0
- package/tests/test-oauth.js +721 -0
- package/tests/test-onelineproxy.js +61 -0
- package/tests/test-option-reuse.js +54 -0
- package/tests/test-options-convenience-method.js +52 -0
- package/tests/test-params.js +101 -0
- package/tests/test-piped-redirect.js +55 -0
- package/tests/test-pipes.js +383 -0
- package/tests/test-pool.js +148 -0
- package/tests/test-promise.js +53 -0
- package/tests/test-proxy-connect.js +80 -0
- package/tests/test-proxy.js +304 -0
- package/tests/test-qs.js +135 -0
- package/tests/test-redirect-auth.js +131 -0
- package/tests/test-redirect-complex.js +93 -0
- package/tests/test-redirect.js +449 -0
- package/tests/test-rfc3986.js +106 -0
- package/tests/test-stream.js +36 -0
- package/tests/test-timeout.js +260 -0
- package/tests/test-timing.js +147 -0
- package/tests/test-toJSON.js +45 -0
- package/tests/test-tunnel.js +466 -0
- package/tests/test-unix.js +74 -0
- package/tests/unicycle.jpg +0 -0
- package/request.js +0 -1553
- package/src/ZlibTransform.js +0 -27
- package/src/caseless.js +0 -118
- package/src/index.js +0 -122
- package/src/request.js +0 -967
- package/src/utils.js +0 -274
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEQjCCA6sCCQCt9iAWqkDJxzANBgkqhkiG9w0BAQsFADCBojELMAkGA1UEBhMC
|
|
3
|
+
VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
|
|
4
|
+
ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
|
|
5
|
+
A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
|
|
6
|
+
ZXJzLmNvbTAeFw0xODExMjIxNTIzMjBaFw0yODExMTkxNTIzMjBaMIGjMQswCQYD
|
|
7
|
+
VQQGEwJVUzELMAkGA1UECAwCQ0ExEDAOBgNVBAcMB09ha2xhbmQxEDAOBgNVBAoM
|
|
8
|
+
B3JlcXVlc3QxEDAOBgNVBAsMB3Rlc3RpbmcxKTAnBgNVBAMMIHRlc3RpbmcucmVx
|
|
9
|
+
dWVzdC5taWtlYWxyb2dlcnMuY29tMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlr
|
|
10
|
+
ZWFscm9nZXJzLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANQc
|
|
11
|
+
6Vm7UwK1JQc8gipa++0qsAUq2iv9PGeo8cE+ewWzjKCoh4hOYoDS95oq303Qq+0v
|
|
12
|
+
vzeY9sfe1eZJOdwqCWPPClf2Dkd9rEBtQw6Zm5dodTsqUQtILLiooDUi83OvPcCn
|
|
13
|
+
bc25y5qPC+EbRNYPF9penpry/MhWuqOPO6NzTbsIjW1KRvOsivNIetUr/48S1Cmm
|
|
14
|
+
SILvVQAqbzKGda4ycMkF8XZqIvDnUOBPDAo5ioEY92eNdfcKeJVu9Gv7PFybEWD5
|
|
15
|
+
+jZw/nw9e01q55t+BzF0Kq9yyldeAuldu25nhzZTyZi+umJsI2mpv8R50rvCtYbX
|
|
16
|
+
4ksQy17UlxvEt9ClAYF1cs04f6eAivzKNA4veVSB3ePRKwGCwCIwPA33CzZFO3pw
|
|
17
|
+
1iMZ936nVeb9oNFK4YC7tYid/j6PI2+032tGxS18MGB8FSSGyTCjsMqHCJcOi9fL
|
|
18
|
+
wn1yiLcXt4BKqVfWyi+vsXM3Xh2cdSKQVgIMoRHnr478lK9gT8QwtxNIbF3F9OR6
|
|
19
|
+
qyrZ1VHlTDp1rSEEj6uV/gyx4nh+V9/qPCVYVPKSRGKXP8BI6ujvarOiKx96Pjly
|
|
20
|
+
A7BBDGblF2FJEnKGNGV2XCUJnjV2fNuFRrV3UYkMhbq0SXpSA8FcK/0YhKxKxIsV
|
|
21
|
+
/pUrR//nTlsoYHwQR4AFp0Rhpy6XntO9vsrDetE3AgMBAAEwDQYJKoZIhvcNAQEL
|
|
22
|
+
BQADgYEAnjXSTIfGpBx9/0ZkOQRSGdTjtpy5TQ/VDHtEhRKZYY6dpe6lVpT0hSoT
|
|
23
|
+
SzA8YF+bpFIF+1ZpAgQldBFCmPpVDBCy/ymf8t/V2zSd2c80w6pmxXWQEFq25pib
|
|
24
|
+
OLCcTex2nVGmiUXwIbwnEhWPJvB8T8L8a75x0fPZDHHHoi+K/wQ=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
|
2
|
+
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
|
|
29
|
+
-----END CERTIFICATE REQUEST-----
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var fs = require('fs')
|
|
4
|
+
var https = require('https')
|
|
5
|
+
var options = { key: fs.readFileSync('./server.key'),
|
|
6
|
+
cert: fs.readFileSync('./server.crt') }
|
|
7
|
+
|
|
8
|
+
var server = https.createServer(options, function (req, res) {
|
|
9
|
+
res.writeHead(200)
|
|
10
|
+
res.end()
|
|
11
|
+
server.close()
|
|
12
|
+
})
|
|
13
|
+
server.listen(0, function () {
|
|
14
|
+
var ca = fs.readFileSync('./ca.crt')
|
|
15
|
+
var agent = new https.Agent({
|
|
16
|
+
host: 'localhost',
|
|
17
|
+
port: this.address().port,
|
|
18
|
+
ca: ca
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
https.request({ host: 'localhost',
|
|
22
|
+
method: 'HEAD',
|
|
23
|
+
port: this.address().port,
|
|
24
|
+
headers: { host: 'testing.request.mikealrogers.com' },
|
|
25
|
+
agent: agent,
|
|
26
|
+
ca: [ ca ],
|
|
27
|
+
path: '/' }, function (res) {
|
|
28
|
+
if (res.socket.authorized) {
|
|
29
|
+
console.log('node test: OK')
|
|
30
|
+
} else {
|
|
31
|
+
throw new Error(res.socket.authorizationError)
|
|
32
|
+
}
|
|
33
|
+
}).end()
|
|
34
|
+
})
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC
|
|
3
|
+
VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x
|
|
4
|
+
IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w
|
|
5
|
+
bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y
|
|
6
|
+
MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV
|
|
7
|
+
BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj
|
|
8
|
+
YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA
|
|
9
|
+
aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE
|
|
10
|
+
OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz
|
|
11
|
+
Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl
|
|
12
|
+
y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC
|
|
13
|
+
l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv
|
|
14
|
+
yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl
|
|
15
|
+
ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op
|
|
16
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIICQzCCAawCCQCO/XWtRFck1jANBgkqhkiG9w0BAQUFADBmMQswCQYDVQQGEwJU
|
|
3
|
+
SDEQMA4GA1UECBMHQmFuZ2tvazEOMAwGA1UEBxMFU2lsb20xGzAZBgNVBAoTElRo
|
|
4
|
+
ZSBSZXF1ZXN0IE1vZHVsZTEYMBYGA1UEAxMPcmVxdWVzdC5leGFtcGxlMB4XDTEx
|
|
5
|
+
MTIwMzAyMjkyM1oXDTIxMTEzMDAyMjkyM1owZjELMAkGA1UEBhMCVEgxEDAOBgNV
|
|
6
|
+
BAgTB0Jhbmdrb2sxDjAMBgNVBAcTBVNpbG9tMRswGQYDVQQKExJUaGUgUmVxdWVz
|
|
7
|
+
dCBNb2R1bGUxGDAWBgNVBAMTD3JlcXVlc3QuZXhhbXBsZTCBnzANBgkqhkiG9w0B
|
|
8
|
+
AQEFAAOBjQAwgYkCgYEAwmctddZqlA48+NXs0yOy92DijcQV1jf87zMiYAIlNUto
|
|
9
|
+
wghVbTWgJU5r0pdKrD16AptnWJTzKanhItEX8XCCPgsNkq1afgTtJP7rNkwu3xcj
|
|
10
|
+
eIMkhJg/ay4ZnkbnhYdsii5VTU5prix6AqWRAhbkBgoA+iVyHyof8wvZyKBoFTMC
|
|
11
|
+
AwEAATANBgkqhkiG9w0BAQUFAAOBgQB6BybMJbpeiABgihDfEVBcAjDoQ8gUMgwV
|
|
12
|
+
l4NulugfKTDmArqnR9aPd4ET5jX5dkMP4bwCHYsvrcYDeWEQy7x5WWuylOdKhua4
|
|
13
|
+
L4cEi2uDCjqEErIG3cc1MCOk6Cl6Ld6tkIzQSf953qfdEACRytOeUqLNQcrXrqeE
|
|
14
|
+
c7U8F6MWLQ==
|
|
15
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIICXgIBAAKBgQDCZy111mqUDjz41ezTI7L3YOKNxBXWN/zvMyJgAiU1S2jCCFVt
|
|
3
|
+
NaAlTmvSl0qsPXoCm2dYlPMpqeEi0RfxcII+Cw2SrVp+BO0k/us2TC7fFyN4gySE
|
|
4
|
+
mD9rLhmeRueFh2yKLlVNTmmuLHoCpZECFuQGCgD6JXIfKh/zC9nIoGgVMwIDAQAB
|
|
5
|
+
AoGBALXFwfUf8vHTSmGlrdZS2AGFPvEtuvldyoxi9K5u8xmdFCvxnOcLsF2RsTHt
|
|
6
|
+
Mu5QYWhUpNJoG+IGLTPf7RJdj/kNtEs7xXqWy4jR36kt5z5MJzqiK+QIgiO9UFWZ
|
|
7
|
+
fjUb6oeDnTIJA9YFBdYi97MDuL89iU/UK3LkJN3hd4rciSbpAkEA+MCkowF5kSFb
|
|
8
|
+
rkOTBYBXZfiAG78itDXN6DXmqb9XYY+YBh3BiQM28oxCeQYyFy6pk/nstnd4TXk6
|
|
9
|
+
V/ryA2g5NwJBAMgRKTY9KvxJWbESeMEFe2iBIV0c26/72Amgi7ZKUCLukLfD4tLF
|
|
10
|
+
+WSZdmTbbqI1079YtwaiOVfiLm45Q/3B0eUCQAaQ/0eWSGE+Yi8tdXoVszjr4GXb
|
|
11
|
+
G81qBi91DMu6U1It+jNfIba+MPsiHLcZJMVb4/oWBNukN7bD1nhwFWdlnu0CQQCf
|
|
12
|
+
Is9WHkdvz2RxbZDxb8verz/7kXXJQJhx5+rZf7jIYFxqX3yvTNv3wf2jcctJaWlZ
|
|
13
|
+
fVZwB193YSivcgt778xlAkEAprYUz3jczjF5r2hrgbizPzPDR94tM5BTO3ki2v3w
|
|
14
|
+
kbf+j2g7FNAx6kZiVN8XwfLc8xEeUGiPKwtq3ddPDFh17w==
|
|
15
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var request = require('../index')
|
|
4
|
+
var version = require('../lib/helpers').version
|
|
5
|
+
var http = require('http')
|
|
6
|
+
var ForeverAgent = require('forever-agent')
|
|
7
|
+
var tape = require('tape')
|
|
8
|
+
|
|
9
|
+
var s = http.createServer(function (req, res) {
|
|
10
|
+
res.statusCode = 200
|
|
11
|
+
res.end()
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
tape('setup', function (t) {
|
|
15
|
+
s.listen(0, function () {
|
|
16
|
+
s.port = this.address().port
|
|
17
|
+
s.url = 'http://localhost:' + s.port
|
|
18
|
+
t.end()
|
|
19
|
+
})
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
function httpAgent (t, options, req) {
|
|
23
|
+
var r = (req || request)(options, function (_err, res, body) {
|
|
24
|
+
t.ok(r.agent instanceof http.Agent, 'is http.Agent')
|
|
25
|
+
t.equal(r.agent.options.keepAlive, true, 'is keepAlive')
|
|
26
|
+
t.equal(Object.keys(r.agent.sockets).length, 1, '1 socket name')
|
|
27
|
+
|
|
28
|
+
var name = (typeof r.agent.getName === 'function')
|
|
29
|
+
? r.agent.getName({port: s.port})
|
|
30
|
+
: 'localhost:' + s.port // node 0.10-
|
|
31
|
+
t.equal(r.agent.sockets[name].length, 1, '1 open socket')
|
|
32
|
+
|
|
33
|
+
var socket = r.agent.sockets[name][0]
|
|
34
|
+
socket.on('close', function () {
|
|
35
|
+
t.equal(Object.keys(r.agent.sockets).length, 0, '0 open sockets')
|
|
36
|
+
t.end()
|
|
37
|
+
})
|
|
38
|
+
socket.end()
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function foreverAgent (t, options, req) {
|
|
43
|
+
var r = (req || request)(options, function (_err, res, body) {
|
|
44
|
+
t.ok(r.agent instanceof ForeverAgent, 'is ForeverAgent')
|
|
45
|
+
t.equal(Object.keys(r.agent.sockets).length, 1, '1 socket name')
|
|
46
|
+
|
|
47
|
+
var name = 'localhost:' + s.port // node 0.10-
|
|
48
|
+
t.equal(r.agent.sockets[name].length, 1, '1 open socket')
|
|
49
|
+
|
|
50
|
+
var socket = r.agent.sockets[name][0]
|
|
51
|
+
socket.on('close', function () {
|
|
52
|
+
t.equal(Object.keys(r.agent.sockets[name]).length, 0, '0 open sockets')
|
|
53
|
+
t.end()
|
|
54
|
+
})
|
|
55
|
+
socket.end()
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// http.Agent
|
|
60
|
+
|
|
61
|
+
tape('options.agent', function (t) {
|
|
62
|
+
httpAgent(t, {
|
|
63
|
+
uri: s.url,
|
|
64
|
+
agent: new http.Agent({keepAlive: true})
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
tape('options.agentClass + options.agentOptions', function (t) {
|
|
69
|
+
httpAgent(t, {
|
|
70
|
+
uri: s.url,
|
|
71
|
+
agentClass: http.Agent,
|
|
72
|
+
agentOptions: {keepAlive: true}
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
// forever-agent
|
|
77
|
+
|
|
78
|
+
tape('options.forever = true', function (t) {
|
|
79
|
+
var v = version()
|
|
80
|
+
var options = {
|
|
81
|
+
uri: s.url,
|
|
82
|
+
forever: true
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (v.major === 0 && v.minor <= 10) { foreverAgent(t, options) } else { httpAgent(t, options) }
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
tape('forever() method', function (t) {
|
|
89
|
+
var v = version()
|
|
90
|
+
var options = {
|
|
91
|
+
uri: s.url
|
|
92
|
+
}
|
|
93
|
+
var r = request.forever({maxSockets: 1})
|
|
94
|
+
|
|
95
|
+
if (v.major === 0 && v.minor <= 10) { foreverAgent(t, options, r) } else { httpAgent(t, options, r) }
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
tape('cleanup', function (t) {
|
|
99
|
+
s.close(function () {
|
|
100
|
+
t.end()
|
|
101
|
+
})
|
|
102
|
+
})
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
// test-agent.js modifies the process state
|
|
4
|
+
// causing these tests to fail when running under single process via tape
|
|
5
|
+
if (!process.env.running_under_istanbul) {
|
|
6
|
+
var request = require('../index')
|
|
7
|
+
var http = require('http')
|
|
8
|
+
var server = require('./server')
|
|
9
|
+
var tape = require('tape')
|
|
10
|
+
|
|
11
|
+
var s = server.createServer()
|
|
12
|
+
|
|
13
|
+
s.on('/', function (req, resp) {
|
|
14
|
+
resp.statusCode = 200
|
|
15
|
+
resp.end('')
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
tape('setup', function (t) {
|
|
19
|
+
s.listen(0, function () {
|
|
20
|
+
t.end()
|
|
21
|
+
})
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
tape('without agentOptions should use global agent', function (t) {
|
|
25
|
+
var r = request(s.url, function (err, res, body) {
|
|
26
|
+
t.equal(err, null)
|
|
27
|
+
t.equal(res.statusCode, 200)
|
|
28
|
+
t.deepEqual(r.agent, http.globalAgent)
|
|
29
|
+
t.equal(Object.keys(r.pool).length, 0)
|
|
30
|
+
t.end()
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
tape('with agentOptions should apply to new agent in pool', function (t) {
|
|
35
|
+
var r = request(s.url, {
|
|
36
|
+
agentOptions: { foo: 'bar' }
|
|
37
|
+
}, function (err, res, body) {
|
|
38
|
+
t.equal(err, null)
|
|
39
|
+
t.equal(res.statusCode, 200)
|
|
40
|
+
t.equal(r.agent.options.foo, 'bar')
|
|
41
|
+
t.equal(Object.keys(r.pool).length, 1)
|
|
42
|
+
t.end()
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
tape('cleanup', function (t) {
|
|
47
|
+
s.close(function () {
|
|
48
|
+
t.end()
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var http = require('http')
|
|
4
|
+
var request = require('../index')
|
|
5
|
+
var tape = require('tape')
|
|
6
|
+
var server
|
|
7
|
+
|
|
8
|
+
tape('setup', function (t) {
|
|
9
|
+
server = http.createServer()
|
|
10
|
+
server.on('request', function (req, res) {
|
|
11
|
+
res.writeHead(202)
|
|
12
|
+
req.pipe(res)
|
|
13
|
+
})
|
|
14
|
+
server.listen(0, function () {
|
|
15
|
+
server.url = 'http://localhost:' + this.address().port
|
|
16
|
+
t.end()
|
|
17
|
+
})
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
tape('callback option', function (t) {
|
|
21
|
+
request({
|
|
22
|
+
url: server.url,
|
|
23
|
+
callback: function (err, res, body) {
|
|
24
|
+
t.error(err)
|
|
25
|
+
t.equal(res.statusCode, 202)
|
|
26
|
+
t.end()
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
tape('cleanup', function (t) {
|
|
32
|
+
server.close(t.end)
|
|
33
|
+
})
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var request = require('../index')
|
|
4
|
+
var server = require('./server')
|
|
5
|
+
var tape = require('tape')
|
|
6
|
+
|
|
7
|
+
var s = server.createServer()
|
|
8
|
+
|
|
9
|
+
var path = '/aws.json'
|
|
10
|
+
|
|
11
|
+
s.on(path, function (req, res) {
|
|
12
|
+
res.writeHead(200, {
|
|
13
|
+
'Content-Type': 'application/json'
|
|
14
|
+
})
|
|
15
|
+
res.end(JSON.stringify(req.headers))
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
tape('setup', function (t) {
|
|
19
|
+
s.listen(0, function () {
|
|
20
|
+
t.end()
|
|
21
|
+
})
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
tape('default behaviour: aws-sign2 without sign_version key', function (t) {
|
|
25
|
+
var options = {
|
|
26
|
+
url: s.url + path,
|
|
27
|
+
aws: {
|
|
28
|
+
key: 'my_key',
|
|
29
|
+
secret: 'my_secret'
|
|
30
|
+
},
|
|
31
|
+
json: true
|
|
32
|
+
}
|
|
33
|
+
request(options, function (err, res, body) {
|
|
34
|
+
t.error(err)
|
|
35
|
+
t.ok(body.authorization)
|
|
36
|
+
t.notOk(body['x-amz-date'])
|
|
37
|
+
t.end()
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
tape('aws-sign4 options', function (t) {
|
|
42
|
+
var options = {
|
|
43
|
+
url: s.url + path,
|
|
44
|
+
aws: {
|
|
45
|
+
key: 'my_key',
|
|
46
|
+
secret: 'my_secret',
|
|
47
|
+
sign_version: 4
|
|
48
|
+
},
|
|
49
|
+
json: true
|
|
50
|
+
}
|
|
51
|
+
request(options, function (err, res, body) {
|
|
52
|
+
t.error(err)
|
|
53
|
+
t.ok(body.authorization)
|
|
54
|
+
t.ok(body['x-amz-date'])
|
|
55
|
+
t.notok(body['x-amz-security-token'])
|
|
56
|
+
t.end()
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
tape('aws-sign4 options with session token', function (t) {
|
|
61
|
+
var options = {
|
|
62
|
+
url: s.url + path,
|
|
63
|
+
aws: {
|
|
64
|
+
key: 'my_key',
|
|
65
|
+
secret: 'my_secret',
|
|
66
|
+
session: 'session',
|
|
67
|
+
sign_version: 4
|
|
68
|
+
},
|
|
69
|
+
json: true
|
|
70
|
+
}
|
|
71
|
+
request(options, function (err, res, body) {
|
|
72
|
+
t.error(err)
|
|
73
|
+
t.ok(body.authorization)
|
|
74
|
+
t.ok(body['x-amz-date'])
|
|
75
|
+
t.ok(body['x-amz-security-token'])
|
|
76
|
+
t.end()
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
tape('aws-sign4 options with service', function (t) {
|
|
81
|
+
var serviceName = 'UNIQUE_SERVICE_NAME'
|
|
82
|
+
var options = {
|
|
83
|
+
url: s.url + path,
|
|
84
|
+
aws: {
|
|
85
|
+
key: 'my_key',
|
|
86
|
+
secret: 'my_secret',
|
|
87
|
+
sign_version: 4,
|
|
88
|
+
service: serviceName
|
|
89
|
+
},
|
|
90
|
+
json: true
|
|
91
|
+
}
|
|
92
|
+
request(options, function (err, res, body) {
|
|
93
|
+
t.error(err)
|
|
94
|
+
t.ok(body.authorization.includes(serviceName))
|
|
95
|
+
t.end()
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
tape('aws-sign4 with additional headers', function (t) {
|
|
100
|
+
var options = {
|
|
101
|
+
url: s.url + path,
|
|
102
|
+
headers: {
|
|
103
|
+
'X-Custom-Header': 'custom'
|
|
104
|
+
},
|
|
105
|
+
aws: {
|
|
106
|
+
key: 'my_key',
|
|
107
|
+
secret: 'my_secret',
|
|
108
|
+
sign_version: 4
|
|
109
|
+
},
|
|
110
|
+
json: true
|
|
111
|
+
}
|
|
112
|
+
request(options, function (err, res, body) {
|
|
113
|
+
t.error(err)
|
|
114
|
+
t.ok(body.authorization.includes('x-custom-header'))
|
|
115
|
+
t.end()
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
tape('cleanup', function (t) {
|
|
120
|
+
s.close(function () {
|
|
121
|
+
t.end()
|
|
122
|
+
})
|
|
123
|
+
})
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
var http = require('http')
|
|
4
|
+
var request = require('../index')
|
|
5
|
+
var tape = require('tape')
|
|
6
|
+
var url = require('url')
|
|
7
|
+
|
|
8
|
+
var s = http.createServer(function (req, res) {
|
|
9
|
+
if (req.url === '/redirect/') {
|
|
10
|
+
res.writeHead(302, {
|
|
11
|
+
location: '/'
|
|
12
|
+
})
|
|
13
|
+
} else {
|
|
14
|
+
res.statusCode = 200
|
|
15
|
+
res.setHeader('X-PATH', req.url)
|
|
16
|
+
}
|
|
17
|
+
res.end('ok')
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
function addTest (baseUrl, uri, expected) {
|
|
21
|
+
tape('test baseurl="' + baseUrl + '" uri="' + uri + '"', function (t) {
|
|
22
|
+
request(uri, { baseUrl: baseUrl }, function (err, resp, body) {
|
|
23
|
+
t.equal(err, null)
|
|
24
|
+
t.equal(body, 'ok')
|
|
25
|
+
t.equal(resp.headers['x-path'], expected)
|
|
26
|
+
t.end()
|
|
27
|
+
})
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function addTests () {
|
|
32
|
+
addTest(s.url, '', '/')
|
|
33
|
+
addTest(s.url + '/', '', '/')
|
|
34
|
+
addTest(s.url, '/', '/')
|
|
35
|
+
addTest(s.url + '/', '/', '/')
|
|
36
|
+
addTest(s.url + '/api', '', '/api')
|
|
37
|
+
addTest(s.url + '/api/', '', '/api/')
|
|
38
|
+
addTest(s.url + '/api', '/', '/api/')
|
|
39
|
+
addTest(s.url + '/api/', '/', '/api/')
|
|
40
|
+
addTest(s.url + '/api', 'resource', '/api/resource')
|
|
41
|
+
addTest(s.url + '/api/', 'resource', '/api/resource')
|
|
42
|
+
addTest(s.url + '/api', '/resource', '/api/resource')
|
|
43
|
+
addTest(s.url + '/api/', '/resource', '/api/resource')
|
|
44
|
+
addTest(s.url + '/api', 'resource/', '/api/resource/')
|
|
45
|
+
addTest(s.url + '/api/', 'resource/', '/api/resource/')
|
|
46
|
+
addTest(s.url + '/api', '/resource/', '/api/resource/')
|
|
47
|
+
addTest(s.url + '/api/', '/resource/', '/api/resource/')
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
tape('setup', function (t) {
|
|
51
|
+
s.listen(0, function () {
|
|
52
|
+
s.url = 'http://localhost:' + this.address().port
|
|
53
|
+
addTests()
|
|
54
|
+
tape('cleanup', function (t) {
|
|
55
|
+
s.close(function () {
|
|
56
|
+
t.end()
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
t.end()
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
tape('baseUrl', function (t) {
|
|
64
|
+
request('resource', {
|
|
65
|
+
baseUrl: s.url
|
|
66
|
+
}, function (err, resp, body) {
|
|
67
|
+
t.equal(err, null)
|
|
68
|
+
t.equal(body, 'ok')
|
|
69
|
+
t.end()
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
tape('baseUrl defaults', function (t) {
|
|
74
|
+
var withDefaults = request.defaults({
|
|
75
|
+
baseUrl: s.url
|
|
76
|
+
})
|
|
77
|
+
withDefaults('resource', function (err, resp, body) {
|
|
78
|
+
t.equal(err, null)
|
|
79
|
+
t.equal(body, 'ok')
|
|
80
|
+
t.end()
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
tape('baseUrl and redirects', function (t) {
|
|
85
|
+
request('/', {
|
|
86
|
+
baseUrl: s.url + '/redirect'
|
|
87
|
+
}, function (err, resp, body) {
|
|
88
|
+
t.equal(err, null)
|
|
89
|
+
t.equal(body, 'ok')
|
|
90
|
+
t.equal(resp.headers['x-path'], '/')
|
|
91
|
+
t.end()
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
tape('error when baseUrl is not a String', function (t) {
|
|
96
|
+
request('resource', {
|
|
97
|
+
baseUrl: url.parse(s.url + '/path')
|
|
98
|
+
}, function (err, resp, body) {
|
|
99
|
+
t.notEqual(err, null)
|
|
100
|
+
t.equal(err.message, 'options.baseUrl must be a string')
|
|
101
|
+
t.end()
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
tape('error when uri is not a String', function (t) {
|
|
106
|
+
request(url.parse('resource'), {
|
|
107
|
+
baseUrl: s.url + '/path'
|
|
108
|
+
}, function (err, resp, body) {
|
|
109
|
+
t.notEqual(err, null)
|
|
110
|
+
t.equal(err.message, 'options.uri must be a string when using options.baseUrl')
|
|
111
|
+
t.end()
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
tape('error on baseUrl and uri with scheme', function (t) {
|
|
116
|
+
request(s.url + '/path/ignoring/baseUrl', {
|
|
117
|
+
baseUrl: s.url + '/path/'
|
|
118
|
+
}, function (err, resp, body) {
|
|
119
|
+
t.notEqual(err, null)
|
|
120
|
+
t.equal(err.message, 'options.uri must be a path when using options.baseUrl')
|
|
121
|
+
t.end()
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
tape('error on baseUrl and uri with scheme-relative url', function (t) {
|
|
126
|
+
request(s.url.slice('http:'.length) + '/path/ignoring/baseUrl', {
|
|
127
|
+
baseUrl: s.url + '/path/'
|
|
128
|
+
}, function (err, resp, body) {
|
|
129
|
+
t.notEqual(err, null)
|
|
130
|
+
t.equal(err.message, 'options.uri must be a path when using options.baseUrl')
|
|
131
|
+
t.end()
|
|
132
|
+
})
|
|
133
|
+
})
|