add mastodon test

master
magical 2022-01-01 05:16:08 +00:00
parent ddb93ee852
commit 5b76339e40
3 changed files with 1141 additions and 2 deletions

View File

@ -8,6 +8,8 @@ import (
type HTTPCache struct {
}
// Based on http.MaxBytesReader
// MaxBytesReader is similar to io.LimitReader but is intended for
// limiting the size of incoming request bodies. In contrast to
// io.LimitReader, MaxBytesReader's result is a ReadCloser, returns a
@ -16,8 +18,6 @@ type HTTPCache struct {
//
// MaxBytesReader prevents clients from accidentally or maliciously
// sending a large request and wasting server resources.
//
// Based on http.MaxBytesReader
func MaxBytesReader(r io.ReadCloser, n int64) io.ReadCloser {
if n < 0 { // Treat negative limits as equivalent to 0.
n = 0

48
mastodon_test.go 100644
View File

@ -0,0 +1,48 @@
package main
import (
"context"
"net/http"
"net/http/httptest"
"testing"
)
var mastoSourceTests = []struct {
filename string
title string
itemText string
}{
{
filename: "/masto.html",
title: "magical on tiny.tilde.website",
itemText: "here's hoping it never melts",
},
}
func TestMastoSource(t *testing.T) {
server := httptest.NewServer(http.FileServer(http.Dir("testdata")))
defer server.Close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
for _, tt := range mastoSourceTests {
src := NewMastoSource(server.URL + tt.filename)
src.update(ctx)
if err := src.Error; err != nil {
t.Errorf("%v: Error = %v, expected nil", tt.filename, err)
continue
}
if src.Title != tt.title {
t.Errorf("%v: Title = %v expected %v", tt.filename, src.Title, tt.title)
}
items := src.GetItems()
if len(items) == 0 {
t.Errorf("%v: GetItems() = %v expected len > 0", tt.filename, items)
} else {
x := items[0]
if x.Text != tt.itemText {
t.Errorf("%v: item 0 Text = %q expected %q", tt.filename, x.Text, tt.itemText)
}
}
}
}

1091
testdata/masto.html vendored 100644

File diff suppressed because one or more lines are too long