diff --git a/task.go b/task.go index 3049658..687219c 100644 --- a/task.go +++ b/task.go @@ -106,6 +106,8 @@ func setInitialTaskState(taskState *tasks.Task, queueName string) { } if httpRequest.GetHeaders() == nil { httpRequest.Headers = make(map[string]string) + } else { + httpRequest.Headers = titelize(httpRequest.GetHeaders()) } // Override httpRequest.Headers["User-Agent"] = "Google-Cloud-Tasks" @@ -119,6 +121,8 @@ func setInitialTaskState(taskState *tasks.Task, queueName string) { } if appEngineHTTPRequest.GetHeaders() == nil { appEngineHTTPRequest.Headers = make(map[string]string) + } else { + appEngineHTTPRequest.Headers = titelize(appEngineHTTPRequest.GetHeaders()) } appEngineHTTPRequest.Headers["User-Agent"] = "AppEngine-Google; (+http://code.google.com/appengine)" diff --git a/task_internal_test.go b/task_internal_test.go index 9921413..40dfa71 100644 --- a/task_internal_test.go +++ b/task_internal_test.go @@ -69,3 +69,40 @@ func TestSetInitialTaskStateAppEngineEmulatorTargeted(t *testing.T) { assert.Equal(t, "http://2.v1.worker.nginx", taskState.GetAppEngineHttpRequest().GetAppEngineRouting().GetHost()) } + +func TestSetInitialTaskStateAppEngineDefaultHeaders(t *testing.T) { + taskState := &taskspb.Task{ + MessageType: &taskspb.Task_AppEngineHttpRequest{ + AppEngineHttpRequest: &taskspb.AppEngineHttpRequest{ + Body: []byte{}, + }, + }, + } + setInitialTaskState(taskState, "projects/bluebook/locations/us-east1/queues/agentq") + + headers := taskState.GetAppEngineHttpRequest().GetHeaders() + assert.Len(t, headers, 2) + assert.Equal(t, "AppEngine-Google; (+http://code.google.com/appengine)", headers["User-Agent"]) + assert.Equal(t, "application/octet-stream", headers["Content-Type"]) +} + +func TestSetInitialTaskStateAppEngineHeaderOverrides(t *testing.T) { + inputHeaders := make(map[string]string) + inputHeaders["content-type"] = "application/json" + + taskState := &taskspb.Task{ + MessageType: &taskspb.Task_AppEngineHttpRequest{ + AppEngineHttpRequest: &taskspb.AppEngineHttpRequest{ + Headers: inputHeaders, + Body: []byte{}, + }, + }, + } + setInitialTaskState(taskState, "projects/bluebook/locations/us-east1/queues/agentq") + + headers := taskState.GetAppEngineHttpRequest().GetHeaders() + + assert.Len(t, headers, 2) + assert.Equal(t, "AppEngine-Google; (+http://code.google.com/appengine)", headers["User-Agent"]) + assert.Equal(t, "application/json", headers["Content-Type"]) +} diff --git a/util.go b/util.go new file mode 100644 index 0000000..2ab6adb --- /dev/null +++ b/util.go @@ -0,0 +1,11 @@ +package main + +import "strings" + +func titelize(input map[string]string) map[string]string { + output := make(map[string]string) + for k, v := range input { + output[strings.Title(k)] = v + } + return output +} diff --git a/util_internal_test.go b/util_internal_test.go new file mode 100644 index 0000000..ba8f4aa --- /dev/null +++ b/util_internal_test.go @@ -0,0 +1,17 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestTitelize(t *testing.T) { + headers := make(map[string]string) + headers["Accept-Encoding"] = "gzip" + headers["content-type"] = "application/json" + + headers = titelize(headers) + assert.Contains(t, headers, "Accept-Encoding") + assert.Contains(t, headers, "Content-Type") +}