import json from django.test import TestCase, Client from core.factories import UserFactory class ApiAccessTestCase(TestCase): def setUp(self): self.query = json.dumps({ 'operationName': 'ModulesQuery', 'query': 'query ModulesQuery { modules { edges { node { id }}}}', 'variables': None, }) def test_graphqlEndpoint_shouldNotBeAccessibleWithoutLogin(self): c = Client() response = c.post('/api/graphql/', data=self.query, content_type='application/json') self.assertEqual(response.status_code, 402) def test_graphqlEndpoint_shouldBeAccessibleForSuperUser(self): UserFactory(username='admin', is_staff=True, is_active=True, is_superuser=True) c = Client() c.login(username='admin', password='test') response = c.post('/api/graphql/', data=self.query, content_type='application/json') self.assertEqual(200, response.status_code) def test_publicGraphqlEndpoint_shouldBeAccessibleWithoutLogin(self): query = json.dumps({ 'operationName': 'BetaLogin', 'query': ''' mutation BetaLogin($input: BetaLoginInput!){ betaLogin(input: $input) { success } } ''', 'variables': { 'input': { 'usernameInput': 'test', 'passwordInput': 'test' } }, }) c = Client() response = c.post('/api/graphql-public/', data=query, content_type='application/json') self.assertEqual(response.status_code, 200)