Files
Memoh/internal/media/limits_test.go
T

61 lines
1.1 KiB
Go

package media
import (
"bytes"
"errors"
"testing"
)
func TestReadAllWithLimit(t *testing.T) {
t.Parallel()
tests := []struct {
name string
payload []byte
maxBytes int64
wantErr bool
errTooBig bool
}{
{
name: "within limit",
payload: []byte("hello"),
maxBytes: 8,
},
{
name: "over limit",
payload: []byte("0123456789"),
maxBytes: 5,
wantErr: true,
errTooBig: true,
},
{
name: "exact limit",
payload: []byte("12345"),
maxBytes: 5,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
got, err := ReadAllWithLimit(bytes.NewReader(tt.payload), tt.maxBytes)
if tt.wantErr {
if err == nil {
t.Fatalf("expected error")
}
if tt.errTooBig && !errors.Is(err, ErrAssetTooLarge) {
t.Fatalf("expected ErrAssetTooLarge, got %v", err)
}
return
}
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if string(got) != string(tt.payload) {
t.Fatalf("unexpected payload: %q", string(got))
}
})
}
}