personal-website/test/DecodeMessage_test.go

79 lines
1.7 KiB
Go
Raw Normal View History

2025-01-28 18:43:37 +03:00
package test
import (
"fmt"
"net/http"
"net/http/httptest"
"strings"
"testing"
"unicode/utf8"
"github.com/dixxe/personal-website/iternal/controllers"
)
func TestPostMessage(t *testing.T) {
test_value := `{"content":"banan","msg_type":10}`
body := strings.NewReader(test_value)
req, err := http.NewRequest("POST", "/cctweaked", body)
if err != nil {
t.Fatal(err)
}
rr := httptest.NewRecorder()
http.HandlerFunc(controllers.PostSendMessage).ServeHTTP(rr, req)
req, err = http.NewRequest("GET", "/cctweaked", nil)
if err != nil {
t.Fatal(err)
}
http.HandlerFunc(controllers.GetMessage).ServeHTTP(rr, req)
expected := `{banan 10}`
if strings.Trim(rr.Body.String(), "\n ") != expected {
t.Errorf("handler returned unexpected body: got %v want %v",
rr.Body.String(), expected)
}
}
func FuzzPostMessage(f *testing.F) {
f.Add(0, "banan")
f.Fuzz(func(t *testing.T, msg_type int, content string) {
if !utf8.Valid([]byte(content)) {
return
}
body := strings.NewReader(fmt.Sprintf(`{"content":"%v","msg_type":%v}`,
content, msg_type))
req, err := http.NewRequest("POST", "/cctweaked", body)
if err != nil {
t.Fatal(err)
}
rr := httptest.NewRecorder()
http.HandlerFunc(controllers.PostSendMessage).ServeHTTP(rr, req)
req, err = http.NewRequest("GET", "/cctweaked", nil)
if err != nil {
t.Fatal(err)
}
http.HandlerFunc(controllers.GetMessage).ServeHTTP(rr, req)
expected := fmt.Sprintf(`{%v %v}`, content, msg_type)
if rr.Result().StatusCode == 400 {
return
}
if strings.Trim(rr.Body.String(), "\n ") != expected {
t.Errorf("handler returned unexpected body: got %v want %v",
rr.Body.String(), expected)
}
})
}