refactor(node): rename test helpers for AX clarity
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 1m28s

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-03-30 20:40:59 +00:00
parent 0ca20d53ea
commit cbb3f01176
4 changed files with 69 additions and 72 deletions

View file

@ -44,8 +44,8 @@ func setupControllerPair(t *testing.T) (*Controller, *Worker, *testTransportPair
func makeWorkerServer(t *testing.T) (*NodeManager, string, *Transport) {
t.Helper()
nm := testNode(t, "worker", RoleWorker)
reg := testRegistry(t)
nm := newTestNodeManager(t, "worker", RoleWorker)
reg := newTestPeerRegistry(t)
cfg := DefaultTransportConfig()
srv := NewTransport(nm, reg, cfg)
@ -149,8 +149,8 @@ func TestController_AutoConnect_Good(t *testing.T) {
func TestController_GetAllStats_Good(t *testing.T) {
// Controller node with connections to two independent worker servers.
controllerNM := testNode(t, "controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "controller", RoleController)
controllerReg := newTestPeerRegistry(t)
controllerTransport := NewTransport(controllerNM, controllerReg, DefaultTransportConfig())
t.Cleanup(func() { controllerTransport.Stop() })
@ -218,8 +218,8 @@ func TestController_PingPeerRTT_Good(t *testing.T) {
func TestController_ConcurrentRequests_Ugly(t *testing.T) {
// Multiple goroutines send pings to different peers simultaneously.
// Verify correct correlation — no cross-talk between responses.
controllerNM := testNode(t, "controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "controller", RoleController)
controllerReg := newTestPeerRegistry(t)
controllerTransport := NewTransport(controllerNM, controllerReg, DefaultTransportConfig())
t.Cleanup(func() { controllerTransport.Stop() })

View file

@ -31,8 +31,8 @@ func TestIntegration_FullNodeLifecycle_Good(t *testing.T) {
// ----------------------------------------------------------------
// Step 1: Identity creation
// ----------------------------------------------------------------
controllerNM := testNode(t, "integration-controller", RoleController)
workerNM := testNode(t, "integration-worker", RoleWorker)
controllerNM := newTestNodeManager(t, "integration-controller", RoleController)
workerNM := newTestNodeManager(t, "integration-worker", RoleWorker)
controllerIdentity := controllerNM.GetIdentity()
workerIdentity := workerNM.GetIdentity()
@ -48,8 +48,8 @@ func TestIntegration_FullNodeLifecycle_Good(t *testing.T) {
// ----------------------------------------------------------------
// Step 2: Set up transports, registries, worker, and controller
// ----------------------------------------------------------------
workerReg := testRegistry(t)
controllerReg := testRegistry(t)
workerReg := newTestPeerRegistry(t)
controllerReg := newTestPeerRegistry(t)
workerCfg := DefaultTransportConfig()
workerCfg.PingInterval = 2 * time.Second
@ -239,8 +239,8 @@ func TestIntegration_FullNodeLifecycle_Good(t *testing.T) {
// TestIntegration_SharedSecretAgreement verifies that two independently created
// nodes derive the same shared secret via ECDH.
func TestIntegration_SharedSecretAgreement_Good(t *testing.T) {
nodeA := testNode(t, "secret-node-a", RoleDual)
nodeB := testNode(t, "secret-node-b", RoleDual)
nodeA := newTestNodeManager(t, "secret-node-a", RoleDual)
nodeB := newTestNodeManager(t, "secret-node-b", RoleDual)
pubKeyA := nodeA.GetIdentity().PublicKey
pubKeyB := nodeB.GetIdentity().PublicKey
@ -284,8 +284,8 @@ func TestIntegration_TwoNodeBidirectionalMessages_Good(t *testing.T) {
// TestIntegration_MultiPeerTopology verifies that a controller can
// simultaneously communicate with multiple workers.
func TestIntegration_MultiPeerTopology_Good(t *testing.T) {
controllerNM := testNode(t, "multi-controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "multi-controller", RoleController)
controllerReg := newTestPeerRegistry(t)
controllerTransport := NewTransport(controllerNM, controllerReg, DefaultTransportConfig())
t.Cleanup(func() { controllerTransport.Stop() })
@ -396,8 +396,8 @@ func stmfGenerateKeyPair(dir string) (string, error) {
// TestIntegration_UEPSFullRoundTrip exercises a complete UEPS packet
// lifecycle: build, sign, transmit (simulated), read, verify, dispatch.
func TestIntegration_UEPSFullRoundTrip_Ugly(t *testing.T) {
nodeA := testNode(t, "ueps-node-a", RoleController)
nodeB := testNode(t, "ueps-node-b", RoleWorker)
nodeA := newTestNodeManager(t, "ueps-node-a", RoleController)
nodeB := newTestNodeManager(t, "ueps-node-b", RoleWorker)
bPubKey := nodeB.GetIdentity().PublicKey
sharedSecret, err := nodeA.DeriveSharedSecret(bPubKey)
@ -447,8 +447,8 @@ func TestIntegration_UEPSFullRoundTrip_Ugly(t *testing.T) {
// TestIntegration_UEPSIntegrityFailure verifies that a tampered UEPS packet
// is rejected by HMAC verification.
func TestIntegration_UEPSIntegrityFailure_Bad(t *testing.T) {
nodeA := testNode(t, "integrity-a", RoleController)
nodeB := testNode(t, "integrity-b", RoleWorker)
nodeA := newTestNodeManager(t, "integrity-a", RoleController)
nodeB := newTestNodeManager(t, "integrity-b", RoleWorker)
bPubKey := nodeB.GetIdentity().PublicKey
sharedSecret, err := nodeA.DeriveSharedSecret(bPubKey)
@ -478,8 +478,8 @@ func TestIntegration_UEPSIntegrityFailure_Bad(t *testing.T) {
// TestIntegration_AllowlistHandshakeRejection verifies that a peer not in the
// allowlist is rejected during the WebSocket handshake.
func TestIntegration_AllowlistHandshakeRejection_Bad(t *testing.T) {
workerNM := testNode(t, "allowlist-worker", RoleWorker)
workerReg := testRegistry(t)
workerNM := newTestNodeManager(t, "allowlist-worker", RoleWorker)
workerReg := newTestPeerRegistry(t)
workerReg.SetAuthMode(PeerAuthAllowlist)
workerTransport := NewTransport(workerNM, workerReg, DefaultTransportConfig())
@ -494,8 +494,8 @@ func TestIntegration_AllowlistHandshakeRejection_Bad(t *testing.T) {
u, _ := url.Parse(ts.URL)
controllerNM := testNode(t, "rejected-controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "rejected-controller", RoleController)
controllerReg := newTestPeerRegistry(t)
controllerTransport := NewTransport(controllerNM, controllerReg, DefaultTransportConfig())
t.Cleanup(func() { controllerTransport.Stop() })
@ -515,12 +515,12 @@ func TestIntegration_AllowlistHandshakeRejection_Bad(t *testing.T) {
// TestIntegration_AllowlistHandshakeAccepted verifies that an allowlisted
// peer can connect successfully.
func TestIntegration_AllowlistHandshakeAccepted_Good(t *testing.T) {
workerNM := testNode(t, "allowlist-worker-ok", RoleWorker)
workerReg := testRegistry(t)
workerNM := newTestNodeManager(t, "allowlist-worker-ok", RoleWorker)
workerReg := newTestPeerRegistry(t)
workerReg.SetAuthMode(PeerAuthAllowlist)
controllerNM := testNode(t, "allowed-controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "allowed-controller", RoleController)
controllerReg := newTestPeerRegistry(t)
workerReg.AllowPublicKey(controllerNM.GetIdentity().PublicKey)

View file

@ -15,8 +15,7 @@ import (
// --- Test Helpers ---
// testNode creates a NodeManager with a generated identity in a temp directory.
func testNode(t *testing.T, name string, role NodeRole) *NodeManager {
func newTestNodeManager(t *testing.T, name string, role NodeRole) *NodeManager {
t.Helper()
dir := t.TempDir()
nm, err := NewNodeManagerFromPaths(testNodeManagerPaths(dir))
@ -29,8 +28,7 @@ func testNode(t *testing.T, name string, role NodeRole) *NodeManager {
return nm
}
// testRegistry creates a PeerRegistry with open auth in a temp directory.
func testRegistry(t *testing.T) *PeerRegistry {
func newTestPeerRegistry(t *testing.T) *PeerRegistry {
t.Helper()
dir := t.TempDir()
reg, err := NewPeerRegistryFromPath(testJoinPath(dir, "peers.json"))
@ -63,10 +61,10 @@ func setupTestTransportPair(t *testing.T) *testTransportPair {
func setupTestTransportPairWithConfig(t *testing.T, serverCfg, clientCfg TransportConfig) *testTransportPair {
t.Helper()
serverNM := testNode(t, "server", RoleWorker)
clientNM := testNode(t, "client", RoleController)
serverReg := testRegistry(t)
clientReg := testRegistry(t)
serverNM := newTestNodeManager(t, "server", RoleWorker)
clientNM := newTestNodeManager(t, "client", RoleController)
serverReg := newTestPeerRegistry(t)
clientReg := newTestPeerRegistry(t)
serverTransport := NewTransport(serverNM, serverReg, serverCfg)
clientTransport := NewTransport(clientNM, clientReg, clientCfg)
@ -410,8 +408,8 @@ func TestTransport_RateLimiting_Good(t *testing.T) {
func TestTransport_MaxConnsEnforcement_Good(t *testing.T) {
// Server with MaxConns=1
serverNM := testNode(t, "maxconns-server", RoleWorker)
serverReg := testRegistry(t)
serverNM := newTestNodeManager(t, "maxconns-server", RoleWorker)
serverReg := newTestPeerRegistry(t)
serverCfg := DefaultTransportConfig()
serverCfg.MaxConns = 1
@ -429,8 +427,8 @@ func TestTransport_MaxConnsEnforcement_Good(t *testing.T) {
serverAddr := u.Host
// First client connects successfully
client1NM := testNode(t, "client1", RoleController)
client1Reg := testRegistry(t)
client1NM := newTestNodeManager(t, "client1", RoleController)
client1Reg := newTestPeerRegistry(t)
client1Transport := NewTransport(client1NM, client1Reg, DefaultTransportConfig())
t.Cleanup(func() { client1Transport.Stop() })
@ -446,8 +444,8 @@ func TestTransport_MaxConnsEnforcement_Good(t *testing.T) {
time.Sleep(50 * time.Millisecond)
// Second client should be rejected (MaxConns=1 reached)
client2NM := testNode(t, "client2", RoleController)
client2Reg := testRegistry(t)
client2NM := newTestNodeManager(t, "client2", RoleController)
client2Reg := newTestPeerRegistry(t)
client2Transport := NewTransport(client2NM, client2Reg, DefaultTransportConfig())
t.Cleanup(func() { client2Transport.Stop() })
@ -586,8 +584,8 @@ func TestTransport_ConcurrentSends_Ugly(t *testing.T) {
func TestTransport_Broadcast_Good(t *testing.T) {
// Set up a controller with two worker peers connected.
controllerNM := testNode(t, "broadcast-controller", RoleController)
controllerReg := testRegistry(t)
controllerNM := newTestNodeManager(t, "broadcast-controller", RoleController)
controllerReg := newTestPeerRegistry(t)
controllerTransport := NewTransport(controllerNM, controllerReg, DefaultTransportConfig())
t.Cleanup(func() { controllerTransport.Stop() })
@ -669,8 +667,8 @@ func TestTransport_BroadcastExcludesSender_Good(t *testing.T) {
}
func TestTransport_NewTransport_DefaultMaxMessageSize_Good(t *testing.T) {
nm := testNode(t, "defaults", RoleWorker)
reg := testRegistry(t)
nm := newTestNodeManager(t, "defaults", RoleWorker)
reg := newTestPeerRegistry(t)
cfg := TransportConfig{
MaxMessageSize: 0, // should use default
}
@ -701,8 +699,8 @@ func TestTransport_ConnectedPeers_Good(t *testing.T) {
}
func TestTransport_StartAndStop_Good(t *testing.T) {
nm := testNode(t, "start-test", RoleWorker)
reg := testRegistry(t)
nm := newTestNodeManager(t, "start-test", RoleWorker)
reg := newTestPeerRegistry(t)
cfg := DefaultTransportConfig()
cfg.ListenAddr = ":0" // Let OS pick a free port
@ -723,8 +721,8 @@ func TestTransport_StartAndStop_Good(t *testing.T) {
}
func TestTransport_CheckOrigin_Good(t *testing.T) {
nm := testNode(t, "origin-test", RoleWorker)
reg := testRegistry(t)
nm := newTestNodeManager(t, "origin-test", RoleWorker)
reg := newTestPeerRegistry(t)
cfg := DefaultTransportConfig()
tr := NewTransport(nm, reg, cfg)

View file

@ -8,8 +8,7 @@ import (
core "dappco.re/go/core"
)
// setupTestEnv sets up a temporary environment for testing and returns cleanup function
func setupTestEnv(t *testing.T) func() {
func setupTestEnvironment(t *testing.T) func() {
tmpDir := t.TempDir()
t.Setenv("XDG_CONFIG_HOME", testJoinPath(tmpDir, "config"))
t.Setenv("XDG_DATA_HOME", testJoinPath(tmpDir, "data"))
@ -17,7 +16,7 @@ func setupTestEnv(t *testing.T) func() {
}
func TestWorker_NewWorker_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -50,7 +49,7 @@ func TestWorker_NewWorker_Good(t *testing.T) {
}
func TestWorker_SetMinerManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -80,7 +79,7 @@ func TestWorker_SetMinerManager_Good(t *testing.T) {
}
func TestWorker_SetProfileManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -110,7 +109,7 @@ func TestWorker_SetProfileManager_Good(t *testing.T) {
}
func TestWorker_HandlePing_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -171,7 +170,7 @@ func TestWorker_HandlePing_Good(t *testing.T) {
}
func TestWorker_HandleGetStats_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -231,7 +230,7 @@ func TestWorker_HandleGetStats_Good(t *testing.T) {
}
func TestWorker_HandleStartMiner_NoManager_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -271,7 +270,7 @@ func TestWorker_HandleStartMiner_NoManager_Bad(t *testing.T) {
}
func TestWorker_HandleStopMiner_NoManager_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -311,7 +310,7 @@ func TestWorker_HandleStopMiner_NoManager_Bad(t *testing.T) {
}
func TestWorker_HandleGetLogs_NoManager_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -351,7 +350,7 @@ func TestWorker_HandleGetLogs_NoManager_Bad(t *testing.T) {
}
func TestWorker_HandleDeploy_Profile_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -395,7 +394,7 @@ func TestWorker_HandleDeploy_Profile_Good(t *testing.T) {
}
func TestWorker_HandleDeploy_UnknownType_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -578,7 +577,7 @@ func (m *mockProfileManagerFailing) SaveProfile(profile any) error {
}
func TestWorker_HandleStartMiner_WithManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -747,7 +746,7 @@ func (m *mockMinerManagerWithStart) StartMiner(minerType string, config any) (Mi
}
func TestWorker_HandleStopMiner_WithManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -811,7 +810,7 @@ func TestWorker_HandleStopMiner_WithManager_Good(t *testing.T) {
}
func TestWorker_HandleGetLogs_WithManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -918,7 +917,7 @@ func TestWorker_HandleGetLogs_WithManager_Good(t *testing.T) {
}
func TestWorker_HandleGetStats_WithMinerManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -979,7 +978,7 @@ func TestWorker_HandleGetStats_WithMinerManager_Good(t *testing.T) {
}
func TestWorker_HandleMessage_UnknownType_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1006,7 +1005,7 @@ func TestWorker_HandleMessage_UnknownType_Bad(t *testing.T) {
}
func TestWorker_HandleDeploy_ProfileWithManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1061,7 +1060,7 @@ func TestWorker_HandleDeploy_ProfileWithManager_Good(t *testing.T) {
}
func TestWorker_HandleDeploy_ProfileSaveFails_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1107,7 +1106,7 @@ func TestWorker_HandleDeploy_ProfileSaveFails_Bad(t *testing.T) {
}
func TestWorker_HandleDeploy_MinerBundle_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1171,7 +1170,7 @@ func TestWorker_HandleDeploy_MinerBundle_Good(t *testing.T) {
}
func TestWorker_HandleDeploy_FullBundle_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1227,7 +1226,7 @@ func TestWorker_HandleDeploy_FullBundle_Good(t *testing.T) {
}
func TestWorker_HandleDeploy_MinerBundle_WithProfileManager_Good(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1288,7 +1287,7 @@ func TestWorker_HandleDeploy_MinerBundle_WithProfileManager_Good(t *testing.T) {
}
func TestWorker_HandleDeploy_InvalidPayload_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
dir := t.TempDir()
@ -1310,7 +1309,7 @@ func TestWorker_HandleDeploy_InvalidPayload_Bad(t *testing.T) {
}
func TestWorker_HandleGetStats_NoIdentity_Bad(t *testing.T) {
cleanup := setupTestEnv(t)
cleanup := setupTestEnvironment(t)
defer cleanup()
tmpDir := t.TempDir()