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)