Skip to content
Snippets Groups Projects
Verified Commit 101ea10b authored by Mark's avatar Mark
Browse files

Add API function assign app to user

parent 4bf9a49f
No related branches found
No related tags found
No related merge requests found
......@@ -86,6 +86,22 @@ class AddRoleToUser(graphene.Mutation):
return AddRoleToUser(user=user,role=role)
class AddApplicationToUser(graphene.Mutation):
class Arguments:
username = graphene.String(required=True)
application = graphene.String(required=True)
user = graphene.Field(User)
application = graphene.Field(Application)
def mutate(self, info, username, application):
user = user_datastore.db.session().query(UserModel).filter_by(username=username).first()
application = user_datastore.db.session().query(ApplicationModel).filter_by(name=application).first()
user.applications.append(application)
user_datastore.commit()
return AddApplicationToUser(user=user,application=application)
class Query(graphene.ObjectType):
node = relay.Node.Field()
all_users = SQLAlchemyConnectionField(User)
......@@ -101,6 +117,7 @@ class Mutation(graphene.ObjectType):
create_role = CreateRole.Field()
create_application = CreateApplication.Field()
add_role_to_user = AddRoleToUser.Field()
add_application_to_user = AddApplicationToUser.Field()
schema = graphene.Schema(query=Query, types=[User, Role, Application], mutation=Mutation)
......@@ -18,7 +18,7 @@ class GraphQlTests(LiveServerTestCase):
def tearDown(self):
# clean up tables
for username in ["graphqluser", "graphqluser2"]:
for username in ["graphqluser", "graphqluser2", "graphqluser3"]:
user = db_session.query(User).filter_by(username=username).first()
if user is not None:
user.roles = []
......@@ -145,7 +145,7 @@ class GraphQlTests(LiveServerTestCase):
'''.format(name, description).strip()
return loads(self.client.execute(querystring))
def test_create_application(self):
def test_create_and_assign_application(self):
application_name = "testapp"
result = self._create_application(application_name)
self.assertIn("data", result)
......@@ -153,6 +153,51 @@ class GraphQlTests(LiveServerTestCase):
self.assertIn("application", result["data"]["createApplication"])
application = result["data"]["createApplication"]["application"]
self.assertEqual(application["name"], application_name)
username = "graphqluser3"
password = "randompassword"
email = "user3@example.com"
self._create_user(username, password, email)
querystring = '''
mutation{{
addApplicationToUser(
username: "{0}",
application: "{1}"){{
user{{
username,
applications{{
edges{{
node{{
name
}}
}}
}}
}}
application{{
name,
users{{
edges{{
node{{
username
}}
}}
}}
}}
}}
}}
'''.format(username, application_name).strip()
result = loads(self.client.execute(querystring))
self.assertIn("data", result)
self.assertIn("addApplicationToUser", result["data"])
user = result["data"]["addApplicationToUser"]["user"]
self.assertEqual(username, user["username"])
self.assertIn("edges", user["applications"])
applications = user["applications"]["edges"]
self.assertEqual(application_name, applications[0]["node"]["name"])
application = result["data"]["addApplicationToUser"]["application"]
self.assertEqual(application_name, application["name"])
self.assertIn("edges", application["users"])
users = application["users"]["edges"]
self.assertEqual(username, users[0]["node"]["username"])
def _create_application(self, name):
querystring = '''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment