Newer
Older
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):
def create_app(self):
app.config["TESTING"] = True
return app
self.client = GraphQLClient(self.get_server_url()+"/graphql")
# clean up tables
users = User.query.filter_by(username="graphqluser").delete()
db_session.commit()
username = "graphqluser"
password = "randompassword"
email = "user@example.com"
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)
querystring = '''
{{
getUser(username: "{0}"){{
username,
email
}}
}}
'''.format(username).strip()
result = loads(self.client.execute(querystring))
self.assertIn("data", result)
self.assertIn("getUser", result["data"])
user = result["data"]["getUser"]
self.assertEqual(user["username"], username)
self.assertEqual(user["email"], email)
def _create_user(self, username, password, email):
querystring = '''
mutation{{
createUser(
username: "{0}",
password: "{1}",
email: "{2}"){{
user{{
username,
email}}}}}}
'''.format(username, password, email).strip()
return loads(self.client.execute(querystring))
def test_create_role(self):
role_name = "testusers"
role_description = "A role assigned to users during unittests"
reulst = self._create_role(role_name, role_description)
self.assertIn("data", result)
self.assertIn("createRole", result["data"])
self.assertIn("role", result["data"]["createRole"])
role = result["data"]["createRole"]["role"]
self.assertEqual(role["name"], role_name)
self.assertEqual(role["description"], role_description)
def _create_role(self, name, description):
querystring = '''
mutation{{
createRole(
name: "{0}",
description: "{1}"){{
role{{
name,
description}}}}}}
'''.format(name, description).strip()
return loads(self.client.execute(querystring))