diff --git a/requirements.txt b/requirements.txt
index c94686f8b4433f7d16230a06da4c46b87f21008f..e39c4ac25dbb31cbe42b4b1d83b07b4545dea9c7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,8 @@ sqlalchemy
 psycopg2
 flask-sqlalchemy
 flask-security
+flask-testing
 graphene_sqlalchemy
 Flask-GraphQL
 bcrypt
+graphqlclient
diff --git a/test/test_graphql.py b/test/test_graphql.py
index 98b9e2df0f0e5d931a19c3632cdd28207ab87ab6..3de3f0bbeb469e06b66702878b3cbaa9ece04504 100644
--- a/test/test_graphql.py
+++ b/test/test_graphql.py
@@ -1,17 +1,45 @@
-
+from graphqlclient import GraphQLClient
 import unittest
 from os import environ
 from app import app
+from flask_testing import LiveServerTestCase
+from json import loads
+from database.database import db_session
+from database.models import User
+
+class GraphQlTests(LiveServerTestCase):
 
-class GraphQlTests(unittest.TestCase):
+    def create_app(self):
+        app.config["TESTING"] = True
+        return app
 
     def setUp(self):
-        self.app = app.test_client()
-        self.app.testing = True
+        self.client = GraphQLClient(self.get_server_url()+"/graphql")
 
     def tearDown(self):
-        pass
+        # clean up tables
+        users = User.query.filter_by(username="graphqluser").delete()
+        db_session.commit()
 
-    def test_graphql_home(self):
-        result = self.app.get('/graphql')
-        self.assertEqual(result.status_code, 400)
+    def test_query_create_user(self):
+        username = "graphqluser"
+        password = "randompassword"
+        email = "user@example.com"
+        querystring = '''
+        mutation{{
+          createUser(
+            username: "{0}",
+              password: "{1}",
+              email: "{2}"){{
+              user{{
+                username,
+                email}}}}}}
+        '''.format(username, password, email).strip()
+        result = loads(self.client.execute(querystring))
+        self.assertNotIn("error", result, "Creating user failed due to an error")
+        self.assertIn("data", result)
+        self.assertIn("createUser", result["data"])
+        self.assertIn("user", result["data"]["createUser"])
+        user = result["data"]["createUser"]["user"]
+        self.assertEqual(user["username"], username)
+        self.assertEqual(user["email"], email)