cc-os/plugins/os-backlog/tests/board_name_validation_test.rb

51 lines
1.9 KiB
Ruby
Raw Normal View History

require_relative "test_helper"
# Card #1818501985909868001: a mistaken flag-style invocation like
# `os-backlog board-ensure --board apprise-api` must fail loudly with a
# usage error instead of silently creating a Planka board literally named
# "--board". These are CLI-contract tests (shell out to bin/os-backlog)
# because the bug is about what the positional NAME arg parsing accepts
# BEFORE any Planka client/network call is made — no PLANKA_* env vars are
# set, so if validation didn't happen first, these would instead fail on
# network auth with a different message.
class BoardNameValidationCliTest < Minitest::Test
BIN = File.expand_path("../bin/os-backlog", __dir__)
# Strip any live Planka credentials from the child's env: these tests
# assert that flag-like names are rejected BEFORE build_client ever runs,
# so no test here may be allowed to reach the network even accidentally.
def run_cli(*args)
env = { "PLANKA_BASE_URL" => "", "PLANKA_USERNAME" => "", "PLANKA_PASSWORD" => "" }
out = IO.popen(env, [RbConfig.ruby, BIN, *args], err: [:child, :out], &:read)
[out, $?.exitstatus]
end
def test_board_ensure_rejects_flag_like_name
out, status = run_cli("board-ensure", "--board", "apprise-api")
refute_equal 0, status
assert_match(/board name.*must not start with/i, out)
end
def test_activate_rejects_flag_like_name
out, status = run_cli("activate", "--board")
refute_equal 0, status
assert_match(/board name.*must not start with/i, out)
end
def test_archive_rejects_flag_like_name
out, status = run_cli("archive", "--board", "--yes")
refute_equal 0, status
assert_match(/board name.*must not start with/i, out)
end
def test_board_ensure_accepts_normal_name_and_fails_later_on_network
out, status = run_cli("board-ensure", "apprise-api")
refute_equal 0, status
refute_match(/board name.*must not start with/i, out)
end
end