Added server tests
This commit is contained in:
11
Server.go
11
Server.go
@ -18,7 +18,7 @@ import (
|
||||
// Server is the interface for an HTTP server.
|
||||
type Server interface {
|
||||
Get(path string, handler Handler)
|
||||
Request(method string, path string, body io.Reader) Response
|
||||
Request(method string, path string, headers []Header, body io.Reader) Response
|
||||
Router() *router.Router[Handler]
|
||||
Run(address string) error
|
||||
Use(handlers ...Handler)
|
||||
@ -67,8 +67,9 @@ func (s *server) Get(path string, handler Handler) {
|
||||
// Request performs a synthetic request and returns the response.
|
||||
// This function keeps the response in memory so it's slightly slower than a real request.
|
||||
// However it is very useful inside tests where you don't want to spin up a real web server.
|
||||
func (s *server) Request(method string, url string, body io.Reader) Response {
|
||||
func (s *server) Request(method string, url string, headers []Header, body io.Reader) Response {
|
||||
ctx := s.newContext()
|
||||
ctx.request.headers = headers
|
||||
s.handleRequest(ctx, method, url, io.Discard)
|
||||
return ctx.Response()
|
||||
}
|
||||
@ -178,7 +179,7 @@ func (s *server) handleConnection(conn net.Conn) {
|
||||
key := message[:colon]
|
||||
value := message[colon+2 : len(message)-2]
|
||||
|
||||
ctx.request.headers = append(ctx.request.headers, header{
|
||||
ctx.request.headers = append(ctx.request.headers, Header{
|
||||
Key: key,
|
||||
Value: value,
|
||||
})
|
||||
@ -219,12 +220,12 @@ func (s *server) newContext() *context {
|
||||
request: request{
|
||||
reader: bufio.NewReader(nil),
|
||||
body: make([]byte, 0),
|
||||
headers: make([]header, 0, 8),
|
||||
headers: make([]Header, 0, 8),
|
||||
params: make([]router.Parameter, 0, 8),
|
||||
},
|
||||
response: response{
|
||||
body: make([]byte, 0, 1024),
|
||||
headers: make([]header, 0, 8),
|
||||
headers: make([]Header, 0, 8),
|
||||
status: 200,
|
||||
},
|
||||
}
|
||||
|
Reference in New Issue
Block a user