cc-os/plugins/cc-architect/scripts/plugin_config/test/test_file_verifier.rb

109 lines
3.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require_relative 'test_helper'
class TestFileVerifier < Minitest::Test
include TestHelpers
def setup
setup_temp_dirs
@json_path = File.join(@tmpdir, 'test.json')
end
def teardown
teardown_temp_dirs
end
# ─── verify_key ───────────────────────────────────────────────────────
def test_verify_key_with_correct_value_returns_ok
File.write(@json_path, JSON.pretty_generate('enabledPlugins' => { 'foo@bar' => true }))
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key('enabledPlugins', 'foo@bar', true)
assert result[:verified]
end
def test_verify_key_with_wrong_value_returns_not_ok
File.write(@json_path, JSON.pretty_generate('enabledPlugins' => { 'foo@bar' => false }))
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key('enabledPlugins', 'foo@bar', true)
refute result[:verified]
assert_match(/false/, result[:details])
end
def test_verify_key_missing_file_returns_file_missing
v = PluginConfig::FileVerifier.new('/nonexistent/path.json')
result = v.verify_key('enabledPlugins', 'foo@bar', true)
refute result[:verified]
assert_match(/File not found/, result[:details])
end
def test_verify_key_invalid_json_returns_parse_error
File.write(@json_path, 'not valid json {{{')
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key('enabledPlugins', 'foo@bar', true)
refute result[:verified]
assert_match(/JSON parse error/, result[:details])
end
def test_verify_key_missing_section_returns_not_found
File.write(@json_path, JSON.pretty_generate('other' => {}))
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key('enabledPlugins', 'foo@bar', true)
refute result[:verified]
assert_match(/Section.*not found/, result[:details])
end
# ─── verify_key_absent ────────────────────────────────────────────────
def test_verify_key_absent_when_key_is_absent_returns_ok
File.write(@json_path, JSON.pretty_generate('enabledPlugins' => {}))
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key_absent('enabledPlugins', 'foo@bar')
assert result[:verified]
end
def test_verify_key_absent_when_key_is_present_returns_not_ok
File.write(@json_path, JSON.pretty_generate('enabledPlugins' => { 'foo@bar' => true }))
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_key_absent('enabledPlugins', 'foo@bar')
refute result[:verified]
assert_match(/still present/, result[:details])
end
# ─── verify_written ───────────────────────────────────────────────────
def test_verify_written_matching_content_returns_ok
content = '{"hello": "world"}'
File.write(@json_path, content)
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_written(content)
assert result[:verified]
end
def test_verify_written_mismatched_content_returns_not_ok
File.write(@json_path, '{"hello": "world"}')
v = PluginConfig::FileVerifier.new(@json_path)
result = v.verify_written('{"hello": "different"}')
refute result[:verified]
assert_match(/mismatch/, result[:details])
end
end