mirror of
https://github.com/buger/goreplay.git
synced 2024-04-21 12:32:02 +00:00
66 lines
2.8 KiB
Go
66 lines
2.8 KiB
Go
package middleware
|
|
|
|
//func TestTokenMiddleware(t *testing.T) {
|
|
// quit := make(chan struct{})
|
|
// in := test.NewTestInput()
|
|
// in.skipHeader = true
|
|
// cmd, cancl := initCmd(tokenModifier, withDebug)
|
|
// midd := initMiddleware(cmd, cancl, in, func(err error) {})
|
|
// req := []byte("1 932079936fa4306fc308d67588178d17d823647c 1439818823587396305 200\nGET /token HTTP/1.1\r\nHost: example.org\r\n\r\n")
|
|
// res := []byte("2 932079936fa4306fc308d67588178d17d823647c 1439818823587396305 200\nHTTP/1.1 200 OK\r\nContent-Length: 10\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n17d823647c")
|
|
// rep := []byte("3 932079936fa4306fc308d67588178d17d823647c 1439818823587396305 200\nHTTP/1.1 200 OK\r\nContent-Length: 15\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n932079936fa4306")
|
|
// count := uint32(0)
|
|
// out := test.NewTestOutput(func(msg *Message) {
|
|
// if msg.Meta[0] == '1' && !bytes.Equal(payloadID(msg.Meta), payloadID(req)) {
|
|
// token, _, _ := proto.PathParam(msg.Data, []byte("token"))
|
|
// if !bytes.Equal(token, proto.Body(rep)) {
|
|
// t.Errorf("expected the token %s to be equal to the replayed response's token %s", token, proto.Body(rep))
|
|
// }
|
|
// }
|
|
// atomic.AddUint32(&count, 1)
|
|
// if atomic.LoadUint32(&count) == 2 {
|
|
// quit <- struct{}{}
|
|
// }
|
|
// })
|
|
// pl := &InOutPlugins{}
|
|
// pl.Inputs = []PluginReader{midd, in}
|
|
// pl.Outputs = []PluginWriter{out}
|
|
// pl.All = []interface{}{midd, out, in}
|
|
// e := NewEmitter()
|
|
// go e.Start(pl, "")
|
|
// in.EmitBytes(req) // emit original request
|
|
// in.EmitBytes(res) // emit its response
|
|
// in.EmitBytes(rep) // emit replayed response
|
|
// // emit the request which should have modified token
|
|
// token := []byte("1 8e091765ae902fef8a2b7d9dd96 14398188235873 100\nGET /?token=17d823647c HTTP/1.1\r\nHost: example.org\r\n\r\n")
|
|
// in.EmitBytes(token)
|
|
// <-quit
|
|
// midd.Close()
|
|
//}
|
|
|
|
//func TestMiddlewareWithPrettify(t *testing.T) {
|
|
// Settings.PrettifyHTTP = true
|
|
// quit := make(chan struct{})
|
|
// in := test.NewTestInput()
|
|
// cmd, cancl := initCmd(echoSh, withDebug)
|
|
// midd := initMiddleware(cmd, cancl, in, func(err error) {})
|
|
// var b1 = []byte("POST / HTTP/1.1\r\nHost: example.org\r\nTransfer-Encoding: chunked\r\n\r\n4\r\nWiki\r\n5\r\npedia\r\nE\r\n in\r\n\r\nchunks.\r\n0\r\n\r\n")
|
|
// var b2 = []byte("POST / HTTP/1.1\r\nHost: example.org\r\nContent-Length: 25\r\n\r\nWikipedia in\r\n\r\nchunks.")
|
|
// out := test.NewTestOutput(func(msg *Message) {
|
|
// if !bytes.Equal(proto.Body(b2), proto.Body(msg.Data)) {
|
|
// t.Errorf("expected %q body to equal %q body", b2, msg.Data)
|
|
// }
|
|
// quit <- struct{}{}
|
|
// })
|
|
// pl := &InOutPlugins{}
|
|
// pl.Inputs = []PluginReader{midd, in}
|
|
// pl.Outputs = []PluginWriter{out}
|
|
// pl.All = []interface{}{midd, out, in}
|
|
// e := NewEmitter()
|
|
// go e.Start(pl, "")
|
|
// in.EmitBytes(b1)
|
|
// <-quit
|
|
// midd.Close()
|
|
// Settings.PrettifyHTTP = false
|
|
//}
|