boihttp/message_test.go

58 lines
1.2 KiB
Go
Raw Normal View History

2022-06-24 04:05:10 +00:00
// Copyright (c) 2022 Nadeen Udantha <me@nadeen.lk>. All rights reserved.
package boihttp_test
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"net"
"testing"
"time"
"git.nadeen.lk/boihttp"
)
func TestMessage(t *testing.T) {
c, err := net.Dial("tcp", httpbin_addr)
throw(err)
defer c.Close()
r, w := bufio.NewReaderSize(c, 1024), bufio.NewWriterSize(c, 1024)
err = (&boihttp.Message{
Method: "GET",
Path: "/anything",
Version: boihttp.VersionHTTP1_1,
Headers: boihttp.Headers{
"Host": []string{"httpbin.org"},
"Connection": []string{"close"},
"Boi": []string{"whatsupdoc?"},
},
}).WriteRequest(w)
throw(err)
throw(w.Flush())
var res boihttp.Message
throw(res.ReadResponse(r))
print(&res, r)
}
func print(res *boihttp.Message, r io.Reader) {
fmt.Printf("status: %d %s\n", res.StatusCode, res.Status)
fmt.Println("headers:")
for k, vs := range res.Headers {
for _, v := range vs {
fmt.Printf("\t\"%s\": \"%s\"\n", k, v)
}
}
d, err := ioutil.ReadAll(r)
throw(err)
fmt.Printf("body: \"%s\"\n", string(d))
time.Sleep(time.Second)
}
func throw(err error) {
if err != nil {
panic(err)
}
}