mirror of https://github.com/matrix-org/go-neb.git
Browse Source
Move test util functions to dedicated file to clean up test files
Move test util functions to dedicated file to clean up test files
Also use verbose mode on tests so you can see which test is running when things print to stdout.kegan/tests
Kegan Dougal
8 years ago
3 changed files with 69 additions and 53 deletions
-
2hooks/pre-commit
-
57src/github.com/matrix-org/go-neb/goneb_services_test.go
-
63src/github.com/matrix-org/go-neb/testutil_test.go
@ -0,0 +1,63 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"bytes" |
|||
"fmt" |
|||
"io/ioutil" |
|||
"net/http" |
|||
) |
|||
|
|||
// newResponse creates a new HTTP response with the given data.
|
|||
func newResponse(statusCode int, body string) *http.Response { |
|||
return &http.Response{ |
|||
StatusCode: statusCode, |
|||
Body: ioutil.NopCloser(bytes.NewBufferString(body)), |
|||
} |
|||
} |
|||
|
|||
// matrixTripper mocks out RoundTrip and calls a registered handler instead.
|
|||
type matrixTripper struct { |
|||
handlers map[string]func(req *http.Request) (*http.Response, error) |
|||
} |
|||
|
|||
func newMatrixTripper() *matrixTripper { |
|||
return &matrixTripper{ |
|||
handlers: make(map[string]func(req *http.Request) (*http.Response, error)), |
|||
} |
|||
} |
|||
|
|||
func (rt *matrixTripper) RoundTrip(req *http.Request) (*http.Response, error) { |
|||
key := req.Method + " " + req.URL.Path |
|||
h := rt.handlers[key] |
|||
if h == nil { |
|||
panic(fmt.Sprintf( |
|||
"RoundTrip: Unhandled request: %s\nHandlers: %d", |
|||
key, len(rt.handlers), |
|||
)) |
|||
} |
|||
return h(req) |
|||
} |
|||
|
|||
func (rt *matrixTripper) Handle(method, path string, handler func(req *http.Request) (*http.Response, error)) { |
|||
key := method + " " + path |
|||
if _, exists := rt.handlers[key]; exists { |
|||
panic(fmt.Sprintf("Test handler with key %s already exists", key)) |
|||
} |
|||
rt.handlers[key] = handler |
|||
} |
|||
|
|||
func (rt *matrixTripper) HandlePOSTFilter(userID string) { |
|||
rt.Handle("POST", "/_matrix/client/r0/user/"+userID+"/filter", |
|||
func(req *http.Request) (*http.Response, error) { |
|||
return newResponse(200, `{ |
|||
"filter_id":"abcdef" |
|||
}`), nil |
|||
}, |
|||
) |
|||
} |
|||
|
|||
func (rt *matrixTripper) ClearHandlers() { |
|||
for k := range rt.handlers { |
|||
delete(rt.handlers, k) |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue