mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 18:20:54 +00:00
Fix Context.Input.SetParam not overwriting existing value
- Also added tests for Context.Input.Param handling
This commit is contained in:
parent
4ce094a29a
commit
453d744db9
@ -287,6 +287,13 @@ func (input *BeegoInput) Params() map[string]string {
|
|||||||
|
|
||||||
// SetParam will set the param with key and value
|
// SetParam will set the param with key and value
|
||||||
func (input *BeegoInput) SetParam(key, val string) {
|
func (input *BeegoInput) SetParam(key, val string) {
|
||||||
|
// check if already exists
|
||||||
|
for i, v := range input.pnames {
|
||||||
|
if v == key && i <= len(input.pvalues) {
|
||||||
|
input.pvalues[i] = val
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
input.pvalues = append(input.pvalues, val)
|
input.pvalues = append(input.pvalues, val)
|
||||||
input.pnames = append(input.pnames, key)
|
input.pnames = append(input.pnames, key)
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -117,3 +118,56 @@ func TestSubDomain(t *testing.T) {
|
|||||||
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParams(t *testing.T) {
|
||||||
|
inp := NewInput()
|
||||||
|
|
||||||
|
inp.SetParam("p1", "val1_ver1")
|
||||||
|
inp.SetParam("p2", "val2_ver1")
|
||||||
|
inp.SetParam("p3", "val3_ver1")
|
||||||
|
if l := inp.ParamsLen(); l != 3 {
|
||||||
|
t.Fatalf("Input.ParamsLen wrong value: %d, expected %d", l, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
if val := inp.Param("p1"); val != "val1_ver1" {
|
||||||
|
t.Fatalf("Input.Param wrong value: %s, expected %s", val, "val1_ver1")
|
||||||
|
}
|
||||||
|
if val := inp.Param("p3"); val != "val3_ver1" {
|
||||||
|
t.Fatalf("Input.Param wrong value: %s, expected %s", val, "val3_ver1")
|
||||||
|
}
|
||||||
|
vals := inp.Params()
|
||||||
|
expected := map[string]string{
|
||||||
|
"p1": "val1_ver1",
|
||||||
|
"p2": "val2_ver1",
|
||||||
|
"p3": "val3_ver1",
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(vals, expected) {
|
||||||
|
t.Fatalf("Input.Params wrong value: %s, expected %s", vals, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
// overwriting existing params
|
||||||
|
inp.SetParam("p1", "val1_ver2")
|
||||||
|
inp.SetParam("p2", "val2_ver2")
|
||||||
|
expected = map[string]string{
|
||||||
|
"p1": "val1_ver2",
|
||||||
|
"p2": "val2_ver2",
|
||||||
|
"p3": "val3_ver1",
|
||||||
|
}
|
||||||
|
vals = inp.Params()
|
||||||
|
if !reflect.DeepEqual(vals, expected) {
|
||||||
|
t.Fatalf("Input.Params wrong value: %s, expected %s", vals, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
if l := inp.ParamsLen(); l != 3 {
|
||||||
|
t.Fatalf("Input.ParamsLen wrong value: %d, expected %d", l, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
if val := inp.Param("p1"); val != "val1_ver2" {
|
||||||
|
t.Fatalf("Input.Param wrong value: %s, expected %s", val, "val1_ver2")
|
||||||
|
}
|
||||||
|
|
||||||
|
if val := inp.Param("p2"); val != "val2_ver2" {
|
||||||
|
t.Fatalf("Input.Param wrong value: %s, expected %s", val, "val1_ver2")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user