Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
def test_setstate_call():
    with pytest.raises(Success):
        savegame_codec.decode(savegame_codec.encode(SetStateTester()))
        pytest.fail("__setstate__ was not called during decoding.")
Ejemplo n.º 8
0
def test_getstate_call():
    with TrustedScope():
        with pytest.raises(Success):
            savegame_codec.encode(GetStateTester())
            pytest.fail("__getstate__ was not called during encoding.")
Ejemplo n.º 9
0
def test_setstate_call():
    with TrustedScope():
        with pytest.raises(
                Success,
                message="__setstate__ was not called during decoding."):
            savegame_codec.decode(savegame_codec.encode(SetStateTester()))
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
def test_setstate_call():
    with TrustedScope():
        with pytest.raises(Success, message="__setstate__ was not called during decoding."):
            savegame_codec.decode(savegame_codec.encode(SetStateTester()))