|
|
- package main
-
- import (
- "net/http"
- "net/http/httptest"
- "net/url"
- "os"
- "reflect"
- "testing"
- )
-
- func Test_sanitizeForm(t *testing.T) {
- t.Run("Sanitize form", func(t *testing.T) {
- result := sanitizeForm(&url.Values{"<b>Test</b>": {"<a href=\"https://example.com\">Test</a>"}})
- want := FormValues{"Test": {"Test"}}
- if !reflect.DeepEqual(*result, want) {
- t.Error()
- }
- })
- }
-
- func TestFormHandler(t *testing.T) {
- t.Run("GET request to FormHandler", func(t *testing.T) {
- req := httptest.NewRequest("GET", "http://example.com/", nil)
- w := httptest.NewRecorder()
- FormHandler(w, req)
- resp := w.Result()
- if resp.StatusCode != http.StatusOK {
- t.Error()
- }
- })
- t.Run("POST request to FormHandler", func(t *testing.T) {
- req := httptest.NewRequest("POST", "http://example.com/", nil)
- w := httptest.NewRecorder()
- FormHandler(w, req)
- resp := w.Result()
- if resp.StatusCode != http.StatusCreated {
- t.Error()
- }
- })
- t.Run("Wrong method request to FormHandler", func(t *testing.T) {
- req := httptest.NewRequest("DELETE", "http://example.com/", nil)
- w := httptest.NewRecorder()
- FormHandler(w, req)
- resp := w.Result()
- if resp.StatusCode != http.StatusMethodNotAllowed {
- t.Error()
- }
- })
- }
-
- func Test_isBot(t *testing.T) {
- t.Run("No bot", func(t *testing.T) {
- os.Clearenv()
- result := isBot(&FormValues{"_t_email": {""}})
- if !reflect.DeepEqual(result, false) {
- t.Error()
- }
- })
- t.Run("No honeypot", func(t *testing.T) {
- os.Clearenv()
- result := isBot(&FormValues{})
- if !reflect.DeepEqual(result, false) {
- t.Error()
- }
- })
- t.Run("Bot", func(t *testing.T) {
- os.Clearenv()
- result := isBot(&FormValues{"_t_email": {"Test", ""}})
- if !reflect.DeepEqual(result, true) {
- t.Error()
- }
- })
- }
-
- func Test_sendResponse(t *testing.T) {
- t.Run("No redirect", func(t *testing.T) {
- values := &FormValues{}
- w := httptest.NewRecorder()
- sendResponse(values, w)
- if w.Code != http.StatusCreated {
- t.Error()
- }
- })
- t.Run("No redirect 2", func(t *testing.T) {
- values := &FormValues{
- "_redirectTo": {""},
- }
- w := httptest.NewRecorder()
- sendResponse(values, w)
- if w.Code != http.StatusCreated {
- t.Error()
- }
- })
- t.Run("No redirect 3", func(t *testing.T) {
- values := &FormValues{
- "_redirectTo": {"abc", "def"},
- }
- w := httptest.NewRecorder()
- sendResponse(values, w)
- if w.Code != http.StatusCreated {
- t.Error()
- }
- })
- t.Run("Redirect", func(t *testing.T) {
- values := &FormValues{
- "_redirectTo": {"https://example.com"},
- }
- w := httptest.NewRecorder()
- sendResponse(values, w)
- if w.Code != http.StatusSeeOther {
- t.Error()
- }
- if w.Header().Get("Location") != "https://example.com" {
- t.Error()
- }
- })
- }
|