diff options
Diffstat (limited to 'http/request/params_test.go')
-rw-r--r-- | http/request/params_test.go | 215 |
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) + } +} |