Browse Source

Merge pull request #118 from bcgov/DIV-1165

DIV-1165: Mock out Redis to fix tests
pull/172/head
Arianne 5 years ago
committed by GitHub
parent
commit
ed69f909ad
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 33 additions and 2 deletions
  1. +33
    -2
      edivorce/apps/core/tests/test_api.py

+ 33
- 2
edivorce/apps/core/tests/test_api.py View File

@ -1,16 +1,45 @@
import json import json
from unittest import mock
from unittest.util import safe_repr from unittest.util import safe_repr
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import modify_settings, override_settings from django.test import modify_settings, override_settings
from django.urls import reverse from django.urls import reverse
from graphene_django.utils import GraphQLTestCase from graphene_django.utils import GraphQLTestCase
from redis import Redis
from rest_framework import status from rest_framework import status
from rest_framework.test import APIClient, APITestCase from rest_framework.test import APIClient, APITestCase
from edivorce.apps.core.models import BceidUser, Document from edivorce.apps.core.models import BceidUser, Document
class MockRedis:
"""Imitate a Redis object so unit tests can run on our GitHub test server without needing a real
Redis server."""
# The 'Redis' store
fake_redis = {}
def delete(self, key):
if key in MockRedis.fake_redis:
del MockRedis.fake_redis[key]
def exists(self, key):
return key in MockRedis.fake_redis
def get(self, key):
result = '' if key not in MockRedis.fake_redis else MockRedis.fake_redis[key]
return result
def set(self, name, value, *args, **kwargs):
MockRedis.fake_redis[name] = value
return name
@mock.patch.object(Redis, 'set', MockRedis.set)
@mock.patch.object(Redis, 'get', MockRedis.get)
@mock.patch.object(Redis, 'delete', MockRedis.delete)
@mock.patch.object(Redis, 'exists', MockRedis.exists)
@modify_settings(MIDDLEWARE={'remove': 'edivorce.apps.core.middleware.bceid_middleware.BceidMiddleware', }) @modify_settings(MIDDLEWARE={'remove': 'edivorce.apps.core.middleware.bceid_middleware.BceidMiddleware', })
class APITest(APITestCase): class APITest(APITestCase):
def setUp(self): def setUp(self):
@ -212,6 +241,10 @@ class APITest(APITestCase):
self.assertEqual(response_doc['file_url'], document_object.get_file_url()) self.assertEqual(response_doc['file_url'], document_object.get_file_url())
@mock.patch.object(Redis, 'set', MockRedis.set)
@mock.patch.object(Redis, 'get', MockRedis.get)
@mock.patch.object(Redis, 'delete', MockRedis.delete)
@mock.patch.object(Redis, 'exists', MockRedis.exists)
@override_settings(AUTHENTICATION_BACKENDS=('edivorce.apps.core.authenticators.BCeIDAuthentication',)) @override_settings(AUTHENTICATION_BACKENDS=('edivorce.apps.core.authenticators.BCeIDAuthentication',))
@modify_settings(MIDDLEWARE={'remove': 'edivorce.apps.core.middleware.bceid_middleware.BceidMiddleware', }) @modify_settings(MIDDLEWARE={'remove': 'edivorce.apps.core.middleware.bceid_middleware.BceidMiddleware', })
class GraphQLAPITest(GraphQLTestCase): class GraphQLAPITest(GraphQLTestCase):
@ -243,7 +276,6 @@ class GraphQLAPITest(GraphQLTestCase):
def test_cannot_get_excluded_fields(self): def test_cannot_get_excluded_fields(self):
self._login() self._login()
response = self.query('{documents{id file}}') response = self.query('{documents{id file}}')
print(response.content)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertContainsError('Cannot query field "id"', response) self.assertContainsError('Cannot query field "id"', response)
self.assertContainsError('Cannot query field "file"', response) self.assertContainsError('Cannot query field "file"', response)
@ -251,7 +283,6 @@ class GraphQLAPITest(GraphQLTestCase):
def test_must_specify_doctype_partycode(self): def test_must_specify_doctype_partycode(self):
self._login() self._login()
response = self.query('{documents{filename}}') response = self.query('{documents{filename}}')
print(response.content)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertContainsError('argument "docType" of type "String!" is required but not provided', response) self.assertContainsError('argument "docType" of type "String!" is required but not provided', response)
self.assertContainsError('argument "partyCode" of type "Int!" is required but not provided', response) self.assertContainsError('argument "partyCode" of type "Int!" is required but not provided', response)


Loading…
Cancel
Save