def METHOD_NAME(self, raise_on_del, json, recoverable):
    def _getem(*args, **kwargs):
        raise exceptions.InvalidPath(json=json)
    mock_adapter = MagicMock(get=_getem)
    kv = Mock(wraps=Kv(adapter=mock_adapter, default_kv_version="2"))
    for method in [
        kv.read_secret,
        kv.read_secret_version,
        kv.v2.read_secret,
        kv.v2.read_secret_version,
    ]:
        p = "secret_path"
        should_raise = raise_on_del or not recoverable
        if should_raise:
            with pytest.raises(exceptions.InvalidPath):
                method(p, raise_on_deleted_version=raise_on_del)
        else:
            r = method(p, raise_on_deleted_version=raise_on_del)
            assert r is json