diff --git a/tests/test_utils.py b/tests/test_utils.py
index ad9fb6b67b7af5a3a281072cfe59ea838ae9c38e..13d1dcce4725d22f704a5597df2f5268411df11a 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1,5 +1,15 @@
+import json
 from argparse import ArgumentParser
 
+import networkx
+import pytest
+
+from cooperative_cuisine.environment import Environment
+from cooperative_cuisine.state_representation import (
+    create_movement_graph,
+    restrict_movement_graph,
+    astar_heuristic,
+)
 from cooperative_cuisine.utils import (
     url_and_port_arguments,
     add_list_of_manager_ids_arguments,
@@ -9,6 +19,7 @@ from cooperative_cuisine.utils import (
     create_layout_with_counters,
     setup_logging,
 )
+from tests.test_start import env_config, layout_empty_config, item_info
 
 
 def test_parser_gen():
@@ -44,3 +55,71 @@ def test_layout_creation():
 
 def test_setup_logging():
     setup_logging()
+
+
+def test_movement_graph(env_config, layout_empty_config, item_info):
+    env = Environment(env_config, layout_empty_config, item_info, as_files=False)
+    player_name = "0"
+    env.add_player(player_name)
+
+    state_string = env.get_json_state(player_id=player_name)
+    state = json.loads(state_string)
+    graph_diag = create_movement_graph(state, diagonal=True)
+
+    graph = create_movement_graph(
+        json.loads(env.get_json_state(player_id=player_name)), diagonal=False
+    )
+    path = networkx.astar_path(
+        graph,
+        source=(0, 0),
+        target=(3, 3),
+        heuristic=astar_heuristic,
+    )
+    assert len(path) != 0, "No path found, but should have."
+
+    graph_restricted = restrict_movement_graph(graph_diag, [(1, 0), (0, 1), (1, 1)])
+    with pytest.raises(networkx.exception.NetworkXNoPath) as e_info:
+        path = networkx.astar_path(
+            graph_restricted,
+            source=(0, 0),
+            target=(3, 3),
+            heuristic=astar_heuristic,
+        )
+    with pytest.raises(networkx.exception.NodeNotFound) as e_info:
+        path = networkx.astar_path(
+            graph_restricted,
+            source=(20, 20),
+            target=(40, 40),
+            heuristic=astar_heuristic,
+        )
+
+    assert len(path) != 0, "No path found, but should have."
+
+    path = networkx.astar_path(
+        restrict_movement_graph(
+            graph=graph_diag,
+            player_positions=[],
+        ),
+        source=(0, 0),
+        target=(5, 5),
+        heuristic=astar_heuristic,
+    )
+    assert len(path) != 0
+
+    graph_diag_restricted = restrict_movement_graph(
+        graph_diag, [(1, 0), (0, 1), (1, 1)]
+    )
+    with pytest.raises(networkx.exception.NetworkXNoPath) as e_info:
+        _ = networkx.astar_path(
+            graph_diag_restricted,
+            source=(0, 0),
+            target=(3, 3),
+            heuristic=astar_heuristic,
+        )
+    with pytest.raises(networkx.exception.NodeNotFound) as e_info:
+        _ = networkx.astar_path(
+            graph_diag,
+            source=(20, 20),
+            target=(40, 40),
+            heuristic=astar_heuristic,
+        )