fleet/server/test/httptest/http.go
Victor Lyuboslavsky 3d2171d2d9
Moved common endpointer packages to platform dir. (#37780)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #37192

- Move /server/service/middleware/endpoint_utils to
/server/platform/endpointer
- Move /server/service/middleware/authzcheck to
/server/platform/middleware/authzcheck
- Move /server/service/middleware/ratelimit to
/server/platform/middleware/ratelimit

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

* **Refactor**
* Reorganized internal endpoint utilities to a centralized platform
location for improved code organization and maintainability. No
functional changes to existing features or APIs.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-01-06 14:23:07 -06:00

55 lines
1.4 KiB
Go

package httptest
import (
"bytes"
"fmt"
"io"
"net/http"
"testing"
"github.com/fleetdm/fleet/v4/server/platform/endpointer"
"github.com/stretchr/testify/require"
)
func DoHTTPReq(
t *testing.T,
client *http.Client,
jsonDecoder func(r io.Reader, v interface{}) error,
verb string, rawBytes []byte, urlPath string,
headers map[string]string,
expectedStatusCode int,
queryParams ...string,
) *http.Response {
requestBody := io.NopCloser(bytes.NewBuffer(rawBytes))
req, err := http.NewRequest(verb, urlPath, requestBody)
require.NoError(t, err)
for key, val := range headers {
req.Header.Add(key, val)
}
if len(queryParams)%2 != 0 {
require.Fail(t, "need even number of params: key value")
}
if len(queryParams) > 0 {
q := req.URL.Query()
for i := 0; i < len(queryParams); i += 2 {
q.Add(queryParams[i], queryParams[i+1])
}
req.URL.RawQuery = q.Encode()
}
resp, err := client.Do(req)
require.NoError(t, err)
if resp.StatusCode != expectedStatusCode {
defer resp.Body.Close()
var je endpointer.JsonError
err := jsonDecoder(resp.Body, &je)
if err != nil {
t.Logf("Error trying to decode response body as Fleet jsonError: %s", err)
require.Equal(t, expectedStatusCode, resp.StatusCode, fmt.Sprintf("response: %+v", resp))
}
require.Equal(t, expectedStatusCode, resp.StatusCode, fmt.Sprintf("Fleet jsonError: %+v", je))
}
return resp
}