Files
go-sip/deploys/preprod/probe_test.go
T

53 lines
1.4 KiB
Go

package main
import (
"crypto/tls"
"crypto/x509"
"encoding/json"
"errors"
"fmt"
"net"
"strings"
"syscall"
"testing"
)
func TestEnvironmentRejectsMissingConfigurationWithoutNetworking(t *testing.T) {
t.Setenv("DISPATCHER_ID", "")
t.Setenv("AGENT_ID", "")
for _, role := range []string{"agent", "dispatcher", "unknown"} {
got := environmentCheck(role)
if got.Success || got.MQConnected || got.ErrorClass == "" {
t.Fatalf("unexpected result: %+v", got)
}
}
}
func TestTransportFailureDistinguishesCertificateAndAvailability(t *testing.T) {
for _, test := range []struct {
err error
want string
}{
{fmt.Errorf("wrapped: %w", x509.UnknownAuthorityError{}), "tls_failed"},
{&tls.CertificateVerificationError{Err: x509.HostnameError{}}, "tls_failed"},
{&net.OpError{Op: "dial", Err: syscall.ECONNREFUSED}, "unavailable"},
{&net.DNSError{IsTimeout: true}, "unavailable"},
{errors.New("unclassified transport issue"), "transport_failed"},
} {
if got := transportFailure(test.err); got != test.want {
t.Fatalf("got %s want %s", got, test.want)
}
}
}
func TestDiagnosticNeverSerializesErrorContents(t *testing.T) {
r := report{Phase: "sip"}
rejected(&r, errors.New("synthetic-sensitive-value"))
encoded, err := json.Marshal(r)
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(encoded), "synthetic-sensitive-value") {
t.Fatal("diagnostic leaked error content")
}
}