mirror of
https://github.com/aydencharles/onionHEN.git
synced 2026-10-22 20:02:59 -05:00
Move exact Title IDs and prefix matching into the shared config schema while retaining safe defaults for existing or invalid configurations. Validate and deduplicate allowlist entries, support explicit none values, and update host tests and configuration documentation.
70 lines
2.7 KiB
C++
70 lines
2.7 KiB
C++
#include "test_harness.h"
|
|
|
|
#include <onion/app_jailbreak_policy.hpp>
|
|
|
|
static int test_itemzflow_is_whitelisted(void) {
|
|
const onion::AppJailbreakAllowlist allowlist{};
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("ITEM00001", allowlist));
|
|
TEST_ASSERT_STREQ("exact",
|
|
onion::app_jailbreak::whitelist_reason("ITEM00001",
|
|
allowlist));
|
|
return 0;
|
|
}
|
|
|
|
static int test_existing_policy_is_preserved(void) {
|
|
const onion::AppJailbreakAllowlist allowlist{};
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("NPXS39041", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("PKGI13337", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("PKGI12345", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("TOOL00001", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("LAPY12345", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
!onion::app_jailbreak::is_whitelisted("CUSA12345", allowlist));
|
|
TEST_ASSERT_STREQ("prefix", onion::app_jailbreak::whitelist_reason(
|
|
"LAPY12345", allowlist));
|
|
TEST_ASSERT_STREQ("none",
|
|
onion::app_jailbreak::whitelist_reason("CUSA12345",
|
|
allowlist));
|
|
/* Prefix matching must not turn into an unanchored substring match. */
|
|
TEST_ASSERT_TRUE(
|
|
!onion::app_jailbreak::is_whitelisted("XLAPY1234", allowlist));
|
|
return 0;
|
|
}
|
|
|
|
static int test_configured_policy_replaces_defaults(void) {
|
|
onion::AppJailbreakAllowlist allowlist{};
|
|
allowlist.exact_title_ids = {};
|
|
allowlist.exact_title_ids[0] = "CUSA12345";
|
|
allowlist.exact_title_id_count = 1;
|
|
allowlist.title_id_prefixes = {};
|
|
allowlist.title_id_prefixes[0] = "ABCD";
|
|
allowlist.title_id_prefix_count = 1;
|
|
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("CUSA12345", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
onion::app_jailbreak::is_whitelisted("ABCD00001", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
!onion::app_jailbreak::is_whitelisted("ITEM00001", allowlist));
|
|
TEST_ASSERT_TRUE(
|
|
!onion::app_jailbreak::is_whitelisted("LAPY12345", allowlist));
|
|
return 0;
|
|
}
|
|
|
|
extern "C" int test_app_jailbreak_policy_suite(void) {
|
|
int failures = 0;
|
|
failures += onion_test_run("app_jailbreak.itemzflow_whitelisted",
|
|
test_itemzflow_is_whitelisted);
|
|
failures += onion_test_run("app_jailbreak.existing_policy",
|
|
test_existing_policy_is_preserved);
|
|
failures += onion_test_run("app_jailbreak.configured_policy",
|
|
test_configured_policy_replaces_defaults);
|
|
return failures;
|
|
}
|