From cbb3f011762872cba5c7e40f9423c034edb2d351 Mon Sep 17 00:00:00 2001 From: Virgil Date: Mon, 30 Mar 2026 20:40:59 +0000 Subject: [PATCH] refactor(node): rename test helpers for AX clarity Co-Authored-By: Virgil --- node/controller_test.go | 12 +++++----- node/integration_test.go | 40 +++++++++++++++++----------------- node/transport_test.go | 42 +++++++++++++++++------------------ node/worker_test.go | 47 ++++++++++++++++++++-------------------- 4 files changed, 69 insertions(+), 72 deletions(-) diff --git a/node/controller_test.go b/node/controller_test.go index 4b3ba3e..6077cce 100644 --- a/node/controller_test.go +++ b/node/controller_test.go @@ -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() }) diff --git a/node/integration_test.go b/node/integration_test.go index 14f68b4..46cf730 100644 --- a/node/integration_test.go +++ b/node/integration_test.go @@ -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) diff --git a/node/transport_test.go b/node/transport_test.go index d278ac1..4fe6e1f 100644 --- a/node/transport_test.go +++ b/node/transport_test.go @@ -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) diff --git a/node/worker_test.go b/node/worker_test.go index ccea789..b29e2a8 100644 --- a/node/worker_test.go +++ b/node/worker_test.go @@ -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()