Release prep: 54 engines, self-hosted signatures, i18n, dashboard updates

This commit is contained in:
DmitrL-dev 2026-03-23 16:45:40 +10:00
parent 694e32be26
commit 41cbfd6e0a
178 changed files with 36008 additions and 399 deletions

View file

@ -0,0 +1,106 @@
package tracing
import (
"context"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
// --- InitTracer Tests ---
func TestInitTracer_NoopWhenEndpointEmpty(t *testing.T) {
tp, err := InitTracer(context.Background(), "")
require.NoError(t, err)
assert.Nil(t, tp, "empty endpoint should return nil TracerProvider (noop)")
}
func TestShutdown_NilProvider_NoPanic(t *testing.T) {
// Should not panic when called with nil.
assert.NotPanics(t, func() {
Shutdown(context.Background(), nil)
})
}
func TestTracer_ReturnsNonNil(t *testing.T) {
tr := Tracer("test-tracer")
assert.NotNil(t, tr)
}
// --- HTTPMiddleware Tests ---
func TestHTTPMiddleware_SetsStatusCode(t *testing.T) {
handler := HTTPMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))
}))
req := httptest.NewRequest(http.MethodPost, "/api/soc/event", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusCreated, rr.Code)
assert.Equal(t, "created", rr.Body.String())
}
func TestHTTPMiddleware_Default200(t *testing.T) {
handler := HTTPMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
}))
req := httptest.NewRequest(http.MethodGet, "/healthz", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusOK, rr.Code)
}
func TestHTTPMiddleware_ErrorStatus(t *testing.T) {
handler := HTTPMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
}))
req := httptest.NewRequest(http.MethodGet, "/error", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
assert.Equal(t, http.StatusInternalServerError, rr.Code)
}
// --- statusWriter Tests ---
func TestStatusWriter_DefaultStatus(t *testing.T) {
rr := httptest.NewRecorder()
sw := &statusWriter{ResponseWriter: rr, status: http.StatusOK}
assert.Equal(t, http.StatusOK, sw.status)
assert.False(t, sw.wroteHeader)
}
func TestStatusWriter_WriteHeaderOnce(t *testing.T) {
rr := httptest.NewRecorder()
sw := &statusWriter{ResponseWriter: rr, status: http.StatusOK}
sw.WriteHeader(http.StatusNotFound)
assert.Equal(t, http.StatusNotFound, sw.status)
assert.True(t, sw.wroteHeader)
// Second call should NOT change status.
sw.WriteHeader(http.StatusCreated)
assert.Equal(t, http.StatusNotFound, sw.status, "status should not change on second WriteHeader")
}
func TestStatusWriter_WriteImplicitHeader(t *testing.T) {
rr := httptest.NewRecorder()
sw := &statusWriter{ResponseWriter: rr, status: http.StatusOK}
n, err := sw.Write([]byte("hello"))
assert.NoError(t, err)
assert.Equal(t, 5, n)
assert.True(t, sw.wroteHeader, "Write should set wroteHeader")
}