|  | @@ -1,14 +1,22 @@
 | 
											
												
													
														|  | -package http
 |  | 
 | 
											
												
													
														|  | 
 |  | +package http_test
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import (
 |  |  import (
 | 
											
												
													
														|  |  	"bufio"
 |  |  	"bufio"
 | 
											
												
													
														|  | -	"github.com/v2ray/v2ray-core/testing/assert"
 |  | 
 | 
											
												
													
														|  |  	"net/http"
 |  |  	"net/http"
 | 
											
												
													
														|  |  	"strings"
 |  |  	"strings"
 | 
											
												
													
														|  |  	"testing"
 |  |  	"testing"
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	testdispatcher "github.com/v2ray/v2ray-core/app/dispatcher/testing"
 | 
											
												
													
														|  | 
 |  | +	v2nettesting "github.com/v2ray/v2ray-core/common/net/testing"
 | 
											
												
													
														|  | 
 |  | +	netassert "github.com/v2ray/v2ray-core/common/net/testing/assert"
 | 
											
												
													
														|  | 
 |  | +	. "github.com/v2ray/v2ray-core/proxy/http"
 | 
											
												
													
														|  | 
 |  | +	v2testing "github.com/v2ray/v2ray-core/testing"
 | 
											
												
													
														|  | 
 |  | +	"github.com/v2ray/v2ray-core/testing/assert"
 | 
											
												
													
														|  |  )
 |  |  )
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestHopByHopHeadersStrip(t *testing.T) {
 |  |  func TestHopByHopHeadersStrip(t *testing.T) {
 | 
											
												
													
														|  | 
 |  | +	v2testing.Current(t)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	rawRequest := `GET /pkg/net/http/ HTTP/1.1
 |  |  	rawRequest := `GET /pkg/net/http/ HTTP/1.1
 | 
											
												
													
														|  |  Host: golang.org
 |  |  Host: golang.org
 | 
											
												
													
														|  |  Connection: keep-alive,Foo, Bar
 |  |  Connection: keep-alive,Foo, Bar
 | 
											
										
											
												
													
														|  | @@ -32,10 +40,29 @@ Accept-Language: de,en;q=0.7,en-us;q=0.3
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Proxy-Connection")).Equals("keep-alive")
 |  |  	assert.StringLiteral(req.Header.Get("Proxy-Connection")).Equals("keep-alive")
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Proxy-Authenticate")).Equals("abc")
 |  |  	assert.StringLiteral(req.Header.Get("Proxy-Authenticate")).Equals("abc")
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	stripHopByHopHeaders(req)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	StripHopByHopHeaders(req)
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Connection")).Equals("close")
 |  |  	assert.StringLiteral(req.Header.Get("Connection")).Equals("close")
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Foo")).Equals("")
 |  |  	assert.StringLiteral(req.Header.Get("Foo")).Equals("")
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Bar")).Equals("")
 |  |  	assert.StringLiteral(req.Header.Get("Bar")).Equals("")
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Proxy-Connection")).Equals("")
 |  |  	assert.StringLiteral(req.Header.Get("Proxy-Connection")).Equals("")
 | 
											
												
													
														|  |  	assert.StringLiteral(req.Header.Get("Proxy-Authenticate")).Equals("")
 |  |  	assert.StringLiteral(req.Header.Get("Proxy-Authenticate")).Equals("")
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func TestNormalGetRequest(t *testing.T) {
 | 
											
												
													
														|  | 
 |  | +	v2testing.Current(t)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	testPacketDispatcher := testdispatcher.NewTestPacketDispatcher(nil)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	httpProxy := NewHttpProxyServer(&Config{}, testPacketDispatcher)
 | 
											
												
													
														|  | 
 |  | +	defer httpProxy.Close()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  | 
 |  | +	err := httpProxy.Listen(port)
 | 
											
												
													
														|  | 
 |  | +	assert.Error(err).IsNil()
 | 
											
												
													
														|  | 
 |  | +	netassert.Port(port).Equals(httpProxy.Port())
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	httpClient := &http.Client{}
 | 
											
												
													
														|  | 
 |  | +	resp, err := httpClient.Get("http://127.0.0.1:" + port.String() + "/")
 | 
											
												
													
														|  | 
 |  | +	assert.Error(err).IsNil()
 | 
											
												
													
														|  | 
 |  | +	assert.Int(resp.StatusCode).Equals(400)
 | 
											
												
													
														|  | 
 |  | +}
 |