# Test for agent-helper module # Test with all scripts provided run "test_with_all_scripts" { command = plan variables { agent_id = "test-agent-id" agent_name = "test-agent" module_dir_name = ".test-module" pre_install_script = "echo 'pre-install'" install_script = "echo 'install'" post_install_script = "echo 'post-install'" start_script = "echo 'start'" } # Verify pre_install_script is created when provided assert { condition = length(coder_script.pre_install_script) == 1 error_message = "Pre-install script should be created when pre_install_script is provided" } assert { condition = coder_script.pre_install_script[0].agent_id == "test-agent-id" error_message = "Pre-install script agent ID should match input" } assert { condition = coder_script.pre_install_script[0].display_name == "Pre-Install Script" error_message = "Pre-install script should have correct display name" } assert { condition = coder_script.pre_install_script[0].run_on_start == true error_message = "Pre-install script should run on start" } # Verify install_script is created assert { condition = coder_script.install_script.agent_id == "test-agent-id" error_message = "Install script agent ID should match input" } assert { condition = coder_script.install_script.display_name == "Install Script" error_message = "Install script should have correct display name" } assert { condition = coder_script.install_script.run_on_start == true error_message = "Install script should run on start" } # Verify post_install_script is created when provided assert { condition = length(coder_script.post_install_script) == 1 error_message = "Post-install script should be created when post_install_script is provided" } assert { condition = coder_script.post_install_script[0].agent_id == "test-agent-id" error_message = "Post-install script agent ID should match input" } assert { condition = coder_script.post_install_script[0].display_name == "Post-Install Script" error_message = "Post-install script should have correct display name" } assert { condition = coder_script.post_install_script[0].run_on_start == true error_message = "Post-install script should run on start" } # Verify start_script is created assert { condition = coder_script.start_script.agent_id == "test-agent-id" error_message = "Start script agent ID should match input" } assert { condition = coder_script.start_script.display_name == "Start Script" error_message = "Start script should have correct display name" } assert { condition = coder_script.start_script.run_on_start == true error_message = "Start script should run on start" } # Verify outputs for script names assert { condition = output.pre_install_script_name == "test-agent-pre_install_script" error_message = "Pre-install script name output should be correctly formatted" } assert { condition = output.install_script_name == "test-agent-install_script" error_message = "Install script name output should be correctly formatted" } assert { condition = output.post_install_script_name == "test-agent-post_install_script" error_message = "Post-install script name output should be correctly formatted" } assert { condition = output.start_script_name == "test-agent-start_script" error_message = "Start script name output should be correctly formatted" } } # Test with only required scripts (no pre/post install) run "test_without_optional_scripts" { command = plan variables { agent_id = "test-agent-id" agent_name = "test-agent" module_dir_name = ".test-module" install_script = "echo 'install'" start_script = "echo 'start'" } # Verify pre_install_script is NOT created when not provided assert { condition = length(coder_script.pre_install_script) == 0 error_message = "Pre-install script should not be created when pre_install_script is null" } # Verify post_install_script is NOT created when not provided assert { condition = length(coder_script.post_install_script) == 0 error_message = "Post-install script should not be created when post_install_script is null" } # Verify required scripts are still created assert { condition = coder_script.install_script.agent_id == "test-agent-id" error_message = "Install script should be created" } assert { condition = coder_script.start_script.agent_id == "test-agent-id" error_message = "Start script should be created" } # Verify outputs assert { condition = output.pre_install_script_name == "test-agent-pre_install_script" error_message = "Pre-install script name output should be generated even when script is not created" } assert { condition = output.install_script_name == "test-agent-install_script" error_message = "Install script name output should be correctly formatted" } assert { condition = output.post_install_script_name == "test-agent-post_install_script" error_message = "Post-install script name output should be generated even when script is not created" } assert { condition = output.start_script_name == "test-agent-start_script" error_message = "Start script name output should be correctly formatted" } } # Test with mock data sources run "test_with_mock_data" { command = plan variables { agent_id = "mock-agent" agent_name = "mock-agent" module_dir_name = ".mock-module" install_script = "echo 'install'" start_script = "echo 'start'" } # Mock the data sources for testing override_data { target = data.coder_workspace.me values = { id = "test-workspace-id" name = "test-workspace" owner = "test-owner" owner_id = "test-owner-id" template_id = "test-template-id" template_name = "test-template" access_url = "https://coder.example.com" start_count = 1 transition = "start" } } override_data { target = data.coder_workspace_owner.me values = { id = "test-owner-id" email = "test@example.com" name = "Test User" session_token = "mock-token" } } override_data { target = data.coder_task.me values = { id = "test-task-id" } } # Verify scripts are created with mocked data assert { condition = coder_script.install_script.agent_id == "mock-agent" error_message = "Install script should use the mocked agent ID" } assert { condition = coder_script.start_script.agent_id == "mock-agent" error_message = "Start script should use the mocked agent ID" } } # Test script naming with custom agent_name run "test_script_naming" { command = plan variables { agent_id = "test-agent" agent_name = "custom-name" module_dir_name = ".test-module" install_script = "echo 'install'" start_script = "echo 'start'" } # Verify script names are constructed correctly # The script should contain references to custom-name-* in the sync commands assert { condition = can(regex("custom-name-install_script", coder_script.install_script.script)) error_message = "Install script should use custom agent_name in sync commands" } assert { condition = can(regex("custom-name-start_script", coder_script.start_script.script)) error_message = "Start script should use custom agent_name in sync commands" } # Verify outputs use custom agent_name assert { condition = output.pre_install_script_name == "custom-name-pre_install_script" error_message = "Pre-install script name output should use custom agent_name" } assert { condition = output.install_script_name == "custom-name-install_script" error_message = "Install script name output should use custom agent_name" } assert { condition = output.post_install_script_name == "custom-name-post_install_script" error_message = "Post-install script name output should use custom agent_name" } assert { condition = output.start_script_name == "custom-name-start_script" error_message = "Start script name output should use custom agent_name" } }