Files
CosmicClash/Game/tests/cases/test_server_result_client.gd
T
2026-09-03 21:24:07 +01:00

24 lines
1.6 KiB
GDScript

extends "res://tests/test_case.gd"
const Client = preload("res://scripts/server_result_client.gd")
func test_result_nonce_is_deterministic_and_score_bound() -> void:
var first := Client.result_nonce("match-123456789", "server-123456789", 3, 2, "CERTIFIED")
assert_eq(first, Client.result_nonce("match-123456789", "server-123456789", 3, 2, "CERTIFIED"), "retry keeps the exact nonce")
assert_true(first != Client.result_nonce("match-123456789", "server-123456789", 2, 3, "CERTIFIED"), "a conflicting score cannot reuse the nonce")
assert_true(first.length() >= 16, "nonce satisfies the control-plane minimum")
func test_result_configuration_fails_closed() -> void:
assert_true(Client.valid_configuration("https://control.invalid", "token", "match-123456789", "server-123456789"), "valid result reporter configuration is accepted")
assert_true(not Client.valid_configuration("https://control.invalid?token=leak", "token", "match-123456789", "server-123456789"), "query-bearing endpoint is rejected")
assert_true(not Client.valid_configuration("https://control.invalid", "", "match-123456789", "server-123456789"), "empty bearer is rejected")
func test_only_a_committed_result_acknowledgement_releases_the_match() -> void:
assert_true(Client.response_is_accepted(202), "the endpoint's accepted response releases RESULTS")
assert_true(not Client.response_is_accepted(200), "an unexpected generic success cannot lose the result")
assert_true(not Client.response_is_accepted(422), "validation failure remains held for operator-visible retry")
assert_true(not Client.response_is_accepted(503), "outage remains held for retry")