Mock public API.

see #890
This commit is contained in:
Antoine Nguyen
2016-06-17 17:07:02 +02:00
parent 2d7c1215ca
commit 006a7fef43
3 changed files with 46 additions and 1 deletions
+29
View File
@@ -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}
+16
View File
@@ -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")
+1 -1
View File
@@ -1,3 +1,3 @@
factory-boy>=2.4
testfixtures==4.7.0
httmock==1.2.5