forked from gramework/gramework
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp_serve_test.go
More file actions
92 lines (79 loc) · 2.07 KB
/
Copy pathapp_serve_test.go
File metadata and controls
92 lines (79 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Copyright 2017-present Kirill Danshin and Gramework contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
package gramework
import (
"net"
"testing"
"github.com/valyala/fasthttp"
"github.com/valyala/fasthttp/fasthttputil"
)
func testBuildReqRes(method, uri string) (*fasthttp.Request, *fasthttp.Response) {
req, res := fasthttp.AcquireRequest(), fasthttp.AcquireResponse()
req.Header.SetMethod(method)
req.SetRequestURI(uri)
return req, res
}
func TestAppServe(t *testing.T) {
const uri = "http://test.request"
testCases := []func(*App) (func(string, interface{}) *App, string){
// check GET request
func(app *App) (func(string, interface{}) *App, string) {
return app.GET, GET
},
// check POST request
func(app *App) (func(string, interface{}) *App, string) {
return app.POST, POST
},
// check PUT request
func(app *App) (func(string, interface{}) *App, string) {
return app.PUT, PUT
},
// check PATCH request
func(app *App) (func(string, interface{}) *App, string) {
return app.PATCH, PATCH
},
// check DELETE request
func(app *App) (func(string, interface{}) *App, string) {
return app.DELETE, DELETE
},
// check HEAD request
func(app *App) (func(string, interface{}) *App, string) {
return app.HEAD, HEAD
},
// check OPTIONS request
func(app *App) (func(string, interface{}) *App, string) {
return app.OPTIONS, OPTIONS
},
}
for _, test := range testCases {
var handleOK bool
app := New()
ln := fasthttputil.NewInmemoryListener()
c := &fasthttp.Client{
Dial: func(addr string) (net.Conn, error) {
return ln.Dial()
},
}
reg, method := test(app)
go func() {
_ = app.Serve(ln)
}()
reg("/", func() {
handleOK = true
})
err := c.Do(testBuildReqRes(method, uri))
if err != nil {
t.Fatal(err)
}
ln.Close()
if !handleOK {
t.Errorf("%s request was not served correctly", method)
}
}
}