aboutsummaryrefslogtreecommitdiffhomepage
path: root/http/request/params_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'http/request/params_test.go')
-rw-r--r--http/request/params_test.go215
1 files changed, 215 insertions, 0 deletions
diff --git a/http/request/params_test.go b/http/request/params_test.go
new file mode 100644
index 0000000..7f1f880
--- /dev/null
+++ b/http/request/params_test.go
@@ -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)
+ }
+}