Added server tests

This commit is contained in:
2024-03-28 12:22:45 +01:00
parent 245a085020
commit 805f92468a
10 changed files with 116 additions and 36 deletions

View File

@ -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,
},
}