straywild/tests/network_chat_protocol_validation.gd

79 lines
2.5 KiB
GDScript3
Raw Normal View History

2026-08-21 16:39:33 -04:00
extends SceneTree
const EDGE_PADDING: String = " \t\n"
func _initialize() -> void:
call_deferred("_validate_protocol")
func _validate_protocol() -> void:
_validate_type_and_empty_handling()
_validate_message_cleanup()
_validate_roleplay_commands()
2026-08-21 16:39:33 -04:00
_validate_protocol_limits()
print("Network chat protocol validation: PASS")
quit()
func _validate_type_and_empty_handling() -> void:
assert(NetworkChatProtocol.sanitize_body(null) == "")
assert(NetworkChatProtocol.sanitize_body(42) == "")
assert(NetworkChatProtocol.sanitize_body(EDGE_PADDING) == "")
assert(NetworkChatProtocol.sanitize_body("\u0001") == "")
func _validate_message_cleanup() -> void:
assert(NetworkChatProtocol.sanitize_body(" hello ") == "hello")
assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c")
assert(NetworkChatProtocol.sanitize_body("word word") == "word word")
assert(NetworkChatProtocol.sanitize_body(" !!! ") == "!!!")
assert(
NetworkChatProtocol.sanitize_body(
EDGE_PADDING + "visible" + EDGE_PADDING
) == "visible"
)
func _validate_roleplay_commands() -> void:
assert(NetworkChatProtocol.is_roleplay_body("/me waves"))
assert(NetworkChatProtocol.is_roleplay_body("/ME waves"))
assert(NetworkChatProtocol.is_roleplay_body("/me"))
assert(not NetworkChatProtocol.is_roleplay_body("/meow"))
assert(NetworkChatProtocol.roleplay_action("/me waves") == "waves")
assert(NetworkChatProtocol.roleplay_action(
"/me [color=red]waves[/color]"
) == "[color=red]waves[/color]")
assert(NetworkChatProtocol.valid_user_body("/me waves"))
assert(not NetworkChatProtocol.valid_user_body("/me"))
assert(not NetworkChatProtocol.valid_user_body("/me "))
assert(NetworkChatProtocol.valid_user_body("/meow"))
var signed_fields: Array = NetworkChatProtocol.signature_fields({
"session_id": "session",
"request_id": "request",
"sender_fingerprint": "fingerprint",
"body": "/me waves",
})
assert(signed_fields.back() == "/me waves")
2026-08-21 16:39:33 -04:00
func _validate_protocol_limits() -> void:
var maximum_body: String = "a".repeat(
NetworkChatProtocol.MAX_VISIBLE_CHARACTERS
)
assert(NetworkChatProtocol.sanitize_body(maximum_body) == maximum_body)
assert(
NetworkChatProtocol.sanitize_body(maximum_body + "a") == ""
)
var maximum_utf8_body: String = "🐟".repeat(
NetworkChatProtocol.MAX_VISIBLE_CHARACTERS
)
assert(
maximum_utf8_body.to_utf8_buffer().size()
== NetworkChatProtocol.MAX_UTF8_BYTES
)
assert(
NetworkChatProtocol.sanitize_body(maximum_utf8_body)
== maximum_utf8_body
)