mirror of https://github.com/lukechilds/got.git
Vsevolod Strukchinsky
10 years ago
21 changed files with 489 additions and 189 deletions
@ -1,187 +0,0 @@ |
|||
/* global describe, it, before, after */ |
|||
'use strict'; |
|||
var assert = require('assert'); |
|||
var http = require('http'); |
|||
var got = require('./'); |
|||
|
|||
it('should do HTTP request', function (done) { |
|||
got('http://google.com', function (err, data) { |
|||
if (err) { |
|||
console.error(err); |
|||
assert(false); |
|||
return; |
|||
} |
|||
|
|||
assert(/google/.test(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should do HTTPS request', function (done) { |
|||
got('https://google.com', function (err, data) { |
|||
if (err) { |
|||
console.error(err); |
|||
assert(false); |
|||
return; |
|||
} |
|||
|
|||
assert(/google/.test(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should should return status code as error code and response object when not 200', function (done) { |
|||
got('http://sindresorhus.com/sfsadfasdfadsga', function (err, data, res) { |
|||
assert.ok(res.headers); |
|||
assert.strictEqual(err.code, 404); |
|||
assert.ok(/<!DOCTYPE html>/.test(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should support optional options', function (done) { |
|||
got('http://sindresorhus.com', {method: 'HEAD'}, function (err, data) { |
|||
assert(!err, err); |
|||
assert(!data, data); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should get headers only with HEAD method', function (done) { |
|||
got('http://google.com', {method: 'HEAD'}, function (err, data, res) { |
|||
assert(!data, data); |
|||
assert.ok(res.headers); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should support gzip', function (done) { |
|||
got('http://sindresorhus.com', function (err, data) { |
|||
assert(!err, err); |
|||
assert(/^<!doctype html>/.test(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should return a buffer if encoding is set to null', function (done) { |
|||
got('http://google.com', {encoding: null}, function (err, data) { |
|||
assert(!err, err); |
|||
assert.ok(Buffer.isBuffer(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should return a readable stream without a callback', function (done) { |
|||
var stream = got('http://google.com'); |
|||
|
|||
var data = ''; |
|||
stream.on('data', function (chunk) { |
|||
data += chunk; |
|||
}); |
|||
stream.on('end', function () { |
|||
assert.ok(/google/.test(data)); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should proxy errors to the stream', function (done) { |
|||
var stream = got('http://sindresorhus.com/sfsadfasdfadsga'); |
|||
|
|||
stream.on('error', function (error) { |
|||
assert.strictEqual(error.code, 404); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should support timeout option', function (done) { |
|||
var stream = got('http://sindresorhus.com/', {timeout: 1}); |
|||
|
|||
stream.on('error', function (error) { |
|||
assert.strictEqual(error.code, 'ETIMEDOUT'); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
describe('POST', function () { |
|||
var server; |
|||
|
|||
before(function (done) { |
|||
server = http.createServer(function (req, res) { |
|||
req.pipe(res); |
|||
}); |
|||
server.listen(8081, done); |
|||
}); |
|||
|
|||
after(function (done) { |
|||
server.close(done); |
|||
}); |
|||
|
|||
it('should support string as body option', function (done) { |
|||
got('http://0.0.0.0:8081', {body: 'string'}, function (err, data) { |
|||
assert.ifError(err); |
|||
assert.equal(data, 'string'); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should support Buffer as body option', function (done) { |
|||
got('http://0.0.0.0:8081', {body: new Buffer('string')}, function (err, data) { |
|||
assert.ifError(err); |
|||
assert.equal(data, 'string'); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should take data from options.body in stream mode', function (done) { |
|||
got.post('http://0.0.0.0:8081', {body: 'Hello'}) |
|||
.on('error', done) |
|||
.on('data', function (chunk) { |
|||
assert.equal(chunk, 'Hello'); |
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should throw an error on options.body and write operations', function (done) { |
|||
assert.throws(function () { |
|||
got.post('http://0.0.0.0:8081', {body: 'Hello'}) |
|||
.end('Hello'); |
|||
}, 'got\'s stream is not writable when options.body is used'); |
|||
|
|||
assert.throws(function () { |
|||
got.post('http://0.0.0.0:8081', {body: 'Hello'}) |
|||
.write('Hello'); |
|||
}, 'got\'s stream is not writable when options.body is used'); |
|||
|
|||
done(); |
|||
}); |
|||
|
|||
it('should be a writeable stream on POST', function (done) { |
|||
got.post('http://0.0.0.0:8081') |
|||
.on('error', done) |
|||
.on('data', function (chunk) { |
|||
assert.equal(chunk, 'Hello'); |
|||
done(); |
|||
}) |
|||
.end('Hello'); |
|||
}); |
|||
|
|||
it('should be a writeable stream on PUT', function (done) { |
|||
got.put('http://0.0.0.0:8081') |
|||
.on('error', done) |
|||
.on('data', function (chunk) { |
|||
assert.equal(chunk, 'Hello'); |
|||
done(); |
|||
}) |
|||
.end('Hello'); |
|||
}); |
|||
|
|||
it('should be a writeable stream on PATCH', function (done) { |
|||
got.patch('http://0.0.0.0:8081') |
|||
.on('error', done) |
|||
.on('data', function (chunk) { |
|||
assert.equal(chunk, 'Hello'); |
|||
done(); |
|||
}) |
|||
.end('Hello'); |
|||
}); |
|||
}); |
@ -0,0 +1,42 @@ |
|||
'use strict'; |
|||
|
|||
var http = require('http'); |
|||
var https = require('https'); |
|||
var path = require('path'); |
|||
var fs = require('fs'); |
|||
var assign = require('object-assign'); |
|||
|
|||
exports.port = 6767; |
|||
exports.portSSL = 16167; |
|||
|
|||
exports.createServer = function (port) { |
|||
port = port || exports.port; |
|||
var s = http.createServer(function (req, resp) { |
|||
s.emit(req.url, req, resp); |
|||
}); |
|||
s.port = port; |
|||
s.url = 'http://localhost:' + port; |
|||
s.protocol = 'http'; |
|||
return s; |
|||
}; |
|||
|
|||
exports.createSSLServer = function (port, opts) { |
|||
port = port || exports.portSSL; |
|||
|
|||
var options = assign({ |
|||
'key' : path.join(__dirname, 'ssl', 'test.key'), |
|||
'cert': path.join(__dirname, 'ssl', 'test.crt') |
|||
}, opts); |
|||
|
|||
for (var i in options) { |
|||
options[i] = fs.readFileSync(options[i]); |
|||
} |
|||
|
|||
var s = https.createServer(options, function (req, resp) { |
|||
s.emit(req.url, req, resp); |
|||
}); |
|||
s.port = port; |
|||
s.url = 'https://localhost:' + port; |
|||
s.protocol = 'https'; |
|||
return s; |
|||
}; |
@ -0,0 +1,20 @@ |
|||
[ req ] |
|||
default_bits = 1024 |
|||
days = 3650 |
|||
distinguished_name = req_distinguished_name |
|||
attributes = req_attributes |
|||
prompt = no |
|||
output_password = password |
|||
|
|||
[ req_distinguished_name ] |
|||
C = US |
|||
ST = CA |
|||
L = Oakland |
|||
O = request |
|||
OU = request Certificate Authority |
|||
CN = requestCA |
|||
emailAddress = mikeal@mikealrogers.com |
|||
|
|||
[ req_attributes ] |
|||
challengePassword = password challenge |
|||
|
@ -0,0 +1,17 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIICvTCCAiYCCQDn+P/MSbDsWjANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC |
|||
VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1 |
|||
ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG |
|||
A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n |
|||
ZXJzLmNvbTAeFw0xMjAzMDEyMjUwNTZaFw0yMjAyMjcyMjUwNTZaMIGiMQswCQYD |
|||
VQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNVBAcTB09ha2xhbmQxEDAOBgNVBAoT |
|||
B3JlcXVlc3QxJjAkBgNVBAsTHXJlcXVlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 |
|||
MRIwEAYDVQQDEwlyZXF1ZXN0Q0ExJjAkBgkqhkiG9w0BCQEWF21pa2VhbEBtaWtl |
|||
YWxyb2dlcnMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7t9pQUAK4 |
|||
5XJYTI6NrF0n3G2HZsfN+rPYSVzzL8SuVyb1tHXos+vbPm3NKI4E8X1yVAXU8CjJ |
|||
5SqXnp4DAypAhaseho81cbhk7LXUhFz78OvAa+OD+xTAEAnNQ8tGUr4VGyplEjfD |
|||
xsBVuqV2j8GPNTftr+drOCFlqfAgMrBn4wIDAQABMA0GCSqGSIb3DQEBBQUAA4GB |
|||
ADVdTlVAL45R+PACNS7Gs4o81CwSclukBu4FJbxrkd4xGQmurgfRrYYKjtqiopQm |
|||
D7ysRamS3HMN9/VKq2T7r3z1PMHPAy7zM4uoXbbaTKwlnX4j/8pGPn8Ca3qHXYlo |
|||
88L/OOPc6Di7i7qckS3HFbXQCTiULtxWmy97oEuTwrAj |
|||
-----END CERTIFICATE----- |
@ -0,0 +1,13 @@ |
|||
-----BEGIN CERTIFICATE REQUEST----- |
|||
MIICBjCCAW8CAQAwgaIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE |
|||
BxMHT2FrbGFuZDEQMA4GA1UEChMHcmVxdWVzdDEmMCQGA1UECxMdcmVxdWVzdCBD |
|||
ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxEjAQBgNVBAMTCXJlcXVlc3RDQTEmMCQGCSqG |
|||
SIb3DQEJARYXbWlrZWFsQG1pa2VhbHJvZ2Vycy5jb20wgZ8wDQYJKoZIhvcNAQEB |
|||
BQADgY0AMIGJAoGBALu32lBQArjlclhMjo2sXSfcbYdmx836s9hJXPMvxK5XJvW0 |
|||
deiz69s+bc0ojgTxfXJUBdTwKMnlKpeengMDKkCFqx6GjzVxuGTstdSEXPvw68Br |
|||
44P7FMAQCc1Dy0ZSvhUbKmUSN8PGwFW6pXaPwY81N+2v52s4IWWp8CAysGfjAgMB |
|||
AAGgIzAhBgkqhkiG9w0BCQcxFBMScGFzc3dvcmQgY2hhbGxlbmdlMA0GCSqGSIb3 |
|||
DQEBBQUAA4GBAGJO7grHeVHXetjHEK8urIxdnvfB2qeZeObz4GPKIkqUurjr0rfj |
|||
bA3EK1kDMR5aeQWR8RunixdM16Q6Ry0lEdLVWkdSwRN9dmirIHT9cypqnD/FYOia |
|||
SdezZ0lUzXgmJIwRYRwB1KSMMocIf52ll/xC2bEGg7/ZAEuAyAgcZV3X |
|||
-----END CERTIFICATE REQUEST----- |
@ -0,0 +1,18 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
Proc-Type: 4,ENCRYPTED |
|||
DEK-Info: DES-EDE3-CBC,C8B5887048377F02 |
|||
|
|||
nyD5ZH0Wup2uWsDvurq5mKDaDrf8lvNn9w0SH/ZkVnfR1/bkwqrFriqJWvZNUG+q |
|||
nS0iBYczsWLJnbub9a1zLOTENWUKVD5uqbC3aGHhnoUTNSa27DONgP8gHOn6JgR+ |
|||
GAKo01HCSTiVT4LjkwN337QKHnMP2fTzg+IoC/CigvMcq09hRLwU1/guq0GJKGwH |
|||
gTxYNuYmQC4Tjh8vdS4liF+Ve/P3qPR2CehZrIOkDT8PHJBGQJRo4xGUIB7Tpk38 |
|||
VCk+UZ0JCS2coY8VkY/9tqFJp/ZnnQQVmaNbdRqg7ECKL+bXnNo7yjzmazPZmPe3 |
|||
/ShbE0+CTt7LrjCaQAxWbeDzqfo1lQfgN1LulTm8MCXpQaJpv7v1VhIhQ7afjMYb |
|||
4thW/ypHPiYS2YJCAkAVlua9Oxzzh1qJoh8Df19iHtpd79Q77X/qf+1JvITlMu0U |
|||
gi7yEatmQcmYNws1mtTC1q2DXrO90c+NZ0LK/Alse6NRL/xiUdjug2iHeTf/idOR |
|||
Gg/5dSZbnnlj1E5zjSMDkzg6EHAFmHV4jYGSAFLEQgp4V3ZhMVoWZrvvSHgKV/Qh |
|||
FqrAK4INr1G2+/QTd09AIRzfy3/j6yD4A9iNaOsEf9Ua7Qh6RcALRCAZTWR5QtEf |
|||
dX+iSNJ4E85qXs0PqwkMDkoaxIJ+tmIRJY7y8oeylV8cfGAi8Soubt/i3SlR8IHC |
|||
uDMas/2OnwafK3N7ODeE1i7r7wkzQkSHaEz0TrF8XRnP25jAICCSLiMdAAjKfxVb |
|||
EvzsFSuAy3Jt6bU3hSLY9o4YVYKE+68ITMv9yNjvTsEiW+T+IbN34w== |
|||
-----END RSA PRIVATE KEY----- |
@ -0,0 +1 @@ |
|||
ADF62016AA40C9C3 |
@ -0,0 +1,19 @@ |
|||
[ req ] |
|||
default_bits = 1024 |
|||
days = 3650 |
|||
distinguished_name = req_distinguished_name |
|||
attributes = req_attributes |
|||
prompt = no |
|||
|
|||
[ req_distinguished_name ] |
|||
C = US |
|||
ST = CA |
|||
L = Oakland |
|||
O = request |
|||
OU = testing |
|||
CN = testing.request.mikealrogers.com |
|||
emailAddress = mikeal@mikealrogers.com |
|||
|
|||
[ req_attributes ] |
|||
challengePassword = password challenge |
|||
|
@ -0,0 +1,16 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIICejCCAeMCCQCt9iAWqkDJwzANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC |
|||
VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1 |
|||
ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG |
|||
A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n |
|||
ZXJzLmNvbTAeFw0xMjAzMDEyMjUwNTZaFw0yMjAyMjcyMjUwNTZaMIGjMQswCQYD |
|||
VQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNVBAcTB09ha2xhbmQxEDAOBgNVBAoT |
|||
B3JlcXVlc3QxEDAOBgNVBAsTB3Rlc3RpbmcxKTAnBgNVBAMTIHRlc3RpbmcucmVx |
|||
dWVzdC5taWtlYWxyb2dlcnMuY29tMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlr |
|||
ZWFscm9nZXJzLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDgVl0jMumvOpmM |
|||
20W5v9yhGgZj8hPhEQF/N7yCBVBn/rWGYm70IHC8T/pR5c0LkWc5gdnCJEvKWQjh |
|||
DBKxZD8FAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEABShRkNgFbgs4vUWW9R9deNJj |
|||
7HJoiTmvkmoOC7QzcYkjdgHbOxsSq3rBnwxsVjY9PAtPwBn0GRspOeG7KzKRgySB |
|||
kb22LyrCFKbEOfKO/+CJc80ioK9zEPVjGsFMyAB+ftYRqM+s/4cQlTg/m89l01wC |
|||
yapjN3RxZbInGhWR+jA= |
|||
-----END CERTIFICATE----- |
@ -0,0 +1,11 @@ |
|||
-----BEGIN CERTIFICATE REQUEST----- |
|||
MIIBgjCCASwCAQAwgaMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE |
|||
BxMHT2FrbGFuZDEQMA4GA1UEChMHcmVxdWVzdDEQMA4GA1UECxMHdGVzdGluZzEp |
|||
MCcGA1UEAxMgdGVzdGluZy5yZXF1ZXN0Lm1pa2VhbHJvZ2Vycy5jb20xJjAkBgkq |
|||
hkiG9w0BCQEWF21pa2VhbEBtaWtlYWxyb2dlcnMuY29tMFwwDQYJKoZIhvcNAQEB |
|||
BQADSwAwSAJBAOBWXSMy6a86mYzbRbm/3KEaBmPyE+ERAX83vIIFUGf+tYZibvQg |
|||
cLxP+lHlzQuRZzmB2cIkS8pZCOEMErFkPwUCAwEAAaAjMCEGCSqGSIb3DQEJBzEU |
|||
ExJwYXNzd29yZCBjaGFsbGVuZ2UwDQYJKoZIhvcNAQEFBQADQQBD3E5WekQzCEJw |
|||
7yOcqvtPYIxGaX8gRKkYfLPoj3pm3GF5SGqtJKhylKfi89szHXgktnQgzff9FN+A |
|||
HidVJ/3u |
|||
-----END CERTIFICATE REQUEST----- |
@ -0,0 +1,9 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBOwIBAAJBAOBWXSMy6a86mYzbRbm/3KEaBmPyE+ERAX83vIIFUGf+tYZibvQg |
|||
cLxP+lHlzQuRZzmB2cIkS8pZCOEMErFkPwUCAwEAAQJAK+r8ZM2sze8s7FRo/ApB |
|||
iRBtO9fCaIdJwbwJnXKo4RKwZDt1l2mm+fzZ+/QaQNjY1oTROkIIXmnwRvZWfYlW |
|||
gQIhAPKYsG+YSBN9o8Sdp1DMyZ/rUifKX3OE6q9tINkgajDVAiEA7Ltqh01+cnt0 |
|||
JEnud/8HHcuehUBLMofeg0G+gCnSbXECIQCqDvkXsWNNLnS/3lgsnvH0Baz4sbeJ |
|||
rjIpuVEeg8eM5QIgbu0+9JmOV6ybdmmiMV4yAncoF35R/iKGVHDZCAsQzDECIQDZ |
|||
0jGz22tlo5YMcYSqrdD3U4sds1pwiAaWFRbCunoUJw== |
|||
-----END RSA PRIVATE KEY----- |
@ -0,0 +1,16 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC |
|||
VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x |
|||
IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w |
|||
bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y |
|||
MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV |
|||
BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj |
|||
YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA |
|||
aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE |
|||
OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz |
|||
Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl |
|||
y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC |
|||
l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv |
|||
yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl |
|||
ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op |
|||
-----END CERTIFICATE----- |
@ -0,0 +1,15 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIICQzCCAawCCQCO/XWtRFck1jANBgkqhkiG9w0BAQUFADBmMQswCQYDVQQGEwJU |
|||
SDEQMA4GA1UECBMHQmFuZ2tvazEOMAwGA1UEBxMFU2lsb20xGzAZBgNVBAoTElRo |
|||
ZSBSZXF1ZXN0IE1vZHVsZTEYMBYGA1UEAxMPcmVxdWVzdC5leGFtcGxlMB4XDTEx |
|||
MTIwMzAyMjkyM1oXDTIxMTEzMDAyMjkyM1owZjELMAkGA1UEBhMCVEgxEDAOBgNV |
|||
BAgTB0Jhbmdrb2sxDjAMBgNVBAcTBVNpbG9tMRswGQYDVQQKExJUaGUgUmVxdWVz |
|||
dCBNb2R1bGUxGDAWBgNVBAMTD3JlcXVlc3QuZXhhbXBsZTCBnzANBgkqhkiG9w0B |
|||
AQEFAAOBjQAwgYkCgYEAwmctddZqlA48+NXs0yOy92DijcQV1jf87zMiYAIlNUto |
|||
wghVbTWgJU5r0pdKrD16AptnWJTzKanhItEX8XCCPgsNkq1afgTtJP7rNkwu3xcj |
|||
eIMkhJg/ay4ZnkbnhYdsii5VTU5prix6AqWRAhbkBgoA+iVyHyof8wvZyKBoFTMC |
|||
AwEAATANBgkqhkiG9w0BAQUFAAOBgQB6BybMJbpeiABgihDfEVBcAjDoQ8gUMgwV |
|||
l4NulugfKTDmArqnR9aPd4ET5jX5dkMP4bwCHYsvrcYDeWEQy7x5WWuylOdKhua4 |
|||
L4cEi2uDCjqEErIG3cc1MCOk6Cl6Ld6tkIzQSf953qfdEACRytOeUqLNQcrXrqeE |
|||
c7U8F6MWLQ== |
|||
-----END CERTIFICATE----- |
@ -0,0 +1,15 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIICXgIBAAKBgQDCZy111mqUDjz41ezTI7L3YOKNxBXWN/zvMyJgAiU1S2jCCFVt |
|||
NaAlTmvSl0qsPXoCm2dYlPMpqeEi0RfxcII+Cw2SrVp+BO0k/us2TC7fFyN4gySE |
|||
mD9rLhmeRueFh2yKLlVNTmmuLHoCpZECFuQGCgD6JXIfKh/zC9nIoGgVMwIDAQAB |
|||
AoGBALXFwfUf8vHTSmGlrdZS2AGFPvEtuvldyoxi9K5u8xmdFCvxnOcLsF2RsTHt |
|||
Mu5QYWhUpNJoG+IGLTPf7RJdj/kNtEs7xXqWy4jR36kt5z5MJzqiK+QIgiO9UFWZ |
|||
fjUb6oeDnTIJA9YFBdYi97MDuL89iU/UK3LkJN3hd4rciSbpAkEA+MCkowF5kSFb |
|||
rkOTBYBXZfiAG78itDXN6DXmqb9XYY+YBh3BiQM28oxCeQYyFy6pk/nstnd4TXk6 |
|||
V/ryA2g5NwJBAMgRKTY9KvxJWbESeMEFe2iBIV0c26/72Amgi7ZKUCLukLfD4tLF |
|||
+WSZdmTbbqI1079YtwaiOVfiLm45Q/3B0eUCQAaQ/0eWSGE+Yi8tdXoVszjr4GXb |
|||
G81qBi91DMu6U1It+jNfIba+MPsiHLcZJMVb4/oWBNukN7bD1nhwFWdlnu0CQQCf |
|||
Is9WHkdvz2RxbZDxb8verz/7kXXJQJhx5+rZf7jIYFxqX3yvTNv3wf2jcctJaWlZ |
|||
fVZwB193YSivcgt778xlAkEAprYUz3jczjF5r2hrgbizPzPDR94tM5BTO3ki2v3w |
|||
kbf+j2g7FNAx6kZiVN8XwfLc8xEeUGiPKwtq3ddPDFh17w== |
|||
-----END RSA PRIVATE KEY----- |
@ -0,0 +1,42 @@ |
|||
'use strict'; |
|||
|
|||
var tape = require('tape'); |
|||
var got = require('../'); |
|||
var server = require('./server.js'); |
|||
var zlib = require('zlib'); |
|||
|
|||
var s = server.createServer(); |
|||
var testContent = 'Compressible response content.\n'; |
|||
|
|||
s.on('/', function (req, res) { |
|||
res.statusCode = 200; |
|||
res.setHeader('Content-Type', 'text/plain'); |
|||
|
|||
if (/\bgzip\b/i.test(req.headers['accept-encoding'])) { |
|||
res.setHeader('Content-Encoding', 'gzip'); |
|||
zlib.gzip(testContent, function (err, data) { |
|||
res.end(data); |
|||
}); |
|||
} else { |
|||
res.end(testContent); |
|||
} |
|||
}); |
|||
|
|||
tape('setup', function (t) { |
|||
s.listen(s.port, function () { |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('ungzip content', function (t) { |
|||
got(s.url, function (err, data) { |
|||
t.error(err); |
|||
t.equal(data, testContent); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('cleanup', function (t) { |
|||
s.close(); |
|||
t.end(); |
|||
}); |
@ -0,0 +1,88 @@ |
|||
'use strict'; |
|||
|
|||
var tape = require('tape'); |
|||
var got = require('../'); |
|||
var server = require('./server.js'); |
|||
|
|||
var s = server.createServer(); |
|||
|
|||
s.on('/', function (req, res) { |
|||
res.end('ok'); |
|||
}); |
|||
|
|||
s.on('/empty', function (req, res) { |
|||
res.end(); |
|||
}); |
|||
|
|||
s.on('/404', function (req, res) { |
|||
res.statusCode = 404; |
|||
res.end('not'); |
|||
}); |
|||
|
|||
tape('setup', function (t) { |
|||
s.listen(s.port, function () { |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('callback mode', function (t) { |
|||
got(s.url, function (err, data) { |
|||
t.error(err); |
|||
t.equal(data, 'ok'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('empty response', function (t) { |
|||
got(s.url + '/empty', function (err, data) { |
|||
t.error(err); |
|||
t.equal(data, ''); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('error with code', function (t) { |
|||
got(s.url + '/404', function (err, data) { |
|||
t.ok(err); |
|||
t.equal(err.code, 404); |
|||
t.equal(data, 'not'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('buffer on encoding === null', function (t) { |
|||
got(s.url, {encoding: null}, function (err, data) { |
|||
t.error(err); |
|||
t.ok(Buffer.isBuffer(data)); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('stream mode', function (t) { |
|||
got(s.url) |
|||
.on('data', function (data) { |
|||
t.equal(data.toString(), 'ok'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('proxy errors to the stream', function (t) { |
|||
got(s.url + '/404') |
|||
.on('error', function (err) { |
|||
t.equal(err.code, 404); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('timeout option', function (t) { |
|||
got(s.url + '/404', {timeout: 1}) |
|||
.on('error', function (err) { |
|||
t.equal(err.code, 'ETIMEDOUT'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('cleanup', function (t) { |
|||
s.close(); |
|||
t.end(); |
|||
}); |
@ -0,0 +1,42 @@ |
|||
'use strict'; |
|||
|
|||
var tape = require('tape'); |
|||
var got = require('../'); |
|||
var server = require('./server.js'); |
|||
|
|||
var fs = require('fs'); |
|||
var path = require('path'); |
|||
|
|||
var s = server.createSSLServer(server.portSSL + 1, { |
|||
key: path.resolve(__dirname, 'ssl/ca/server.key'), |
|||
cert: path.resolve(__dirname, 'ssl/ca/server.crt') |
|||
}); |
|||
var caFile = path.resolve(__dirname, 'ssl/ca/ca.crt'); |
|||
var ca = fs.readFileSync(caFile); |
|||
|
|||
s.on('/', function (req, res) { |
|||
res.end('ok'); |
|||
}); |
|||
|
|||
tape('setup', function (t) { |
|||
s.listen(s.port, function () { |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('make request to https server', function (t) { |
|||
got(s.url, { |
|||
strictSSL: true, |
|||
ca: ca, |
|||
headers: { host: 'testing.request.mikealrogers.com' } |
|||
}, function (err, data) { |
|||
t.error(err); |
|||
t.equal(data, 'ok'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('cleanup', function (t) { |
|||
s.close(); |
|||
t.end(); |
|||
}); |
@ -0,0 +1,50 @@ |
|||
'use strict'; |
|||
|
|||
var tape = require('tape'); |
|||
var got = require('../'); |
|||
var server = require('./server.js'); |
|||
|
|||
var s = server.createServer(); |
|||
|
|||
s.on('/', function (req, res) { |
|||
req.pipe(res); |
|||
}); |
|||
|
|||
tape('setup', function (t) { |
|||
s.listen(s.port, function () { |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('send data from options with post request', function (t) { |
|||
t.plan(2); |
|||
|
|||
got(s.url, {body: 'wow'}, function (err, data) { |
|||
t.equal(data, 'wow'); |
|||
}); |
|||
|
|||
got(s.url, {body: new Buffer('wow')}, function (err, data) { |
|||
t.equal(data, 'wow'); |
|||
}); |
|||
}); |
|||
|
|||
tape('return writeable stream', function (t) { |
|||
got.post(s.url) |
|||
.on('data', function (data) { |
|||
t.equal(data.toString(), 'wow'); |
|||
t.end(); |
|||
}) |
|||
.end('wow'); |
|||
}); |
|||
|
|||
tape('throws on write to stream with body specified', function (t) { |
|||
t.throws(function () { |
|||
got(s.url, {body: 'wow'}).write('wow'); |
|||
}); |
|||
setTimeout(t.end.bind(t), 10); // Wait for request to end
|
|||
}); |
|||
|
|||
tape('cleanup', function (t) { |
|||
s.close(); |
|||
t.end(); |
|||
}); |
@ -0,0 +1,52 @@ |
|||
'use strict'; |
|||
|
|||
var tape = require('tape'); |
|||
var got = require('../'); |
|||
var server = require('./server.js'); |
|||
|
|||
var s = server.createServer(); |
|||
|
|||
s.on('/finite', function (req, res) { |
|||
res.writeHead(302, { |
|||
location : s.url + '/' |
|||
}); |
|||
res.end(); |
|||
}); |
|||
|
|||
s.on('/endless', function (req, res) { |
|||
res.writeHead(302, { |
|||
location : s.url + '/endless' |
|||
}); |
|||
res.end(); |
|||
}); |
|||
|
|||
s.on('/', function (req, res) { |
|||
res.end('reached'); |
|||
}); |
|||
|
|||
tape('setup', function (t) { |
|||
s.listen(s.port, function () { |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('follows redirect', function (t) { |
|||
got(s.url + '/finite', {agent: false}, function (err, data) { |
|||
t.error(err); |
|||
t.equal(data, 'reached'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('throws on endless redirect', function (t) { |
|||
got(s.url + '/endless', {agent: false}, function (err) { |
|||
t.ok(err, 'should get error'); |
|||
t.equal(err.message, 'Redirected 10 times. Aborting.'); |
|||
t.end(); |
|||
}); |
|||
}); |
|||
|
|||
tape('cleanup', function (t) { |
|||
s.close(); |
|||
t.end(); |
|||
}); |
Loading…
Reference in new issue