mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
About The Pull Request This is a fix for map not load anymore because of security changes Why It's Good For The Game Maps are good as they encourage gameplay and differentiate ss13 from a classic MUD game Changelog cl add: unit test for map load add: directory param to map load + whitelist for data and _maps add: advertising for mojave sun in tg commit logs /cl
43 lines
1.7 KiB
Plaintext
43 lines
1.7 KiB
Plaintext
// replace runtimestation with another valid _maps .json if not present
|
|
#define VALID_TEST_MAP "runtimestation"
|
|
|
|
/// Tests to ensure we can load a map from a whitelisted directory (_maps), but not a non-whitelisted directory (i.e "fartyShitPants")
|
|
/datum/unit_test/load_map_security
|
|
|
|
/datum/unit_test/load_map_security/Run()
|
|
|
|
// Copy our valid map into a bad directory
|
|
// We can technically load from /unitTestTempDir by passing it in our map name
|
|
// But it should fail when passed as a directory
|
|
fcopy("_maps/[VALID_TEST_MAP].json", "data/load_map_security_temp/[VALID_TEST_MAP].json")
|
|
|
|
//Attempt to load our configs
|
|
|
|
// test load from _maps - this should pass
|
|
var/datum/map_config/maps_config = load_map_config(VALID_TEST_MAP, MAP_DIRECTORY_MAPS)
|
|
|
|
// test load from data - this should pass
|
|
// this also confirms that our fcopy worked for our bad_config test
|
|
var/datum/map_config/data_config = load_map_config("load_map_security_temp/[VALID_TEST_MAP]", MAP_DIRECTORY_DATA)
|
|
|
|
// data/load_map_security_temp/ is not in our whitelist, this should fail
|
|
var/datum/map_config/bad_config = load_map_config(VALID_TEST_MAP,"data/load_map_security_temp")
|
|
|
|
|
|
// Check we can load from _maps
|
|
TEST_ASSERT(!maps_config.defaulted, "Failed to load: _maps/[VALID_TEST_MAP]")
|
|
|
|
// Check we can load from data and ensure that our fcopy setup worked
|
|
TEST_ASSERT(!data_config.defaulted, "Failed to load: data/load_map_security_temp/[VALID_TEST_MAP]")
|
|
|
|
// Check we can't load from "bad directory"
|
|
TEST_ASSERT(bad_config.defaulted, "Loaded from non-whitelisted directory: data/load_map_security_temp/[VALID_TEST_MAP]")
|
|
|
|
|
|
/datum/unit_test/load_map_security/Destroy()
|
|
// Clean up our temp directory
|
|
fdel("data/load_map_security_temp/")
|
|
return ..()
|
|
|
|
#undef VALID_TEST_MAP
|