def test_sessionmaker_pycrypto_exception_raise(sessionmaker, filename):
    settings = sessionmaker.settings
    delattr(sessionmaker, "settings")
    crypto.conf["encryption_available"] = False
    with pytest.raises(CryptoError):
        sessionmaker.configure(secret_file=filename, enable_encryption=True,
                               backend=settings["backend"])
def test_sessionmaker_secret_file(sessionmaker, filename):
    del sessionmaker.settings["signature_key"]
    settings = sessionmaker.settings
    delattr(sessionmaker, "settings")
    settings["secret_file"] = filename
    sessionmaker.configure(**settings)
    assert "signature_key" in sessionmaker.settings
    keys = get_secret_keys(filename)
    assert sessionmaker.settings["signature_key"] == keys["signature_key"]
def test_sessionmaker_secret_file_encryption(sessionmaker, filename):
    del sessionmaker.settings["signature_key"]
    settings = sessionmaker.settings
    delattr(sessionmaker, "settings")
    settings["enable_encryption"] = True
    settings["secret_file"] = filename
    sessionmaker.configure(**settings)
    assert "signature_key" in sessionmaker.settings
    assert "encryption_key" in sessionmaker.settings
def test_sessionmaker_already_configured(sessionmaker):
    with pytest.raises(SessionConfigurationError):
        sessionmaker.configure()
def test_sessionmaker_sanity_configure(sessionmaker):
    # Make sure sanity is called on configure
    delattr(sessionmaker, "settings")
    with pytest.raises(SessionConfigurationError):
        sessionmaker.configure(**{'encryption_key': None})
def test_sessionmaker_pycrypto_exception_no_enc(sessionmaker, filename):
    settings = sessionmaker.settings
    delattr(sessionmaker, "settings")
    crypto.conf["encryption_available"] = False
    # does not raise because no encryption is requested
    sessionmaker.configure(secret_file=filename, backend=settings["backend"])