Visitar URL original
try testing proxy · nodegit/nodegit@56ea77f · GitHub
Skip to content

Commit 56ea77f

Browse files
committed
try testing proxy
1 parent 308f0ae commit 56ea77f

5 files changed

Lines changed: 137 additions & 0 deletions

File tree

‎package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"clean-for-publish": "~1.0.2",
4949
"combyne": "~0.8.1",
5050
"coveralls": "~2.11.4",
51+
"http-proxy": "^1.16.2",
5152
"istanbul": "~0.3.20",
5253
"js-beautify": "~1.5.10",
5354
"jshint": "~2.8.0",

‎test/tests/remote.js‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var path = require("path");
33
var local = path.join.bind(path, __dirname);
44

55
var garbageCollect = require("../utils/garbage_collect.js");
6+
var createSingleUseProxy = require("../utils/createSingleUseProxy");
67

78
describe("Remote", function() {
89
var NodeGit = require("../../");
@@ -189,6 +190,41 @@ describe("Remote", function() {
189190
});
190191
});
191192

193+
it.only("can fetch from a remote via proxy", function() {
194+
var options = {
195+
callbacks: {
196+
credentials: function(url, userName) {
197+
return NodeGit.Cred.sshKeyFromAgent(userName);
198+
},
199+
certificateCheck: function() {
200+
return 1;
201+
}
202+
},
203+
proxyOpts: {
204+
type: NodeGit.Proxy.PROXY.SPECIFIED,
205+
url: "https://localhost:8080"
206+
}
207+
};
208+
var repository = this.repository;
209+
210+
return createSingleUseProxy(true)
211+
.then(function(proxyControls) {
212+
return repository.fetch("origin", options)
213+
.then(function() {
214+
assert.ok(
215+
proxyControls.getProxyWasUsed(),
216+
"Failed to use proxy server when fetching remote"
217+
);
218+
proxyControls.close();
219+
})
220+
.catch(function(error) {
221+
console.log(error);
222+
assert.fail("Failed to fetch via proxy");
223+
proxyControls.close();
224+
});
225+
});
226+
});
227+
192228
it("can fetch from a private repository", function() {
193229
var repo = this.repository;
194230
var fetchOptions = {

‎test/utils/createSingleUseProxy.js‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
var http = require("http");
2+
var https = require("https");
3+
var httpProxy = require("http-proxy");
4+
var fs = require("fs");
5+
var path = require("path");
6+
7+
var local = path.join.bind(path, __dirname);
8+
9+
var httpsOptions = {
10+
key: fs.readFileSync(local("./proxyTestCerts/key.pem")),
11+
cert: fs.readFileSync(local("./proxyTestCerts/cert.pem"))
12+
};
13+
14+
15+
function createSingleUseProxy(useHttps) {
16+
var server;
17+
var resolve;
18+
var reject;
19+
var proxyWasUsed = false;
20+
var options = useHttps ? { secure: true, ssl: httpsOptions } : {};
21+
var proxy = httpProxy.createProxyServer(options);
22+
var serverListeningPromise = new Promise(function(_resolve, _reject) {
23+
resolve = _resolve;
24+
reject = _reject;
25+
});
26+
27+
function requestForwarder(request, response) {
28+
proxyWasUsed = true;
29+
proxy.web(request, response, { target: request.url });
30+
}
31+
32+
if (useHttps) {
33+
server = https.createServer(httpsOptions, requestForwarder);
34+
} else {
35+
console.log("create http server");
36+
server = http.createServer(requestForwarder);
37+
}
38+
39+
server.on("error", reject);
40+
server.listen(8080, function() {
41+
resolve({
42+
close: function() {
43+
server.close();
44+
},
45+
getProxyWasUsed: function() {
46+
return proxyWasUsed;
47+
}
48+
});
49+
});
50+
51+
return serverListeningPromise;
52+
}
53+
54+
module.exports = createSingleUseProxy;

‎test/utils/proxyTestCerts/cert.pem‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDBjCCAe4CCQD3OWd7oPgZMjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
3+
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
4+
cyBQdHkgTHRkMB4XDTE3MDEyNjE3MzYwMloXDTQ0MDYxMjE3MzYwMlowRTELMAkG
5+
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
6+
IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
7+
ANS8ql7Cg2/FkL9GxNdN1dxnpDjE1cmZgr4fXKSD5PUl+NOq9G7JM7UfXkgyNmg2
8+
0LrFMKzqk8Fjm05NwRpJHnQpTGevtti/a0Sdsd9lJVuvf/7vDlJRBcwMIKrxajEh
9+
8D4zpQL8iF/kPK+DtT1STYkvKNLjHlysmk0J06WIIsXSxmwa/D1Uj6ARC01TPTa0
10+
bFj028naj5giCen5dozaiNUV8q84pqm3qb/a+hTsAT16J43uOeqVYN86ZBD+t6Jt
11+
Msb1s1F2aKmK9vsJZ3AP1XJAO1bHBQFYjirc2rJ9ZvK1sLgJBhMBA6K2sqMPWpfA
12+
NsuPGicWjDwP0TNvB77x3eMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAyLpNEdUI
13+
VMMCe/AfXVVmlFRhXGA5Flsk/y5gmdFYI8KtkEOSC4KBQYQoycpD8/RoNik/kiSO
14+
iaFew3YbwhG3zk0VcTalxJEQi2HspYc8tuTKFq0ak90q3U+g+e4M7cSE27EJ5yen
15+
CK/B7RedQZy+sA0vP8khyKF0JBJpIBZ6BBKPpMDdtlb/2zmZ1LtrIHVa3L7mBlBc
16+
jcTr1LeBdwNa5QwZumcVnND/w4wU1/rO0aZZKiW6ExN0OHSiAZI2y/v0T+mDAT2U
17+
27xC3YfoYDbvC5c7vn7ngHuLBp1XS5zs904YWEHtgekJUTn7u9ALdIxmi1WKJc9o
18+
UEEA0QJnSAsofQ==
19+
-----END CERTIFICATE-----

‎test/utils/proxyTestCerts/key.pem‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEogIBAAKCAQEA1LyqXsKDb8WQv0bE103V3GekOMTVyZmCvh9cpIPk9SX406r0
3+
bskztR9eSDI2aDbQusUwrOqTwWObTk3BGkkedClMZ6+22L9rRJ2x32UlW69//u8O
4+
UlEFzAwgqvFqMSHwPjOlAvyIX+Q8r4O1PVJNiS8o0uMeXKyaTQnTpYgixdLGbBr8
5+
PVSPoBELTVM9NrRsWPTbydqPmCIJ6fl2jNqI1RXyrzimqbepv9r6FOwBPXonje45
6+
6pVg3zpkEP63om0yxvWzUXZoqYr2+wlncA/VckA7VscFAViOKtzasn1m8rWwuAkG
7+
EwEDorayow9al8A2y48aJxaMPA/RM28HvvHd4wIDAQABAoIBAGqbaR03iLpYXSMd
8+
icMDZGqhHXC9Yw01+ojgGoLu/avELZ+VCg0CkwDvCUZQs2ciIROXgb8FhqnhCpEA
9+
8gYEIli/4WQMcCrKMi0egWabv07k8dWFYr3pkGgio7RGaprYkRX6t3R5rLWxIKAr
10+
9oUWW3ilw2V7H1n9vQ1iIUfQouxSu9JBjhGsONnSpMMeiH9iMgvIGuyktJCBqR8Q
11+
/pARiJZJ3r13kWch8ovcl2kAh1lh4B87Oc1BRYHIq1mhmJaks+cMOIzNQQCZdmWL
12+
vkBliEJEOb0NGmjvOG9XNySISLj0mGI/k/JE+qDtpPJovO6QtJAC9MyYDB0EqViK
13+
t4FefYECgYEA8D9jFJaRVp1WTXhgVM6sg5DTQjaYT17U0GzsX8LL+KVIqAojwsb/
14+
P1yskb7mxVlfIaYoXA/d4CUGkuDas7MrQfoVlzje3V1pNdDjd2TiH6M6Jw5b1b1t
15+
u5hjvxMX+v+KHCZk5oFBhK5sg9HfbvbZxQ1mMyvE6rikx+u4EfsN9+ECgYEA4q+B
16+
im4zVyU30Fq2+9D52gyxqODqGMWvnVndMzd/GdCXa7tHcOvIeb6vO1DcVtS1eZqr
17+
vuOoMA66mQAF8OHLJGOMwRcow7vMRJgmEGA0/Eqtn2luanmchRojYDg+NBz4x0Kl
18+
3ivcjFy5Qtl/vsw2IWsp2NBovrxkjE2PdIJxvkMCgYBH6pGcPh4vkVWeRyR+/ocB
19+
sz6qGXGqgLav1YtEdylbuw5uzuo5ihwqOXGnB0BJXyFtDzIRrOY8DJlVKl4NYNrY
20+
GyaPaAS+uxGdfHQ670YJNnFX86Jl7xiECXACaJLLHeeX2Z5mqdaVAymUpCSAMQCr
21+
TgGD29xMbw1Ukyk8qKxbwQKBgEs3lTJL0rlN3jFCiIkSFHWn1KOGzeaeYeFCWkWO
22+
WpxEPJpAsDnl4sWS4i46bIJbXkQVcHuMqtgXaw8tlMsTAQb4CVJgzuPzwpnYKnkw
23+
kyRL20SUBVFLPQZlX+ujffBo1Ju5n7QStcHVWpu1889pj2STXHVW4gq4FF0Bt2If
24+
joJlAoGANbb2tbeW5otU96AYGTjGyfJDhQ7TuDxBJ5/lFWZiOUqWx2lD549J9bKt
25+
dSN1zGCScLQtEYLxPR8b0adfnZlTy3iiCdpNKwzoA4GHSDyBnvKSFKbkN83v0UgZ
26+
AgcuGCjxf3jks38sftOMTfBxP0rka2PIMyk6BE5QKe9A8RxXKto=
27+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)