clean module master
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 29 Oct 2013 20:16:55 +0000 (16:16 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 29 Oct 2013 20:16:55 +0000 (16:16 -0400)
CHANGES
auf/django/saml/tests/__init__.py
auf/django/saml/tests/commands.py [new file with mode: 0644]
auf/django/saml/tests/common.py
auf/django/saml/tests/saml.py [deleted file]

diff --git a/CHANGES b/CHANGES
index 037b68e..555aa97 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,12 @@
+2.0
+---
+
+* Ajout tox
+
+* tests unitaires
+
+* coverage 100%
+
 1.19
 ----
 
index 0047ecd..ea762f7 100644 (file)
@@ -5,5 +5,6 @@ if settings.SAML_AUTH:
     from .admin import AdminTest  # noqa
     from .permissions import PermissionTest  # noqa
     from .template_tags import TemplateTagTest  # noqa
+    from .commands import CommandTest  # noqa
 else:
     from .dev import DevTest  # noqa
diff --git a/auf/django/saml/tests/commands.py b/auf/django/saml/tests/commands.py
new file mode 100644 (file)
index 0000000..7d69b92
--- /dev/null
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+
+from StringIO import StringIO
+
+from django.contrib.auth.models import User
+
+from auf.django.saml.management.commands.employes \
+    import Command as EmployeCommand
+
+from .middleware import LOGGED_USER_USERNAME, LOGGED_USER_EMAIL, \
+    LOGGED_USER_GN, LOGGED_USER_SN
+from .common import CommonTest
+
+
+class CommandTest(CommonTest):
+    """
+    Teste les commandes Django.
+    """
+    def test_employe_aide(self):
+        """
+        Test aide
+        """
+        cmd = EmployeCommand()
+        cmd.stdout = StringIO()
+        cmd.handle()
+        self.assertTrue("import" in cmd.stdout.getvalue())
+
+    def test_employe_import(self):
+        """
+        Test l'import des employes
+        """
+        self.creer_employe()
+        cmd = EmployeCommand()
+        cmd.stdout = StringIO()
+        cmd.handle('import')
+        users = User.objects.all()
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0].username, LOGGED_USER_USERNAME,)
+        self.assertEqual(users[0].email, LOGGED_USER_EMAIL,)
+        self.assertEqual(users[0].first_name, LOGGED_USER_SN,)
+        self.assertEqual(users[0].last_name, LOGGED_USER_GN,)
+
+    def test_employe_import_fois2(self):
+        """
+        Test le multiple import
+        """
+        self.creer_employe()
+        cmd = EmployeCommand()
+        cmd.stdout = StringIO()
+        cmd.handle('import')
+        cmd.handle('import')
+        users = User.objects.all()
+        self.assertEqual(len(users), 1)
+
+    def test_employe_import_sans_courriel(self):
+        """
+        Les employés sans courriel ne sont pas importés.
+        """
+        self.creer_employe_sans_courriel()
+        cmd = EmployeCommand()
+        cmd.stdout = StringIO()
+        cmd.handle('import')
+        users = User.objects.all()
+        self.assertEqual(len(users), 0)
index 2f173bf..3097a69 100644 (file)
@@ -10,7 +10,8 @@ from django.contrib.auth.models import User
 
 from auf.django.references import models as ref
 
-from .middleware import LOGGED_USER_EMAIL, ANONYMOUS_KEY, LOGGED_USER_USERNAME
+from .middleware import LOGGED_USER_EMAIL, ANONYMOUS_KEY,\
+    LOGGED_USER_USERNAME, LOGGED_USER_SN, LOGGED_USER_GN
 
 
 class CommonTest(TestCase):
@@ -41,15 +42,28 @@ class CommonTest(TestCase):
 
     def creer_employe(self):
         """
-        Créer un employé correspondant à la personne connecté dans le
-        MockMiddleware.
+        Créer un employé dans le référentiel.
         """
         ref.Employe(
+            nom=LOGGED_USER_GN,
+            prenom=LOGGED_USER_SN,
             implantation_id=1,
             implantation_physique_id=1,
             service_id=1,
             courriel=LOGGED_USER_EMAIL).save()
 
+    def creer_employe_sans_courriel(self):
+        """
+        Créer un employé sans courriel dans le référentiel.
+        """
+        ref.Employe(
+            nom=LOGGED_USER_GN,
+            prenom=LOGGED_USER_SN,
+            implantation_id=1,
+            implantation_physique_id=1,
+            service_id=1,
+            ).save()
+
     def creer_user(self):
         """
         Créer un user Django staff correspondant à la personne connecté dans le
diff --git a/auf/django/saml/tests/saml.py b/auf/django/saml/tests/saml.py
deleted file mode 100644 (file)
index 90fe9e2..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import urllib
-
-from django.core.urlresolvers import reverse
-
-from django.contrib.auth.models import User
-
-from auf.django.saml import settings
-from auf.django.references import models as ref
-
-from .middleware import LOGGED_USER_EMAIL, LOGGED_USER_GN, LOGGED_USER_SN
-from .common import CommonTest
-
-
-class PermissionTest(CommonTest):
-    """
-    Teste les outils de sécurisation.
-    """
-
-    def test_employe_required_anonymous(self):
-        """
-        Test le decorateur sans utilisateur connecté.
-        """
-        url = self.anonymize(reverse('test_employe_required'))
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 302)
-
-    def test_employe_required_authenticated(self):
-        """
-        Test le decorateur avec un utilisateur connecté.
-        """
-        url = reverse('test_employe_required')
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 403)
-
-    def test_employe_required_ok(self):
-        """
-        Test le decorateur avec un employé connecté.
-        """
-        ref.Employe(
-            courriel=LOGGED_USER_EMAIL).save()
-        url = reverse('test_employe_required')
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 200)
-
-    def test_login_required(self):
-        """
-        Test le décorateur de connexion requise.
-        """
-        url = self.anonymize(reverse('test_login_required'))
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 302)
-
-
-class AdminTest(CommonTest):
-    """
-    Teste le comportement de l'admin avec l'IDP.
-    """
-
-    def test_anonymize(self):
-        """
-        Test la fonction qui ajoute un params GET.
-        """
-        url = self.anonymize(reverse('admin:index'))
-        self.assertEqual(url.count('?'), 1)
-
-    def test_admin_index_anonymous(self):
-        """
-        La page de login de l'admin doît être désactivée.
-        Il n'y a pas de redirection vers le login.
-        """
-        url = self.anonymize(reverse('admin:index'))
-        response = self.client.get(url)
-        self.assertEqual(
-            response['location'].count('?'),
-            1,
-            response['location'])
-        self.assertEqual(response.status_code, 302)
-        location, dummy = self.redirectize(response['location']).split('?')
-        self.assertEqual(location, settings.SAML_MELLON_LOGIN_URL)
-
-    def test_admin_index_authenticated(self):
-        """
-        L'admin est inacessible par défaut, mais le user est crée à la volée.
-        """
-        url = reverse('admin:index')
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 403)
-
-        self.assertEqual(User.objects.count(), 1)
-        user = User.objects.all()[0]
-        email = LOGGED_USER_EMAIL.replace('@auf.org', '')
-        self.assertEqual(user.username, email,)
-        self.assertEqual(user.email, LOGGED_USER_EMAIL,)
-        self.assertEqual(user.first_name, LOGGED_USER_GN)
-        self.assertEqual(user.last_name, LOGGED_USER_SN)
-
-    def test_admin_login(self):
-        """
-        Test l'accès à l'admin selon le flag is_staff du compte local.
-        """
-        url = reverse('admin:index')
-        self.client.get(url)
-        user = User.objects.all()[0]
-        user.is_staff = True
-        user.save()
-
-        response = self.client.get(url)
-        self.assertEqual(response.status_code, 200)
-
-    def test_admin_logout(self):
-        """
-        Test la redirection du logout local puis au IdP
-        """
-        url = reverse('admin:index')
-        self.client.get(url)
-        user = User.objects.all()[0]
-        user.is_staff = True
-        user.save()
-
-        url = reverse('admin:logout')
-        response = self.client.get(url)
-        location, qs = self.redirectize(response['location']).split('?')
-        self.assertEqual(response.status_code, 302)
-        self.assertEqual(location, reverse('local_logout'))
-
-
-class TemplateTagTest(CommonTest):
-    """
-    Teste les fonctionnalités des templatetags SAML.
-    """
-
-    def setUp(self):
-        super(TemplateTagTest, self).setUp()
-        self.url = reverse('test_tags')
-        self.response = self.client.get(self.url)
-
-    def test_templatetag_login_var(self):
-        """
-        Test le rendu du templatetag *mellon_login_url* avec une variable en
-        paramètre.
-        """
-        regex = "test_templatetag_login_var:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        login_url, redirect_url = m.groups()
-        self.assertEqual(login_url, settings.SAML_MELLON_LOGIN_URL)
-        self.assertEqual(redirect_url, urllib.quote_plus(self.url))
-
-    def test_templatetag_login_default(self):
-        """
-        Test le rendu du templatetag *mellon_login_url* sans paramètre.
-        """
-        regex = "test_templatetag_login_default:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        login_url, redirect_url = m.groups()
-        self.assertEqual(login_url, settings.SAML_MELLON_LOGIN_URL)
-        self.assertEqual(redirect_url, urllib.quote_plus(self.url))
-
-    def test_templatetag_login_string(self):
-        """
-        Test le rendu du templatetag *mellon_login_url* avec paramètre string.
-        """
-        regex = "test_templatetag_login_string:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        login_url, redirect_url = m.groups()
-        self.assertEqual(login_url, settings.SAML_MELLON_LOGIN_URL)
-        self.assertEqual(redirect_url, urllib.quote_plus('/admin'))
-
-    def test_templatetag_logout_var(self):
-        """
-        Test le rendu du templatetag *mellon_logout_url* avec une variable en
-        paramètre.
-        """
-        regex = "test_templatetag_logout_var:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        logout_url, redirect_url = m.groups()
-        self.assertEqual(logout_url, reverse('local_logout'))
-        self.assertEqual(redirect_url, urllib.quote_plus(self.url))
-
-    def test_templatetag_logout_default(self):
-        """
-        Test le rendu du templatetag *mellon_logout_url* sans paramètre.
-        """
-        regex = "test_templatetag_logout_default:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        logout_url, redirect_url = m.groups()
-        self.assertEqual(logout_url, reverse('local_logout'))
-        self.assertEqual(
-            redirect_url,
-            urllib.quote_plus(settings.SAML_LOGOUT_REDIRECT_URL))
-
-    def test_templatetag_logout_string(self):
-        """
-        Test le rendu du templatetag *mellon_logout_url* avec paramètre string.
-        """
-        regex = "test_templatetag_logout_string:(.*)\?%s=(.*)\n" % (
-            settings.SAML_REDIRECT_FIELD_NAME, )
-        m = re.search(regex, self.response.content)
-        logout_url, redirect_url = m.groups()
-        self.assertEqual(logout_url, reverse('local_logout'))
-        self.assertEqual(redirect_url, urllib.quote_plus('/admin'))