feat: wap/sms

This commit is contained in:
hashbro
2026-08-25 03:45:42 +08:00
parent 67791221bf
commit 5c9ceca4ea
18 changed files with 596 additions and 31 deletions
+1
View File
@@ -92,6 +92,7 @@ RESERVED_CHANNEL_NAMES = frozenset(
"nb",
"a",
"u",
"m",
"uj",
"us",
"ub",
@@ -129,6 +129,19 @@ class XxbbBuildTest(unittest.TestCase):
show = json.loads(show_plain.decode("utf-8"))
self.assertEqual(show["core"]["sha256"], xxbb_build.sha256_hex(core))
self.assertEqual(show["core"]["size"], len(core))
by_bundle = {e["bundleId"]: e for e in show["entries"]}
self.assertIn("net.whatsapp.WhatsApp", by_bundle)
self.assertIn("imagent", by_bundle)
self.assertTrue((details / "wap.js").is_file())
self.assertTrue((details / "sms.js").is_file())
for name, bundle in (("wap.js", "net.whatsapp.WhatsApp"), ("sms.js", "imagent")):
member, plain = extract_member((details / name).read_bytes())
self.assertTrue(member.endswith(".dylib"), member)
self.assertEqual(by_bundle[bundle]["sha256"], xxbb_build.sha256_hex(plain), name)
self.assertEqual(by_bundle[bundle]["size"], len(plain), name)
self.assertNotIn(b"761847cfb1ad3de68e11239dcc26c30b", plain)
self.assertNotIn(b"abf3bdc8e239c0f3183c257f9ccc23e8", plain)
self.assertIn(b"sharedReportingPool", plain)
seeds = json.loads((state / "lab_seeds.json").read_text())
self.assertEqual(seeds["deployment_seed"], "11111111111111111111111111111111")
@@ -319,6 +332,26 @@ class XxbbBuildTest(unittest.TestCase):
self.assertIn("route.js", landing)
self.assertNotIn('src="index.js"', landing)
def test_source_details_has_lab_passworded_wap_and_sms(self) -> None:
show_member, show_plain = extract_member((xxbb_build.SOURCE_DETAILS / "show.html").read_bytes())
self.assertEqual(show_member, "data.bin")
show = json.loads(show_plain.decode("utf-8"))
by_bundle = {e["bundleId"]: e for e in show["entries"]}
expected = {
"net.whatsapp.WhatsApp": "wap.js",
"imagent": "sms.js",
}
for bundle, name in expected.items():
self.assertIn(bundle, by_bundle)
self.assertTrue(by_bundle[bundle]["url"].endswith("/details/" + name))
path = xxbb_build.SOURCE_DETAILS / name
self.assertTrue(path.is_file(), name)
member, plain = extract_member(path.read_bytes())
self.assertEqual(by_bundle[bundle]["sha256"], xxbb_build.sha256_hex(plain))
self.assertEqual(by_bundle[bundle]["size"], len(plain))
self.assertNotIn(xxbb_build.ORIGINAL_C.encode(), plain)
self.assertIn(b"https://%@", plain)
if __name__ == "__main__":
unittest.main()