| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package wireguard_testimport (	"context"	"github.com/stretchr/testify/assert"	"runtime/debug"	"testing"	"github.com/xtls/xray-core/core"	"github.com/xtls/xray-core/proxy/wireguard")// TestWireGuardServerInitializationError verifies that an error during TUN initialization// (triggered by an empty SecretKey) in the WireGuard server does not cause a panic and returns an error instead.func TestWireGuardServerInitializationError(t *testing.T) {	// Create a minimal core instance with default features	config := &core.Config{}	instance, err := core.New(config)	if err != nil {		t.Fatalf("Failed to create core instance: %v", err)	}	// Set the Xray instance in the context	ctx := context.WithValue(context.Background(), core.XrayKey(1), instance)	// Define the server configuration with an empty SecretKey to trigger error	conf := &wireguard.DeviceConfig{		IsClient:  false,		Endpoint:  []string{"10.0.0.1/32"},		Mtu:       1420,		SecretKey: "", // Empty SecretKey to trigger error		Peers: []*wireguard.PeerConfig{			{				PublicKey:  "some_public_key",				AllowedIps: []string{"10.0.0.2/32"},			},		},	}	// Use defer to catch any panic and fail the test explicitly	defer func() {		if r := recover(); r != nil {			t.Errorf("TUN initialization panicked: %v", r)			debug.PrintStack()		}	}()	// Attempt to initialize the WireGuard server	_, err = wireguard.NewServer(ctx, conf)	// Check that an error is returned	assert.ErrorContains(t, err, "failed to set private_key: hex string does not fit the slice")}
 |