func CreateSourceMap()

in systemtest/kibana.go [246:300]


func CreateSourceMap(t testing.TB, sourcemap []byte, serviceName, serviceVersion, bundleFilepath string) string {
	t.Helper()

	var data bytes.Buffer
	mw := multipart.NewWriter(&data)
	require.NoError(t, mw.WriteField("service_name", serviceName))
	require.NoError(t, mw.WriteField("service_version", serviceVersion))
	require.NoError(t, mw.WriteField("bundle_filepath", bundleFilepath))

	sourcemapFileWriter, err := mw.CreateFormFile("sourcemap", "sourcemap.js.map")
	require.NoError(t, err)
	sourcemapFileWriter.Write(sourcemap)
	require.NoError(t, mw.Close())

	apiURL := *KibanaURL
	apiURL.Path += "/api/apm/sourcemaps"
	req, _ := http.NewRequest("POST", apiURL.String(), &data)
	req.Header.Add("Content-Type", mw.FormDataContentType())
	req.Header.Set("kbn-xsrf", "1")

	resp, err := http.DefaultClient.Do(req)
	require.NoError(t, err)
	defer resp.Body.Close()

	respBody, err := io.ReadAll(resp.Body)
	require.NoError(t, err)
	require.Equal(t, http.StatusOK, resp.StatusCode, string(respBody))

	var result struct {
		ID string `json:"id"`
	}
	err = json.Unmarshal(respBody, &result)
	require.NoError(t, err)

	cleanPath := bundleFilepath
	u, err := url.Parse(bundleFilepath)
	if err == nil {
		u.Fragment = ""
		u.RawQuery = ""
		u.Path = path.Clean(u.Path)
		cleanPath = u.String()
	}

	id := serviceName + "-" + serviceVersion + "-" + cleanPath
	estest.ExpectMinDocs(t, Elasticsearch, 1, ".apm-source-map", espoll.TermQuery{
		Field: "_id",
		Value: id,
	})

	t.Cleanup(func() {
		DeleteSourceMap(t, result.ID)
	})

	return result.ID
}