func Test{{$testFixture.HandleID | title}}{{$testFixture.TestName | title}}OKResponse()

in codegen/template_bundle/template_files.go [809:903]


func Test{{$testFixture.HandleID | title}}{{$testFixture.TestName | title}}OKResponse(t *testing.T) {
	var counter int

	gateway, err := testGateway.CreateGateway(t, nil, &testGateway.Options{
		KnownHTTPBackends: []string{"{{$clientID}}"},
		TestBinary: filepath.Join(
			getDirName{{$testFixture.HandleID | title}}{{$testFixture.TestName | title}}(),
			"{{$relativePathToRoot}}",
			"build", "services", "{{$testFixture.TestServiceName}}",
			"main", "main.go",
		),
		ConfigFiles: []string{
			filepath.Join(
				getDirName{{$testFixture.HandleID | title}}{{$testFixture.TestName | title}}(),
				"{{$relativePathToRoot}}",
				"config", "test.yaml",
			),
			filepath.Join(
				getDirName{{$testFixture.HandleID | title}}{{$testFixture.TestName | title}}(),
				"{{$relativePathToRoot}}",
				"config", "{{$testFixture.TestServiceName}}", "test.yaml",
			),
		},
	})
	if !assert.NoError(t, err, "got bootstrap err") {
		return
	}
	defer gateway.Close()

	{{range $clientCallName, $clientCallFixture := $testFixture.ClientTestFixtures}}
	fake{{$clientCallFixture.ClientMethod | title}} := func(w http.ResponseWriter, r *http.Request) {

		{{range $k, $v := $clientCallFixture.ClientReqHeaders -}}
		assert.Equal(
			t,
			"{{$v}}",
			r.Header.Get("{{$k}}"))
		{{end}}

		{{range $k, $v := $clientCallFixture.ClientResHeaders -}}
		w.Header().Set("{{$k}}", "{{$v}}")
		{{end}}
		w.WriteHeader({{$.Method.OKStatusCode.Code}})

		{{ if $clientCallFixture.ClientResponse.Body -}}
		payload := []byte({{printf "` + "`" + `%s` + "`" + `" $clientCallFixture.ClientResponse.Body}})
		{{else}}
		var payload []byte
		{{- end}}

		// TODO(zw): generate client response.
		if _, err := w.Write(payload); err != nil {
			t.Fatal("can't write fake response")
		}
		counter++
	}

	gateway.HTTPBackends()["{{$clientID}}"].HandleFunc(
		"{{$clientMethod.HTTPMethod}}", "{{$clientMethod.HTTPPath}}", fake{{$clientCallFixture.ClientMethod | title}},
	)

	{{end -}}

	headers := map[string]string{}
	{{ if $headers -}}
	{{range $k, $v := $testFixture.EndpointReqHeaders -}}
	headers["{{$k}}"] = "{{$v}}"
	{{end}}
	{{- end}}

	{{ if $testFixture.EndpointRequest.Body -}}
	endpointRequest := []byte({{printf "` + "`" + `%s` + "`" + `" $testFixture.EndpointRequest.Body}})
	{{else}}
	endpointRequest := []byte(` + "`" + `{}` + "`" + `)
	{{- end}}

	res, err := gateway.MakeRequest(
		"{{$.Method.HTTPMethod}}",
		"{{$.Method.HTTPPath}}",
		headers,
		bytes.NewReader(endpointRequest),
	)
	if !assert.NoError(t, err, "got http error") {
		return
	}

	assert.Equal(t, {{$.Method.OKStatusCode.Code}}, res.StatusCode)
	{{range $k, $v := $testFixture.EndpointResHeaders -}}
	assert.Equal(
		t,
		"{{$v}}",
		res.Header.Get("{{$k}}"))
	{{end}}
	assert.Equal(t, 1, counter)
}