mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +08:00
fix: parse headers
This commit is contained in:
@@ -34,14 +34,12 @@ func buildURL(baseURL, stepURL string) string {
|
|||||||
|
|
||||||
func parseHeaders(rawHeaders map[string]string, variablesMapping map[string]interface{}) map[string]string {
|
func parseHeaders(rawHeaders map[string]string, variablesMapping map[string]interface{}) map[string]string {
|
||||||
parsedHeaders := make(map[string]string)
|
parsedHeaders := make(map[string]string)
|
||||||
for k, v := range rawHeaders {
|
headers := parseData(rawHeaders, variablesMapping).(map[string]interface{})
|
||||||
parsedValue := parseString(v, variablesMapping)
|
for k, v := range headers {
|
||||||
if value, ok := parsedValue.(string); ok {
|
if value, ok := v.(string); ok {
|
||||||
parsedHeaders[k] = value
|
parsedHeaders[k] = value
|
||||||
} else {
|
} else {
|
||||||
// parsed value is not string, e.g. int, float, etc.
|
parsedHeaders[k] = fmt.Sprintf("%v", v)
|
||||||
// convert to string
|
|
||||||
parsedHeaders[k] = fmt.Sprintf("%v", parsedValue)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return parsedHeaders
|
return parsedHeaders
|
||||||
|
|||||||
+31
-2
@@ -143,9 +143,9 @@ func TestParseDataMapWithVariables(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{map[string]interface{}{"key": "$var1"}, map[string]interface{}{"key": "foo1"}},
|
{map[string]interface{}{"key": "$var1"}, map[string]interface{}{"key": "foo1"}},
|
||||||
{map[string]interface{}{"foo1": "$val1", "foo2": "bar2"}, map[string]interface{}{"foo1": 200, "foo2": "bar2"}},
|
{map[string]interface{}{"foo1": "$val1", "foo2": "bar2"}, map[string]interface{}{"foo1": 200, "foo2": "bar2"}},
|
||||||
// parse map key
|
// parse map key, key is string
|
||||||
{map[string]interface{}{"$var1": "$val1"}, map[string]interface{}{"foo1": 200}},
|
{map[string]interface{}{"$var1": "$val1"}, map[string]interface{}{"foo1": 200}},
|
||||||
// map key is int
|
// parse map key, key is int
|
||||||
{map[string]interface{}{"$var2": "$val1"}, map[string]interface{}{"123": 200}},
|
{map[string]interface{}{"$var2": "$val1"}, map[string]interface{}{"123": 200}},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,3 +155,32 @@ func TestParseDataMapWithVariables(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseHeaders(t *testing.T) {
|
||||||
|
variablesMapping := map[string]interface{}{
|
||||||
|
"var1": "foo1",
|
||||||
|
"val1": 200,
|
||||||
|
"var2": 123, // key is int
|
||||||
|
"val2": nil, // value is nil
|
||||||
|
}
|
||||||
|
|
||||||
|
testData := []struct {
|
||||||
|
rawHeaders map[string]string
|
||||||
|
expectHeaders map[string]string
|
||||||
|
}{
|
||||||
|
{map[string]string{"key": "$var1"}, map[string]string{"key": "foo1"}},
|
||||||
|
{map[string]string{"foo1": "$val1", "foo2": "bar2"}, map[string]string{"foo1": "200", "foo2": "bar2"}},
|
||||||
|
// parse map key, key is string
|
||||||
|
{map[string]string{"$var1": "$val1"}, map[string]string{"foo1": "200"}},
|
||||||
|
// parse map key, key is int
|
||||||
|
{map[string]string{"$var2": "$val1"}, map[string]string{"123": "200"}},
|
||||||
|
// parse map key & value, key is int, value is nil
|
||||||
|
{map[string]string{"$var2": "$val2"}, map[string]string{"123": "<nil>"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, data := range testData {
|
||||||
|
if !assert.Equal(t, data.expectHeaders, parseHeaders(data.rawHeaders, variablesMapping)) {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user