diff --git a/modoboa/core/mocks.py b/modoboa/core/mocks.py new file mode 100644 index 000000000..bd644364d --- /dev/null +++ b/modoboa/core/mocks.py @@ -0,0 +1,29 @@ +"""Mocks used for testing.""" + +import httmock + + +# Modoboa API mocks + +@httmock.urlmatch( + netloc=r"api\.modoboa\.org$", path=r"^/1/instances/search/", method="post") +def modo_api_instance_search(url, request): + """Return empty response.""" + return {"status_code": 404} + + +@httmock.urlmatch( + netloc=r"api\.modoboa\.org$", path=r"^/1/instances/", method="post") +def modo_api_instance_create(url, request): + """Simulate successful creation.""" + return { + "status_code": 201, + "content": {"pk": 100} + } + + +@httmock.urlmatch( + netloc=r"api\.modoboa\.org$", path=r"^/1/instances/.+/", method="put") +def modo_api_instance_update(url, request): + """Simulate successful update.""" + return {"status_code": 200} diff --git a/modoboa/core/tests.py b/modoboa/core/tests.py index cc27441e4..4e2a652bf 100644 --- a/modoboa/core/tests.py +++ b/modoboa/core/tests.py @@ -1,5 +1,8 @@ """Tests for core application.""" +import httmock + +from django.core import management from django.core.urlresolvers import reverse from django.test import override_settings @@ -8,6 +11,7 @@ from modoboa.lib import parameters from modoboa.lib.tests import ModoTestCase from . import factories +from . import mocks from . import models @@ -240,3 +244,15 @@ class APIAccessFormTestCase(ModoTestCase): self.ajax_post(url, {"enable_api_access": False}) user = models.User.objects.get(username="admin") self.assertFalse(hasattr(user, "auth_token")) + + +class APICommunicationTestCase(ModoTestCase): + """Check communication with the API.""" + + def test_management_command(self): + """Check command.""" + with httmock.HTTMock( + mocks.modo_api_instance_search, + mocks.modo_api_instance_create, + mocks.modo_api_instance_update): + management.call_command("communicate_with_public_api") diff --git a/test-requirements.txt b/test-requirements.txt index e37c21246..a1b4ef1c5 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,3 +1,3 @@ factory-boy>=2.4 testfixtures==4.7.0 - +httmock==1.2.5