def test_class_encoding(): obj = DummyTestClass() with pytest.raises(savegame_codec.CanNotSaveGameException, message="Could save game even though test module should not be trusted", match="Class test_savegame_manager.DummyTestClass is not trusted"): savegame_codec.encode(obj) with TrustedScope(): retval = savegame_codec.encode(obj) assert retval assert isinstance(retval, str) loaded_obj = savegame_codec.decode(retval) assert isinstance(loaded_obj, DummyTestClass) assert type(loaded_obj) == type(obj) original_dict = loaded_obj.__dict__ loaded_dict = loaded_obj.__dict__ assert loaded_dict == original_dict with pytest.raises(savegame_codec.InvalidSaveGameException, message="Could load object from untrusted module", match="DANGER DANGER - test_savegame_manager.DummyTestClass not trusted"): savegame_codec.decode(retval)
def test_class_encoding(trusted_scope): obj = DummyTestClass() with pytest.raises( savegame_codec.CanNotSaveGameException, match="Class test_savegame_manager.DummyTestClass is not trusted" ): savegame_codec.encode(obj) pytest.fail("Could save game even though test module should not be trusted") trusted_scope[__name__ + ".DummyTestClass"] = DummyTestClass retval = savegame_codec.encode(obj) assert retval assert isinstance(retval, str) loaded_obj = savegame_codec.decode(retval) assert isinstance(loaded_obj, DummyTestClass) assert type(loaded_obj) == type(obj) original_dict = loaded_obj.__dict__ loaded_dict = loaded_obj.__dict__ assert loaded_dict == original_dict del trusted_scope[__name__ + ".DummyTestClass"] with pytest.raises( savegame_codec.InvalidSaveGameException, match="DANGER DANGER - test_savegame_manager.DummyTestClass not trusted", ): savegame_codec.decode(retval) pytest.fail("Could load object from untrusted module")
def test_class_encoding(): obj = DummyTestClass() with pytest.raises(savegame_codec.CanNotSaveGameException, message="Could save game eventhough test module should not be trusted!"): savegame_codec.encode(obj) with TrustedScope(): retval = savegame_codec.encode(obj) assert retval assert isinstance(retval, str) loaded_obj = savegame_codec.decode(retval) assert isinstance(loaded_obj, DummyTestClass) assert type(loaded_obj) == type(obj) original_dict = loaded_obj.__dict__ original_keys = original_dict.keys().sort() original_values = original_dict.values().sort() loaded_dict = loaded_obj.__dict__ loaded_keys = loaded_dict.keys().sort() loaded_values = loaded_dict.values().sort() assert original_keys == loaded_keys assert loaded_values == original_values assert loaded_dict == original_dict with pytest.raises(savegame_codec.InvalidSaveGameException, message="Could load object from untrusted module"): savegame_codec.decode(retval)
def check_encoding(obj): retval = savegame_codec.encode(obj) assert retval assert isinstance(retval, str) restored_obj = savegame_codec.decode(retval) assert type(restored_obj) == type(obj) assert restored_obj == obj
def test_enums(): import EnumsAI test_obj = {EnumsAI.MissionType.COLONISATION: EnumsAI.MissionType.INVASION} restored_obj = savegame_codec.decode(savegame_codec.encode(test_obj)) assert test_obj == restored_obj
def test_setstate_call(): with pytest.raises(Success): savegame_codec.decode(savegame_codec.encode(SetStateTester())) pytest.fail("__setstate__ was not called during decoding.")
def test_setstate_call(): with TrustedScope(): with pytest.raises( Success, message="__setstate__ was not called during decoding."): savegame_codec.decode(savegame_codec.encode(SetStateTester()))
def test_setstate_call(): with TrustedScope(): with pytest.raises(Success, message="__setstate__ was not called during decoding."): savegame_codec.decode(savegame_codec.encode(SetStateTester()))