mirror of
https://github.com/miniflux/v2.git
synced 2025-09-15 18:57:04 +00:00
Improve request package and add more unit tests
This commit is contained in:
parent
844680e573
commit
9d08139f43
49 changed files with 916 additions and 400 deletions
215
http/request/params_test.go
Normal file
215
http/request/params_test.go
Normal file
|
@ -0,0 +1,215 @@
|
|||
// Copyright 2018 Frédéric Guillot. All rights reserved.
|
||||
// Use of this source code is governed by the Apache 2.0
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package request // import "miniflux.app/http/request"
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func TestFormInt64Value(t *testing.T) {
|
||||
f := url.Values{}
|
||||
f.Set("integer value", "42")
|
||||
f.Set("invalid value", "invalid integer")
|
||||
|
||||
r := &http.Request{Form: f}
|
||||
|
||||
result := FormInt64Value(r, "integer value")
|
||||
expected := int64(42)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = FormInt64Value(r, "invalid value")
|
||||
expected = int64(0)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = FormInt64Value(r, "missing value")
|
||||
expected = int64(0)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRouteStringParam(t *testing.T) {
|
||||
router := mux.NewRouter()
|
||||
router.HandleFunc("/route/{variable}/index", func(w http.ResponseWriter, r *http.Request) {
|
||||
result := RouteStringParam(r, "variable")
|
||||
expected := "value"
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %q instead of %q`, result, expected)
|
||||
}
|
||||
|
||||
result = RouteStringParam(r, "missing variable")
|
||||
expected = ""
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %q instead of %q`, result, expected)
|
||||
}
|
||||
})
|
||||
|
||||
r, err := http.NewRequest("GET", "/route/value/index", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
w := httptest.NewRecorder()
|
||||
router.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func TestRouteInt64Param(t *testing.T) {
|
||||
router := mux.NewRouter()
|
||||
router.HandleFunc("/a/{variable1}/b/{variable2}/c/{variable3}", func(w http.ResponseWriter, r *http.Request) {
|
||||
result := RouteInt64Param(r, "variable1")
|
||||
expected := int64(42)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = RouteInt64Param(r, "missing variable")
|
||||
expected = 0
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = RouteInt64Param(r, "variable2")
|
||||
expected = 0
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = RouteInt64Param(r, "variable3")
|
||||
expected = 0
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
})
|
||||
|
||||
r, err := http.NewRequest("GET", "/a/42/b/not-int/c/-10", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
w := httptest.NewRecorder()
|
||||
router.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func TestQueryStringParam(t *testing.T) {
|
||||
u, _ := url.Parse("http://example.org/?key=value")
|
||||
r := &http.Request{URL: u}
|
||||
|
||||
result := QueryStringParam(r, "key", "fallback")
|
||||
expected := "value"
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %q instead of %q`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryStringParam(r, "missing key", "fallback")
|
||||
expected = "fallback"
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %q instead of %q`, result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueryIntParam(t *testing.T) {
|
||||
u, _ := url.Parse("http://example.org/?key=42&invalid=value&negative=-5")
|
||||
r := &http.Request{URL: u}
|
||||
|
||||
result := QueryIntParam(r, "key", 84)
|
||||
expected := 42
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryIntParam(r, "missing key", 84)
|
||||
expected = 84
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryIntParam(r, "negative", 69)
|
||||
expected = 69
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryIntParam(r, "invalid", 99)
|
||||
expected = 99
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueryInt64Param(t *testing.T) {
|
||||
u, _ := url.Parse("http://example.org/?key=42&invalid=value&negative=-5")
|
||||
r := &http.Request{URL: u}
|
||||
|
||||
result := QueryInt64Param(r, "key", int64(84))
|
||||
expected := int64(42)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryInt64Param(r, "missing key", int64(84))
|
||||
expected = int64(84)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryInt64Param(r, "invalid", int64(69))
|
||||
expected = int64(69)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
|
||||
result = QueryInt64Param(r, "invalid", int64(99))
|
||||
expected = int64(99)
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %d instead of %d`, result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHasQueryParam(t *testing.T) {
|
||||
u, _ := url.Parse("http://example.org/?key=42")
|
||||
r := &http.Request{URL: u}
|
||||
|
||||
result := HasQueryParam(r, "key")
|
||||
expected := true
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
|
||||
}
|
||||
|
||||
result = HasQueryParam(r, "missing key")
|
||||
expected = false
|
||||
|
||||
if result != expected {
|
||||
t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue