Imported Debian patch 4.0.5-6~numeezy
This commit is contained in:
committed by
Mario Fetka
parent
c44de33144
commit
10dfc9587b
@@ -20,17 +20,11 @@
|
||||
Base class for HTTP request tests
|
||||
"""
|
||||
|
||||
from six.moves import urllib
|
||||
import urllib
|
||||
import httplib
|
||||
|
||||
from ipalib import api
|
||||
|
||||
# Python 3 rename. The package is available in "six.moves.http_client", but
|
||||
# pylint cannot handle classes from that alias
|
||||
try:
|
||||
import httplib
|
||||
except ImportError:
|
||||
import http.client as httplib
|
||||
|
||||
class Unauthorized_HTTP_test(object):
|
||||
"""
|
||||
Base class for simple HTTP request tests executed against URI
|
||||
@@ -47,9 +41,7 @@ class Unauthorized_HTTP_test(object):
|
||||
:param key When not None, overrides default app_uri
|
||||
"""
|
||||
if params is not None:
|
||||
# urlencode *can* take two arguments
|
||||
# pylint: disable=too-many-function-args
|
||||
params = urllib.parse.urlencode(params, True)
|
||||
params = urllib.urlencode(params, True)
|
||||
url = 'https://' + self.host + self.app_uri
|
||||
|
||||
headers = {'Content-Type' : self.content_type,
|
||||
|
||||
@@ -18,38 +18,37 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import nose
|
||||
import ldap
|
||||
import pytest
|
||||
|
||||
from ipatests.test_ipaserver.httptest import Unauthorized_HTTP_test
|
||||
from httptest import Unauthorized_HTTP_test
|
||||
from ipatests.test_xmlrpc.xmlrpc_test import XMLRPC_test
|
||||
from ipatests.util import assert_equal, assert_not_equal
|
||||
from ipalib import api, errors
|
||||
from ipapython.dn import DN
|
||||
import ldap
|
||||
|
||||
testuser = u'tuser'
|
||||
old_password = u'old_password'
|
||||
new_password = u'new_password'
|
||||
|
||||
|
||||
@pytest.mark.tier1
|
||||
class test_changepw(XMLRPC_test, Unauthorized_HTTP_test):
|
||||
app_uri = '/ipa/session/change_password'
|
||||
|
||||
def setup(self):
|
||||
def setUp(self):
|
||||
super(test_changepw, self).setUp()
|
||||
try:
|
||||
api.Command['user_add'](uid=testuser, givenname=u'Test', sn=u'User')
|
||||
api.Command['passwd'](testuser, password=u'old_password')
|
||||
except errors.ExecutionError as e:
|
||||
except errors.ExecutionError, e:
|
||||
raise nose.SkipTest(
|
||||
'Cannot set up test user: %s' % e
|
||||
)
|
||||
|
||||
def teardown(self):
|
||||
def tearDown(self):
|
||||
try:
|
||||
api.Command['user_del']([testuser])
|
||||
except errors.NotFound:
|
||||
pass
|
||||
super(test_changepw, self).tearDown()
|
||||
|
||||
def _changepw(self, user, old_password, new_password):
|
||||
return self.send_request(params={'user': str(user),
|
||||
|
||||
@@ -21,18 +21,10 @@ Test `adtrustinstance`
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import six
|
||||
import nose
|
||||
import pytest
|
||||
|
||||
from ipaserver.install import adtrustinstance
|
||||
|
||||
if six.PY3:
|
||||
unicode = str
|
||||
|
||||
|
||||
@pytest.mark.tier0
|
||||
class test_adtrustinstance:
|
||||
"""
|
||||
Test `adtrustinstance`.
|
||||
|
||||
@@ -22,10 +22,8 @@ Tests for the `ipaserver.service` module.
|
||||
"""
|
||||
|
||||
from ipaserver.install import service
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.tier0
|
||||
def test_format_seconds():
|
||||
assert service.format_seconds(0) == '0 seconds'
|
||||
assert service.format_seconds(1) == '1 second'
|
||||
|
||||
@@ -26,13 +26,10 @@
|
||||
# The DM password needs to be set in ~/.ipa/.dmpw
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
import nose
|
||||
from nose.tools import assert_raises # pylint: disable=E0611
|
||||
import nss.nss as nss
|
||||
import six
|
||||
|
||||
from ipaserver.plugins.ldap2 import ldap2
|
||||
from ipalib.plugins.service import service, service_show
|
||||
@@ -42,17 +39,12 @@ from ipapython import ipautil
|
||||
from ipaplatform.paths import paths
|
||||
from ipapython.dn import DN
|
||||
|
||||
if six.PY3:
|
||||
unicode = str
|
||||
|
||||
|
||||
@pytest.mark.tier0
|
||||
class test_ldap(object):
|
||||
"""
|
||||
Test various LDAP client bind methods.
|
||||
"""
|
||||
|
||||
def setup(self):
|
||||
def setUp(self):
|
||||
self.conn = None
|
||||
self.ldapuri = 'ldap://%s' % ipautil.format_netloc(api.env.host)
|
||||
self.ccache = paths.TMP_KRB5CC % os.getuid()
|
||||
@@ -60,7 +52,7 @@ class test_ldap(object):
|
||||
self.dn = DN(('krbprincipalname','ldap/%s@%s' % (api.env.host, api.env.realm)),
|
||||
('cn','services'),('cn','accounts'),api.env.basedn)
|
||||
|
||||
def teardown(self):
|
||||
def tearDown(self):
|
||||
if self.conn and self.conn.isconnected():
|
||||
self.conn.disconnect()
|
||||
|
||||
@@ -68,7 +60,7 @@ class test_ldap(object):
|
||||
"""
|
||||
Test an anonymous LDAP bind using ldap2
|
||||
"""
|
||||
self.conn = ldap2(api, ldap_uri=self.ldapuri)
|
||||
self.conn = ldap2(shared_instance=False, ldap_uri=self.ldapuri)
|
||||
self.conn.connect()
|
||||
dn = api.env.basedn
|
||||
entry_attrs = self.conn.get_entry(dn, ['associateddomain'])
|
||||
@@ -81,7 +73,7 @@ class test_ldap(object):
|
||||
"""
|
||||
if not ipautil.file_exists(self.ccache):
|
||||
raise nose.SkipTest('Missing ccache %s' % self.ccache)
|
||||
self.conn = ldap2(api, ldap_uri=self.ldapuri)
|
||||
self.conn = ldap2(shared_instance=False, ldap_uri=self.ldapuri)
|
||||
self.conn.connect(ccache='FILE:%s' % self.ccache)
|
||||
entry_attrs = self.conn.get_entry(self.dn, ['usercertificate'])
|
||||
cert = entry_attrs.get('usercertificate')
|
||||
@@ -100,7 +92,7 @@ class test_ldap(object):
|
||||
fp.close()
|
||||
else:
|
||||
raise nose.SkipTest("No directory manager password in %s" % pwfile)
|
||||
self.conn = ldap2(api, ldap_uri=self.ldapuri)
|
||||
self.conn = ldap2(shared_instance=False, ldap_uri=self.ldapuri)
|
||||
self.conn.connect(bind_dn=DN(('cn', 'directory manager')), bind_pw=dm_password)
|
||||
entry_attrs = self.conn.get_entry(self.dn, ['usercertificate'])
|
||||
cert = entry_attrs.get('usercertificate')
|
||||
@@ -118,10 +110,10 @@ class test_ldap(object):
|
||||
# we need for the test.
|
||||
myapi = create_api(mode=None)
|
||||
myapi.bootstrap(context='cli', in_server=True, in_tree=True)
|
||||
myapi.add_plugin(ldap2)
|
||||
myapi.add_plugin(host)
|
||||
myapi.add_plugin(service)
|
||||
myapi.add_plugin(service_show)
|
||||
myapi.register(ldap2)
|
||||
myapi.register(host)
|
||||
myapi.register(service)
|
||||
myapi.register(service_show)
|
||||
myapi.finalize()
|
||||
|
||||
pwfile = api.env.dot_ipa + os.sep + ".dmpw"
|
||||
@@ -145,7 +137,7 @@ class test_ldap(object):
|
||||
Test an autobind LDAP bind using ldap2
|
||||
"""
|
||||
ldapuri = 'ldapi://%%2fvar%%2frun%%2fslapd-%s.socket' % api.env.realm.replace('.','-')
|
||||
self.conn = ldap2(api, ldap_uri=ldapuri)
|
||||
self.conn = ldap2(shared_instance=False, ldap_uri=ldapuri)
|
||||
try:
|
||||
self.conn.connect(autobind=True)
|
||||
except errors.ACIError:
|
||||
@@ -157,7 +149,6 @@ class test_ldap(object):
|
||||
assert serial is not None
|
||||
|
||||
|
||||
@pytest.mark.tier0
|
||||
class test_LDAPEntry(object):
|
||||
"""
|
||||
Test the LDAPEntry class
|
||||
@@ -167,14 +158,14 @@ class test_LDAPEntry(object):
|
||||
dn1 = DN(('cn', cn1[0]))
|
||||
dn2 = DN(('cn', cn2[0]))
|
||||
|
||||
def setup(self):
|
||||
def setUp(self):
|
||||
self.ldapuri = 'ldap://%s' % ipautil.format_netloc(api.env.host)
|
||||
self.conn = ldap2(api, ldap_uri=self.ldapuri)
|
||||
self.conn = ldap2(shared_instance=False, ldap_uri=self.ldapuri)
|
||||
self.conn.connect()
|
||||
|
||||
self.entry = self.conn.make_entry(self.dn1, cn=self.cn1)
|
||||
|
||||
def teardown(self):
|
||||
def tearDown(self):
|
||||
if self.conn and self.conn.isconnected():
|
||||
self.conn.disconnect()
|
||||
|
||||
@@ -218,7 +209,7 @@ class test_LDAPEntry(object):
|
||||
def test_popitem(self):
|
||||
e = self.entry
|
||||
assert e.popitem() == ('cn', self.cn1)
|
||||
list(e) == []
|
||||
e.keys() == []
|
||||
|
||||
def test_setdefault(self):
|
||||
e = self.entry
|
||||
@@ -247,19 +238,12 @@ class test_LDAPEntry(object):
|
||||
assert not e
|
||||
assert 'cn' not in e
|
||||
|
||||
@pytest.mark.skipif(sys.version_info >= (3, 0), reason="Python 2 only")
|
||||
def test_has_key(self):
|
||||
e = self.entry
|
||||
assert not e.has_key('xyz')
|
||||
assert e.has_key('cn')
|
||||
assert e.has_key('COMMONNAME')
|
||||
|
||||
def test_in(self):
|
||||
e = self.entry
|
||||
assert 'xyz' not in e
|
||||
assert 'cn' in e
|
||||
assert 'COMMONNAME' in e
|
||||
|
||||
def test_get(self):
|
||||
e = self.entry
|
||||
assert e.get('cn') == self.cn1
|
||||
@@ -309,7 +293,7 @@ class test_LDAPEntry(object):
|
||||
assert nice == [2, 3, u'5']
|
||||
assert raw == ['3', '5', '2']
|
||||
|
||||
raw = [b'a', b'b']
|
||||
raw = ['a', 'b']
|
||||
e.raw['test'] = raw
|
||||
assert e['test'] is not nice
|
||||
assert e['test'] == [u'a', u'b']
|
||||
@@ -317,7 +301,7 @@ class test_LDAPEntry(object):
|
||||
nice = 'not list'
|
||||
e['test'] = nice
|
||||
assert e['test'] is nice
|
||||
assert e.raw['test'] == [b'not list']
|
||||
assert e.raw['test'] == ['not list']
|
||||
|
||||
e.raw['test'].append('second')
|
||||
assert e['test'] == ['not list', u'second']
|
||||
|
||||
@@ -20,21 +20,13 @@
|
||||
import os
|
||||
import sys
|
||||
import nose
|
||||
import pytest
|
||||
from nss import nss
|
||||
from ipalib.x509 import initialize_nss_database
|
||||
|
||||
from ipaserver.install.ipa_otptoken_import import PSKCDocument, ValidationError
|
||||
|
||||
basename = os.path.join(os.path.dirname(__file__), "data")
|
||||
|
||||
@pytest.mark.skipif(True, reason="Causes NSS errors. Ticket 5192")
|
||||
@pytest.mark.tier1
|
||||
class test_otptoken_import(object):
|
||||
|
||||
def teardown(self):
|
||||
initialize_nss_database()
|
||||
|
||||
def test_figure3(self):
|
||||
doc = PSKCDocument(os.path.join(basename, "pskc-figure3.xml"))
|
||||
assert doc.keyname is None
|
||||
@@ -43,7 +35,7 @@ class test_otptoken_import(object):
|
||||
'ipatokenotpkey': u'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ',
|
||||
'ipatokenvendor': u'Manufacturer',
|
||||
'ipatokenserial': u'987654321',
|
||||
'ipatokenhotpcounter': 0,
|
||||
'ipatokenhotpcounter': 0L,
|
||||
'ipatokenotpdigits': 8,
|
||||
'type': u'hotp',
|
||||
})]
|
||||
@@ -79,7 +71,7 @@ class test_otptoken_import(object):
|
||||
'ipatokenotpkey': u'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ',
|
||||
'ipatokenvendor': u'Manufacturer',
|
||||
'ipatokenserial': u'987654321',
|
||||
'ipatokenhotpcounter': 0,
|
||||
'ipatokenhotpcounter': 0L,
|
||||
'ipatokenotpdigits': 8,
|
||||
'type': u'hotp'})]
|
||||
finally:
|
||||
@@ -150,7 +142,7 @@ class test_otptoken_import(object):
|
||||
'ipatokenvendor': u'iana.dummy',
|
||||
'description': u'FriendlyName',
|
||||
'ipatokentotptimestep': 200,
|
||||
'ipatokenhotpcounter': 0,
|
||||
'ipatokenhotpcounter': 0L,
|
||||
'ipatokenmodel': u'Model',
|
||||
'ipatokenotpdigits': 8,
|
||||
'type': u'hotp',
|
||||
|
||||
@@ -22,19 +22,12 @@ Test the `ipaserver.rpc` module.
|
||||
"""
|
||||
|
||||
import json
|
||||
import pytest
|
||||
|
||||
import six
|
||||
|
||||
from ipatests.util import create_test_api, assert_equal, raises, PluginTester
|
||||
from ipatests.data import unicode_str
|
||||
from ipalib import errors, Command
|
||||
from ipaserver import rpcserver
|
||||
|
||||
if six.PY3:
|
||||
unicode = str
|
||||
|
||||
pytestmark = pytest.mark.tier0
|
||||
|
||||
class StartResponse(object):
|
||||
def __init__(self):
|
||||
@@ -54,8 +47,7 @@ class StartResponse(object):
|
||||
|
||||
|
||||
def test_not_found():
|
||||
api = 'the api instance'
|
||||
f = rpcserver.HTTP_Status(api)
|
||||
f = rpcserver.HTTP_Status()
|
||||
t = rpcserver._not_found_template
|
||||
s = StartResponse()
|
||||
|
||||
@@ -80,8 +72,7 @@ def test_not_found():
|
||||
|
||||
|
||||
def test_bad_request():
|
||||
api = 'the api instance'
|
||||
f = rpcserver.HTTP_Status(api)
|
||||
f = rpcserver.HTTP_Status()
|
||||
t = rpcserver._bad_request_template
|
||||
s = StartResponse()
|
||||
|
||||
@@ -94,8 +85,7 @@ def test_bad_request():
|
||||
|
||||
|
||||
def test_internal_error():
|
||||
api = 'the api instance'
|
||||
f = rpcserver.HTTP_Status(api)
|
||||
f = rpcserver.HTTP_Status()
|
||||
t = rpcserver._internal_error_template
|
||||
s = StartResponse()
|
||||
|
||||
@@ -108,8 +98,7 @@ def test_internal_error():
|
||||
|
||||
|
||||
def test_unauthorized_error():
|
||||
api = 'the api instance'
|
||||
f = rpcserver.HTTP_Status(api)
|
||||
f = rpcserver.HTTP_Status()
|
||||
t = rpcserver._unauthorized_template
|
||||
s = StartResponse()
|
||||
|
||||
@@ -150,8 +139,7 @@ class test_session(object):
|
||||
[environ[k] for k in ('SCRIPT_NAME', 'PATH_INFO')]
|
||||
)
|
||||
|
||||
api = 'the api instance'
|
||||
inst = self.klass(api)
|
||||
inst = self.klass()
|
||||
inst.mount(app1, '/foo/stuff')
|
||||
inst.mount(app2, '/bar')
|
||||
|
||||
@@ -169,14 +157,13 @@ class test_session(object):
|
||||
pass
|
||||
|
||||
# Test that mount works:
|
||||
api = 'the api instance'
|
||||
inst = self.klass(api)
|
||||
inst = self.klass()
|
||||
inst.mount(app1, 'foo')
|
||||
assert inst['foo'] is app1
|
||||
assert list(inst) == ['foo']
|
||||
|
||||
# Test that Exception is raise if trying override a mount:
|
||||
e = raises(Exception, inst.mount, app2, 'foo')
|
||||
# Test that StandardError is raise if trying override a mount:
|
||||
e = raises(StandardError, inst.mount, app2, 'foo')
|
||||
assert str(e) == '%s.mount(): cannot replace %r with %r at %r' % (
|
||||
'wsgi_dispatch', app1, app2, 'foo'
|
||||
)
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2015 FreeIPA Contributors see COPYING for license
|
||||
#
|
||||
|
||||
import io
|
||||
import os
|
||||
from ipaserver.plugins.ldap2 import ldap2
|
||||
from ipalib import api
|
||||
from ipapython import ipautil
|
||||
from ipapython.dn import DN
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.tier1
|
||||
class TestTopologyPlugin(object):
|
||||
"""
|
||||
Test Topology plugin from the DS point of view
|
||||
Testcase: http://www.freeipa.org/page/V4/Manage_replication_topology/
|
||||
Test_plan#Test_case:
|
||||
_Replication_Topology_is_listed_among_directory_server_plugins
|
||||
"""
|
||||
pwfile = os.path.join(api.env.dot_ipa, ".dmpw")
|
||||
|
||||
def setup(self):
|
||||
"""
|
||||
setup for test
|
||||
"""
|
||||
self.conn = None
|
||||
|
||||
def teardown(self):
|
||||
if self.conn and self.conn.isconnected():
|
||||
self.conn.disconnect()
|
||||
|
||||
@pytest.mark.skipif(ipautil.file_exists(pwfile) is False,
|
||||
reason="You did not provide a .dmpw file with the DM password")
|
||||
def test_topologyplugin(self):
|
||||
pluginattrs = {
|
||||
u'nsslapd-pluginPath': [u'libtopology'],
|
||||
u'nsslapd-pluginVendor': [u'freeipa'],
|
||||
u'cn': [u'IPA Topology Configuration'],
|
||||
u'nsslapd-plugin-depends-on-named':
|
||||
[u'Multimaster Replication Plugin', u'ldbm database'],
|
||||
u'nsslapd-topo-plugin-shared-replica-root': [u'dc=example,dc=com'],
|
||||
u'nsslapd-pluginVersion': [u'1.0'],
|
||||
u'nsslapd-topo-plugin-shared-config-base':
|
||||
[u'cn=ipa,cn=etc,dc=example,dc=com'],
|
||||
u'nsslapd-pluginDescription': [u'ipa-topology-plugin'],
|
||||
u'nsslapd-pluginEnabled': [u'on'],
|
||||
u'nsslapd-pluginId': [u'ipa-topology-plugin'],
|
||||
u'objectClass': [u'top', u'nsSlapdPlugin', u'extensibleObject'],
|
||||
u'nsslapd-topo-plugin-startup-delay': [u'20'],
|
||||
u'nsslapd-topo-plugin-shared-binddngroup':
|
||||
[u'cn=replication managers,cn=sysaccounts,cn=etc,dc=example,dc=com'],
|
||||
u'nsslapd-pluginType': [u'object'],
|
||||
u'nsslapd-pluginInitfunc': [u'ipa_topo_init']
|
||||
}
|
||||
variable_attrs = {u'nsslapd-topo-plugin-shared-replica-root',
|
||||
u'nsslapd-topo-plugin-shared-config-base',
|
||||
u'nsslapd-topo-plugin-shared-binddngroup'}
|
||||
|
||||
# Now eliminate keys that have domain-dependent values.
|
||||
checkvalues = set(pluginattrs.keys()) - variable_attrs
|
||||
topoplugindn = DN(('cn', 'IPA Topology Configuration'),
|
||||
('cn', 'plugins'),
|
||||
('cn', 'config'))
|
||||
pwfile = os.path.join(api.env.dot_ipa, ".dmpw")
|
||||
with io.open(pwfile, "r") as f:
|
||||
dm_password = f.read().rstrip()
|
||||
self.conn = ldap2(api)
|
||||
self.conn.connect(bind_dn=DN(('cn', 'directory manager')),
|
||||
bind_pw=dm_password)
|
||||
entry = self.conn.get_entry(topoplugindn)
|
||||
assert(set(entry.keys()) == set(pluginattrs.keys()))
|
||||
for i in checkvalues:
|
||||
assert(pluginattrs[i] == entry[i])
|
||||
@@ -1,51 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2015 FreeIPA Contributors see COPYING for license
|
||||
#
|
||||
|
||||
"""
|
||||
tests for correct RPM version comparison
|
||||
"""
|
||||
|
||||
from ipaplatform.tasks import tasks
|
||||
import pytest
|
||||
|
||||
version_strings = [
|
||||
("3.0.0-1.el6", "3.0.0-2.el6", "older"),
|
||||
("3.0.0-1.el6_8", "3.0.0-1.el6_8.1", "older"),
|
||||
("3.0.0-42.el6", "3.0.0-1.el6", "newer"),
|
||||
("3.0.0-1.el6", "3.0.0-42.el6", "older"),
|
||||
("3.0.0-42.el6", "3.3.3-1.fc20", "older"),
|
||||
("4.2.0-15.el7", "4.2.0-15.el7_2.3", "older"),
|
||||
("4.2.0-15.el7_2", "4.2.0-15.el7_2.3", "older"),
|
||||
("4.2.0-15.el7_2.3", "4.2.0-15.el7_2.3", "equal"),
|
||||
("4.2.0-15.el7_2.3", "4.2.0-15.el7_2.2", "newer"),
|
||||
("4.2.0-1.fc23", "4.2.1-1.fc23", "older"),
|
||||
("4.2.3-alpha1.fc23", "4.2.3-2.fc23", "older"), # numeric version elements
|
||||
# have precedence over
|
||||
# non-numeric ones
|
||||
("4.3.90.201601080923GIT55aeea7-0.fc23", "4.3.0-1.fc23", "newer")
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture(params=version_strings)
|
||||
def versions(request):
|
||||
return request.param
|
||||
|
||||
class TestVersionComparsion(object):
|
||||
|
||||
def test_versions(self, versions):
|
||||
version_string1, version_string2, expected_comparison = versions
|
||||
|
||||
ver1 = tasks.parse_ipa_version(version_string1)
|
||||
ver2 = tasks.parse_ipa_version(version_string2)
|
||||
|
||||
if expected_comparison == "newer":
|
||||
assert ver1 > ver2
|
||||
elif expected_comparison == "older":
|
||||
assert ver1 < ver2
|
||||
elif expected_comparison == "equal":
|
||||
assert ver1 == ver2
|
||||
else:
|
||||
raise TypeError(
|
||||
"Unexpected comparison string: {}".format(expected_comparison)
|
||||
)
|
||||
Reference in New Issue
Block a user