mirror of
https://github.com/ansible/awx.git
synced 2026-05-14 21:07:39 -02:30
AC-156. Only use configured LDAP authentication when needed for LDAP tests.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
# Copyright (c) 2013 AnsibleWorks, Inc.
|
# Copyright (c) 2013 AnsibleWorks, Inc.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
|
|
||||||
|
# Python
|
||||||
import contextlib
|
import contextlib
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
@@ -8,11 +9,19 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
# PyYAML
|
||||||
import yaml
|
import yaml
|
||||||
from django.conf import settings
|
|
||||||
|
# Django
|
||||||
|
from django.conf import settings, UserSettingsHolder
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
import django.test
|
import django.test
|
||||||
from django.test.client import Client
|
from django.test.client import Client
|
||||||
|
|
||||||
|
# Django-Auth-LDAP
|
||||||
|
from django_auth_ldap.backend import LDAPSettings
|
||||||
|
|
||||||
|
# AWX
|
||||||
from awx.main.models import *
|
from awx.main.models import *
|
||||||
|
|
||||||
class BaseTestMixin(object):
|
class BaseTestMixin(object):
|
||||||
@@ -26,12 +35,23 @@ class BaseTestMixin(object):
|
|||||||
self._temp_project_dirs = []
|
self._temp_project_dirs = []
|
||||||
self._current_auth = None
|
self._current_auth = None
|
||||||
self._user_passwords = {}
|
self._user_passwords = {}
|
||||||
|
# Wrap settings so we can redefine them within each test.
|
||||||
|
self._wrapped = settings._wrapped
|
||||||
|
settings._wrapped = UserSettingsHolder(settings._wrapped)
|
||||||
|
# Set all AUTH_LDAP_* settings to defaults to avoid using LDAP for
|
||||||
|
# tests unless expicitly configured.
|
||||||
|
for name, value in LDAPSettings.defaults.items():
|
||||||
|
if name == 'SERVER_URI':
|
||||||
|
value = ''
|
||||||
|
setattr(settings, 'AUTH_LDAP_%s' % name, value)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(BaseTestMixin, self).tearDown()
|
super(BaseTestMixin, self).tearDown()
|
||||||
for project_dir in self._temp_project_dirs:
|
for project_dir in self._temp_project_dirs:
|
||||||
if os.path.exists(project_dir):
|
if os.path.exists(project_dir):
|
||||||
shutil.rmtree(project_dir, True)
|
shutil.rmtree(project_dir, True)
|
||||||
|
# Restore previous settings after each test.
|
||||||
|
settings._wrapped = self._wrapped
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def current_user(self, user_or_username, password=None):
|
def current_user(self, user_or_username, password=None):
|
||||||
|
|||||||
@@ -7,15 +7,12 @@ import json
|
|||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
# Django
|
# Django
|
||||||
from django.conf import settings, UserSettingsHolder
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
import django.test
|
import django.test
|
||||||
from django.test.client import Client
|
from django.test.client import Client
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
|
||||||
# Django-Auth-LDAP
|
|
||||||
from django_auth_ldap.backend import LDAPSettings
|
|
||||||
|
|
||||||
# AWX
|
# AWX
|
||||||
from awx.main.models import *
|
from awx.main.models import *
|
||||||
from awx.main.tests.base import BaseTest
|
from awx.main.tests.base import BaseTest
|
||||||
@@ -645,20 +642,10 @@ class LdapTest(BaseTest):
|
|||||||
self.ldap_password = getattr(settings, 'TEST_AUTH_LDAP_PASSWORD', None)
|
self.ldap_password = getattr(settings, 'TEST_AUTH_LDAP_PASSWORD', None)
|
||||||
if not self.ldap_password:
|
if not self.ldap_password:
|
||||||
self.skipTest('no test LDAP password defined')
|
self.skipTest('no test LDAP password defined')
|
||||||
# Wrap settings so we can redfine them for each test.
|
|
||||||
self._wrapped = settings._wrapped
|
|
||||||
settings._wrapped = UserSettingsHolder(settings._wrapped)
|
|
||||||
# Reset all AUTH_LDAP_* settings to defaults.
|
|
||||||
for name, value in LDAPSettings.defaults.items():
|
|
||||||
setattr(settings, 'AUTH_LDAP_%s' % name, value)
|
|
||||||
# Set test LDAP settings that are always needed.
|
# Set test LDAP settings that are always needed.
|
||||||
for name in ('SERVER_URI', 'BIND_DN', 'BIND_PASSWORD', 'USE_TLS'):
|
for name in ('SERVER_URI', 'BIND_DN', 'BIND_PASSWORD', 'USE_TLS'):
|
||||||
self.use_test_setting(name)
|
self.use_test_setting(name)
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
super(LdapTest, self).tearDown()
|
|
||||||
settings._wrapped = self._wrapped
|
|
||||||
|
|
||||||
def check_login(self, username=None, password=None, should_fail=False):
|
def check_login(self, username=None, password=None, should_fail=False):
|
||||||
username = username or self.ldap_username
|
username = username or self.ldap_username
|
||||||
password = password or self.ldap_password
|
password = password or self.ldap_password
|
||||||
|
|||||||
Reference in New Issue
Block a user