mirror of
https://git.sr.ht/~adnano/go-gemini
synced 2024-05-13 23:56:05 +02:00
Add some tests
This commit is contained in:
parent
bf4959a8ba
commit
ec269c5c9d
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,104 @@
|
|||
package gemini
|
||||
|
||||
import (
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestReadResponse(t *testing.T) {
|
||||
tests := []struct {
|
||||
Raw string
|
||||
Status int
|
||||
Meta string
|
||||
Body string
|
||||
Err error
|
||||
}{
|
||||
{
|
||||
Raw: "20 text/gemini\r\nHello, world!\nWelcome to my capsule.",
|
||||
Status: 20,
|
||||
Meta: "text/gemini",
|
||||
Body: "Hello, world!\nWelcome to my capsule.",
|
||||
},
|
||||
{
|
||||
Raw: "10 Search query\r\n",
|
||||
Status: 10,
|
||||
Meta: "Search query",
|
||||
},
|
||||
{
|
||||
Raw: "30 /redirect\r\n",
|
||||
Status: 30,
|
||||
Meta: "/redirect",
|
||||
},
|
||||
{
|
||||
Raw: "31 /redirect\r\nThis body is ignored.",
|
||||
Status: 31,
|
||||
Meta: "/redirect",
|
||||
},
|
||||
{
|
||||
Raw: "99 Unknown status code\r\n",
|
||||
Status: 99,
|
||||
Meta: "Unknown status code",
|
||||
},
|
||||
{
|
||||
Raw: "\r\n",
|
||||
Err: ErrInvalidResponse,
|
||||
},
|
||||
{
|
||||
Raw: "\n",
|
||||
Err: ErrInvalidResponse,
|
||||
},
|
||||
{
|
||||
Raw: "1 Bad response\r\n",
|
||||
Err: ErrInvalidResponse,
|
||||
},
|
||||
{
|
||||
Raw: "",
|
||||
Err: io.EOF,
|
||||
},
|
||||
{
|
||||
Raw: "10 Search query",
|
||||
Err: io.EOF,
|
||||
},
|
||||
{
|
||||
Raw: "20 text/gemini\nHello, world!",
|
||||
Err: io.EOF,
|
||||
},
|
||||
{
|
||||
Raw: "20 text/gemini\rHello, world!",
|
||||
Err: ErrInvalidResponse,
|
||||
},
|
||||
{
|
||||
Raw: "20 text/gemini\r",
|
||||
Err: io.EOF,
|
||||
},
|
||||
{
|
||||
Raw: "abcdefghijklmnopqrstuvwxyz",
|
||||
Err: ErrInvalidResponse,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Logf("%#v", test.Raw)
|
||||
resp, err := ReadResponse(ioutil.NopCloser(strings.NewReader(test.Raw)))
|
||||
if err != test.Err {
|
||||
t.Errorf("expected err = %v, got %v", test.Err, err)
|
||||
}
|
||||
if test.Err != nil {
|
||||
// No response
|
||||
continue
|
||||
}
|
||||
if resp.Status != test.Status {
|
||||
t.Errorf("expected status = %d, got %d", test.Status, resp.Status)
|
||||
}
|
||||
if resp.Meta != test.Meta {
|
||||
t.Errorf("expected meta = %s, got %s", test.Meta, resp.Meta)
|
||||
}
|
||||
b, _ := ioutil.ReadAll(resp.Body)
|
||||
body := string(b)
|
||||
if body != test.Body {
|
||||
t.Errorf("expected body = %#v, got %#v", test.Body, body)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue