(Feat): Initial Commit
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled

This commit is contained in:
2026-07-03 19:41:31 +05:30
commit 7e940c83a7
461 changed files with 45002 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
package test
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"net/http/httptest"
"allaboutapps.dev/aw/go-starter/internal/api"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
"github.com/labstack/echo/v4"
)
type GenericPayload map[string]interface{}
type GenericArrayPayload []interface{}
func (g GenericPayload) Reader(t TestingT) *bytes.Reader {
t.Helper()
b, err := json.Marshal(g)
if err != nil {
t.Fatalf("failed to serialize payload: %v", err)
}
return bytes.NewReader(b)
}
func (g GenericArrayPayload) Reader(t TestingT) *bytes.Reader {
t.Helper()
b, err := json.Marshal(g)
if err != nil {
t.Fatalf("failed to serialize payload: %v", err)
}
return bytes.NewReader(b)
}
func PerformRequestWithParams(t TestingT, s *api.Server, method string, path string, body GenericPayload, headers http.Header, queryParams map[string]string) *httptest.ResponseRecorder {
t.Helper()
if body == nil {
return PerformRequestWithRawBody(t, s, method, path, nil, headers, queryParams)
}
return PerformRequestWithRawBody(t, s, method, path, body.Reader(t), headers, queryParams)
}
func PerformRequestWithArrayAndParams(t TestingT, s *api.Server, method string, path string, body GenericArrayPayload, headers http.Header, queryParams map[string]string) *httptest.ResponseRecorder {
t.Helper()
if body == nil {
return PerformRequestWithRawBody(t, s, method, path, nil, headers, queryParams)
}
return PerformRequestWithRawBody(t, s, method, path, body.Reader(t), headers, queryParams)
}
func PerformRequestWithRawBody(t TestingT, s *api.Server, method string, path string, body io.Reader, headers http.Header, queryParams map[string]string) *httptest.ResponseRecorder {
t.Helper()
req := httptest.NewRequest(method, path, body)
if headers != nil {
req.Header = headers
}
if body != nil && len(req.Header.Get(echo.HeaderContentType)) == 0 {
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)
}
if queryParams != nil {
q := req.URL.Query()
for k, v := range queryParams {
q.Add(k, v)
}
req.URL.RawQuery = q.Encode()
}
res := httptest.NewRecorder()
s.Echo.ServeHTTP(res, req)
return res
}
func PerformRequest(t TestingT, s *api.Server, method string, path string, body GenericPayload, headers http.Header) *httptest.ResponseRecorder {
t.Helper()
return PerformRequestWithParams(t, s, method, path, body, headers, nil)
}
func PerformRequestWithArray(t TestingT, s *api.Server, method string, path string, body GenericArrayPayload, headers http.Header) *httptest.ResponseRecorder {
t.Helper()
return PerformRequestWithArrayAndParams(t, s, method, path, body, headers, nil)
}
func ParseResponseBody(t TestingT, res *httptest.ResponseRecorder, v interface{}) {
t.Helper()
if err := json.NewDecoder(res.Result().Body).Decode(&v); err != nil {
t.Fatalf("Failed to parse response body: %v", err)
}
}
func ParseResponseAndValidate(t TestingT, res *httptest.ResponseRecorder, v runtime.Validatable) {
t.Helper()
ParseResponseBody(t, res, &v)
if err := v.Validate(strfmt.Default); err != nil {
t.Fatalf("Failed to validate response: %v", err)
}
}
func HeadersWithAuth(t TestingT, token string) http.Header {
t.Helper()
return HeadersWithConfigurableAuth(t, "Bearer", token)
}
func HeadersWithConfigurableAuth(t TestingT, scheme string, token string) http.Header {
t.Helper()
headers := http.Header{}
headers.Set(echo.HeaderAuthorization, fmt.Sprintf("%s %s", scheme, token))
return headers
}
func HeadersWithAPIKeyAuth(t TestingT, token string) http.Header {
t.Helper()
return HeadersWithConfigurableAuth(t, "APIKey", token)
}