mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-23 23:49:05 -06:00
Do not crash on invalid HTTP CONNECT (#4916)
* Do not crash on invalid HTTP CONNECT * fix test
This commit is contained in:
committed by
Brian Mann
parent
7e2ca836cf
commit
52beabeda5
@@ -139,6 +139,8 @@ class Server
|
||||
|
||||
browserSocket.resume()
|
||||
|
||||
port or= "443"
|
||||
|
||||
if upstreamProxy = @_getProxyForUrl("https://#{hostname}:#{port}")
|
||||
# todo: as soon as all requests are intercepted, this can go away since this is just for pass-through
|
||||
debug("making proxied connection %o", {
|
||||
|
||||
@@ -43,33 +43,56 @@ describe "lib/server", ->
|
||||
socket.destroy = @sandbox.stub()
|
||||
head = {}
|
||||
|
||||
onError = (err, socket, head, port) ->
|
||||
onError = (err, socket2, head2, port) ->
|
||||
expect(err.message).to.eq("connect ECONNREFUSED 127.0.0.1:8444")
|
||||
|
||||
expect(socket).to.eq(socket)
|
||||
expect(head).to.eq(head)
|
||||
expect(socket).to.eq(socket2)
|
||||
expect(head).to.eq(head2)
|
||||
expect(port).to.eq("8444")
|
||||
|
||||
expect(socket.destroy).to.be.calledOnce
|
||||
|
||||
done()
|
||||
|
||||
@setup({onError: onError})
|
||||
@setup({ onError })
|
||||
.then (srv) ->
|
||||
conn = srv._makeDirectConnection({url: "localhost:8444"}, socket, head)
|
||||
|
||||
return
|
||||
|
||||
## https://github.com/cypress-io/cypress/issues/3250
|
||||
it "does not crash when an erroneous URL is provided, just destroys socket", (done) ->
|
||||
socket = new EE()
|
||||
socket.destroy = @sandbox.stub()
|
||||
head = {}
|
||||
|
||||
onError = (err, socket2, head2, port) ->
|
||||
expect(err.message).to.eq("connect ECONNREFUSED 127.0.0.1:443")
|
||||
|
||||
expect(socket).to.eq(socket2)
|
||||
expect(head).to.eq(head2)
|
||||
expect(port).to.eq("443")
|
||||
|
||||
expect(socket.destroy).to.be.calledOnce
|
||||
|
||||
done()
|
||||
|
||||
@setup({ onError })
|
||||
.then (srv) ->
|
||||
conn = srv._makeDirectConnection({url: "%7Balgolia_application_id%7D-dsn.algolia.net:443"}, socket, head)
|
||||
|
||||
return
|
||||
|
||||
it "with proxied connection calls options.onError with err and port and destroys the client socket", (done) ->
|
||||
socket = new EE()
|
||||
socket.destroy = @sandbox.stub()
|
||||
head = {}
|
||||
|
||||
onError = (err, socket, head, port) ->
|
||||
onError = (err, socket2, head2, port) ->
|
||||
expect(err.message).to.eq("A connection to the upstream proxy could not be established: connect ECONNREFUSED 127.0.0.1:8444")
|
||||
|
||||
expect(socket).to.eq(socket)
|
||||
expect(head).to.eq(head)
|
||||
expect(socket).to.eq(socket2)
|
||||
expect(head).to.eq(head2)
|
||||
expect(port).to.eq("11111")
|
||||
|
||||
expect(socket.destroy).to.be.calledOnce
|
||||
@@ -79,7 +102,7 @@ describe "lib/server", ->
|
||||
process.env.HTTPS_PROXY = 'http://localhost:8444'
|
||||
process.env.NO_PROXY = ''
|
||||
|
||||
@setup({onError: onError})
|
||||
@setup({ onError })
|
||||
.then (srv) ->
|
||||
conn = srv._makeDirectConnection({url: "should-not-reach.invalid:11111"}, socket, head)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user