author | Denis Laxalde <denis.laxalde@logilab.fr> |
Mon, 19 Jun 2017 18:15:28 +0200 | |
changeset 12188 | fea018b2e056 |
parent 12153 | 0ff0aff4413d |
child 12222 | 52f395015ff9 |
permissions | -rw-r--r-- |
11767
432f87a63057
flake8 and all
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11764
diff
changeset
|
1 |
# copyright 2003-2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5064
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
10911
cff2dbc33eff
[server/test] document expected packages to run ldap tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10908
diff
changeset
|
18 |
"""cubicweb.server.sources.ldapfeed unit and functional tests |
cff2dbc33eff
[server/test] document expected packages to run ldap tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10908
diff
changeset
|
19 |
|
cff2dbc33eff
[server/test] document expected packages to run ldap tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10908
diff
changeset
|
20 |
Those tests expect to have slapd, python-ldap3 and ldapscripts packages installed. |
cff2dbc33eff
[server/test] document expected packages to run ldap tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10908
diff
changeset
|
21 |
""" |
11767
432f87a63057
flake8 and all
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11764
diff
changeset
|
22 |
|
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
23 |
from __future__ import print_function |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
24 |
|
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
25 |
import os |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
26 |
import sys |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
27 |
import shutil |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
28 |
import time |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
29 |
import subprocess |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
30 |
import tempfile |
10950
282880f81311
[test] Skip ldap source tests if slapd is not available
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
10912
diff
changeset
|
31 |
import unittest |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
32 |
from os.path import join |
3855
dbd37c10f865
try to update ldap tests to make them work from the DMZ (eg using another ldap directory)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3587
diff
changeset
|
33 |
|
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
34 |
from six import string_types |
10609
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10589
diff
changeset
|
35 |
from six.moves import range |
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10589
diff
changeset
|
36 |
|
12153
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
37 |
from cubicweb import AuthenticationError, ValidationError |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
38 |
from cubicweb.devtools.testlib import CubicWebTC |
6986
18343456ee49
[ldap test] use get_available_port from cw.devtools.httptest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6985
diff
changeset
|
39 |
from cubicweb.devtools.httptest import get_available_port |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
40 |
|
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
41 |
|
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
42 |
CONFIG_LDAPFEED = u''' |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
43 |
user-base-dn=ou=People,dc=cubicweb,dc=test |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
44 |
group-base-dn=ou=Group,dc=cubicweb,dc=test |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
45 |
user-attrs-map=uid=login,mail=email,userPassword=upassword |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
46 |
group-attrs-map=cn=name,memberUid=member |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
47 |
''' |
8901
661b6aaac240
[test/ldap source] better source naming, some cleanups (prepares #2528116)
Jérôme Roy
parents:
8885
diff
changeset
|
48 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
49 |
URL = None |
3855
dbd37c10f865
try to update ldap tests to make them work from the DMZ (eg using another ldap directory)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3587
diff
changeset
|
50 |
|
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
51 |
|
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
52 |
def create_slapd_configuration(cls): |
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
53 |
global URL |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
54 |
slapddir = tempfile.mkdtemp('cw-unittest-ldap') |
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
55 |
config = cls.config |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
56 |
slapdconf = join(config.apphome, "slapd.conf") |
10614
57dfde80df11
[py3k] file → open
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10612
diff
changeset
|
57 |
confin = open(join(config.apphome, "slapd.conf.in")).read() |
57dfde80df11
[py3k] file → open
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10612
diff
changeset
|
58 |
confstream = open(slapdconf, 'w') |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
59 |
confstream.write(confin % {'apphome': config.apphome, 'testdir': slapddir}) |
6985
dda970c8a315
[test] generate slapd.conf to be cwd independant
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6888
diff
changeset
|
60 |
confstream.close() |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
61 |
# fill ldap server with some data |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
62 |
ldiffile = join(config.apphome, "ldap_test.ldif") |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
63 |
config.info('Initing ldap database') |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
64 |
cmdline = ['/usr/sbin/slapadd', '-f', slapdconf, '-l', ldiffile, '-c'] |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
65 |
PIPE = subprocess.PIPE |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
66 |
slapproc = subprocess.Popen(cmdline, stdout=PIPE, stderr=PIPE) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
67 |
stdout, stderr = slapproc.communicate() |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
68 |
if slapproc.returncode: |
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
69 |
print('slapadd returned with status: %s' |
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
70 |
% slapproc.returncode, file=sys.stderr) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
71 |
sys.stdout.write(stdout) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
72 |
sys.stderr.write(stderr) |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
73 |
|
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
74 |
# ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f') |
10609
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10589
diff
changeset
|
75 |
port = get_available_port(range(9000, 9100)) |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
76 |
host = 'localhost:%s' % port |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
77 |
ldapuri = 'ldap://%s' % host |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
78 |
cmdline = ["/usr/sbin/slapd", "-f", slapdconf, "-h", ldapuri, "-d", "0"] |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
79 |
config.info('Starting slapd:', ' '.join(cmdline)) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
80 |
PIPE = subprocess.PIPE |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
81 |
cls.slapd_process = subprocess.Popen(cmdline, stdout=PIPE, stderr=PIPE) |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
82 |
time.sleep(0.2) |
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
83 |
if cls.slapd_process.poll() is None: |
8901
661b6aaac240
[test/ldap source] better source naming, some cleanups (prepares #2528116)
Jérôme Roy
parents:
8885
diff
changeset
|
84 |
config.info('slapd started with pid %s', cls.slapd_process.pid) |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
85 |
else: |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
86 |
raise EnvironmentError('Cannot start slapd with cmdline="%s" (from directory "%s")' % |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
87 |
(" ".join(cmdline), os.getcwd())) |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
88 |
URL = u'ldap://%s' % host |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
89 |
return slapddir |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
90 |
|
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
91 |
|
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
92 |
def terminate_slapd(cls): |
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
93 |
config = cls.config |
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
94 |
if cls.slapd_process and cls.slapd_process.returncode is None: |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
95 |
config.info('terminating slapd') |
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
96 |
if hasattr(cls.slapd_process, 'terminate'): |
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
97 |
cls.slapd_process.terminate() |
6986
18343456ee49
[ldap test] use get_available_port from cw.devtools.httptest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6985
diff
changeset
|
98 |
else: |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
99 |
import signal |
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
100 |
os.kill(cls.slapd_process.pid, signal.SIGTERM) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
101 |
stdout, stderr = cls.slapd_process.communicate() |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
102 |
if cls.slapd_process.returncode: |
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
103 |
print('slapd returned with status: %s' |
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
104 |
% cls.slapd_process.returncode, file=sys.stderr) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
105 |
sys.stdout.write(stdout) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
106 |
sys.stderr.write(stderr) |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
107 |
config.info('DONE') |
11270
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
108 |
try: |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
109 |
shutil.rmtree(cls._tmpdir) |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
110 |
except: |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
111 |
pass |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
112 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
113 |
|
12136
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
114 |
def ldapsource(cnx): |
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
115 |
return cnx.find('CWSource', type=u'ldapfeed').one() |
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
116 |
|
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
117 |
|
12143
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
118 |
def update_source_config(source, options): |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
119 |
config = source.dictconfig |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
120 |
config.update(options) |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
121 |
source.cw_set(config=u'\n'.join('%s=%s' % x for x in config.items())) |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
122 |
|
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
123 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
124 |
class LDAPFeedTestBase(CubicWebTC): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
125 |
test_db_id = 'ldap-feed' |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
126 |
loglevel = 'ERROR' |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
127 |
|
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
128 |
@classmethod |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
129 |
def setUpClass(cls): |
11270
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
130 |
super(LDAPFeedTestBase, cls).setUpClass() |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
131 |
cls.init_slapd() |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
132 |
|
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
133 |
@classmethod |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
134 |
def tearDownClass(cls): |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
135 |
cls.terminate_slapd() |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
136 |
|
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
137 |
@classmethod |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
138 |
def init_slapd(cls): |
11073
d7e8912549cd
[test] Skip LDAP tests if any of the underlying programs is not found
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
139 |
for path in ('/usr/sbin/slapd', |
d7e8912549cd
[test] Skip LDAP tests if any of the underlying programs is not found
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
140 |
'/usr/sbin/slapadd', |
d7e8912549cd
[test] Skip LDAP tests if any of the underlying programs is not found
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
141 |
'/usr/bin/ldapmodify'): |
d7e8912549cd
[test] Skip LDAP tests if any of the underlying programs is not found
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
142 |
if not os.path.exists(path): |
d7e8912549cd
[test] Skip LDAP tests if any of the underlying programs is not found
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
143 |
raise unittest.SkipTest('%s not found' % path) |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
144 |
from cubicweb.cwctl import init_cmdline_log_threshold |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
145 |
init_cmdline_log_threshold(cls.config, cls.loglevel) |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
146 |
cls._tmpdir = create_slapd_configuration(cls) |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
147 |
|
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
148 |
@classmethod |
11270
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
149 |
def terminate_slapd(cls): |
8434
39c5bb4dcc59
[ldapfeed] do not crash on ldap user deletion + pull + already deactivated users, cleanups (closes #2392933)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8430
diff
changeset
|
150 |
terminate_slapd(cls) |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
151 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
152 |
@classmethod |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
153 |
def pre_setup_database(cls, cnx, config): |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
154 |
cnx.create_entity('CWSource', name=u'ldap', type=u'ldapfeed', parser=u'ldapfeed', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
155 |
url=URL, config=CONFIG_LDAPFEED) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
156 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
157 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
158 |
return cls.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
159 |
|
12132
be2c14ea2736
[server/test] Turn "pull" method of LDAPFeedTestBase into a staticmethod
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12058
diff
changeset
|
160 |
@staticmethod |
be2c14ea2736
[server/test] Turn "pull" method of LDAPFeedTestBase into a staticmethod
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12058
diff
changeset
|
161 |
def pull(cnx): |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
162 |
lfsource = cnx.repo.source_by_uri('ldap') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
163 |
stats = lfsource.pull_data(cnx, force=True, raise_on_error=True) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
164 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
165 |
return stats |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
166 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
167 |
def setup_database(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
168 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
169 |
cnx.execute('DELETE Any E WHERE E cw_source S, S name "ldap"') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
170 |
cnx.execute('SET S config %(conf)s, S url %(url)s ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
171 |
'WHERE S is CWSource, S name "ldap"', |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
172 |
{"conf": CONFIG_LDAPFEED, 'url': URL}) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
173 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
174 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
175 |
self.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
176 |
|
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
177 |
def add_ldap_entry(self, dn, mods): |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
178 |
""" |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
179 |
add an LDAP entity |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
180 |
""" |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
181 |
modcmd = ['dn: %s' % dn, 'changetype: add'] |
10662
10942ed172de
[py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10651
diff
changeset
|
182 |
for key, values in mods.items(): |
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
183 |
if isinstance(values, string_types): |
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
184 |
values = [values] |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
185 |
for value in values: |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
186 |
modcmd.append('%s: %s' % (key, value)) |
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
187 |
self._ldapmodify(modcmd) |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
188 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
189 |
def delete_ldap_entry(self, dn): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
190 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
191 |
delete an LDAP entity |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
192 |
""" |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
193 |
modcmd = ['dn: %s' % dn, 'changetype: delete'] |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
194 |
self._ldapmodify(modcmd) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
195 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
196 |
def update_ldap_entry(self, dn, mods): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
197 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
198 |
modify one or more attributes of an LDAP entity |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
199 |
""" |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
200 |
modcmd = ['dn: %s' % dn, 'changetype: modify'] |
10662
10942ed172de
[py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10651
diff
changeset
|
201 |
for (kind, key), values in mods.items(): |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
202 |
modcmd.append('%s: %s' % (kind, key)) |
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
203 |
if isinstance(values, string_types): |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
204 |
values = [values] |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
205 |
for value in values: |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
206 |
modcmd.append('%s: %s' % (key, value)) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
207 |
modcmd.append('-') |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
208 |
self._ldapmodify(modcmd) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
209 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
210 |
def _ldapmodify(self, modcmd): |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
211 |
uri = self.repo.source_by_uri('ldap').urls[0] |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
212 |
updatecmd = ['ldapmodify', '-H', uri, '-v', '-x', '-D', |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
213 |
'cn=admin,dc=cubicweb,dc=test', '-w', 'cw'] |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
214 |
PIPE = subprocess.PIPE |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
215 |
p = subprocess.Popen(updatecmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) |
10768
99689a5862ea
[py3k] make ldapfeed tests pass
Julien Cristau <julien.cristau@logilab.fr>
parents:
10662
diff
changeset
|
216 |
p.stdin.write('\n'.join(modcmd).encode('ascii')) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
217 |
p.stdin.close() |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
218 |
if p.wait(): |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
219 |
raise RuntimeError("ldap update failed: %s" % ('\n'.join(p.stderr.readlines()))) |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
220 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
221 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
222 |
class CheckWrongGroup(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
223 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
224 |
A testcase for situations where the default group for CWUser |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
225 |
created from LDAP is wrongly configured. |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
226 |
""" |
8679
cf4dacc80976
[ldapfeed] don't crash if one specify an unexisting group in the configuration. Closes #2538399
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8639
diff
changeset
|
227 |
|
cf4dacc80976
[ldapfeed] don't crash if one specify an unexisting group in the configuration. Closes #2538399
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8639
diff
changeset
|
228 |
def test_wrong_group(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
229 |
with self.admin_access.repo_cnx() as cnx: |
12136
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
230 |
source = ldapsource(cnx) |
8679
cf4dacc80976
[ldapfeed] don't crash if one specify an unexisting group in the configuration. Closes #2538399
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8639
diff
changeset
|
231 |
# inject a bogus group here, along with at least a valid one |
12151
569dce882f60
[test] Fix option name in ldap wrong group test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12146
diff
changeset
|
232 |
options = {'user-default-group': 'thisgroupdoesnotexists,users'} |
12143
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
233 |
update_source_config(source, options) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
234 |
cnx.commit() |
8679
cf4dacc80976
[ldapfeed] don't crash if one specify an unexisting group in the configuration. Closes #2538399
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8639
diff
changeset
|
235 |
# here we emitted an error log entry |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
236 |
source.repo_source.pull_data(cnx, force=True, raise_on_error=True) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
237 |
cnx.commit() |
8679
cf4dacc80976
[ldapfeed] don't crash if one specify an unexisting group in the configuration. Closes #2538399
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8639
diff
changeset
|
238 |
|
8901
661b6aaac240
[test/ldap source] better source naming, some cleanups (prepares #2528116)
Jérôme Roy
parents:
8885
diff
changeset
|
239 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
240 |
class LDAPFeedUserTC(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
241 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
242 |
A testcase for CWUser support in ldapfeed (basic tests and authentication). |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
243 |
""" |
8684
6c7c2a02c9a0
[ldap test] fix bad merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8683
diff
changeset
|
244 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
245 |
def assertMetadata(self, entity): |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
246 |
self.assertTrue(entity.creation_date) |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
247 |
self.assertTrue(entity.modification_date) |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
248 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
249 |
def test_authenticate(self): |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
250 |
source = self.repo.source_by_uri('ldap') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
251 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
252 |
# ensure we won't be logged against |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
253 |
self.assertRaises(AuthenticationError, |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
254 |
source.authenticate, cnx, 'toto', 'toto') |
11262
25f9a76ddf50
[test] add a test to ensure we get an AuthenticationError with ldapfeed
David Douard <david.douard@logilab.fr>
parents:
10950
diff
changeset
|
255 |
self.assertRaises(AuthenticationError, |
25f9a76ddf50
[test] add a test to ensure we get an AuthenticationError with ldapfeed
David Douard <david.douard@logilab.fr>
parents:
10950
diff
changeset
|
256 |
source.authenticate, cnx, 'syt', 'toto') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
257 |
self.assertTrue(source.authenticate(cnx, 'syt', 'syt')) |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
258 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
259 |
def test_base(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
260 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
261 |
# check a known one |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
262 |
rset = cnx.execute('CWUser X WHERE X login %(login)s', {'login': 'syt'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
263 |
e = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
264 |
self.assertEqual(e.login, 'syt') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
265 |
e.complete() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
266 |
self.assertMetadata(e) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
267 |
self.assertEqual(e.firstname, None) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
268 |
self.assertEqual(e.surname, None) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
269 |
self.assertIn('users', set(g.name for g in e.in_group)) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
270 |
self.assertEqual(e.owned_by[0].login, 'syt') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
271 |
self.assertEqual(e.created_by, ()) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
272 |
addresses = [pe.address for pe in e.use_email] |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
273 |
addresses.sort() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
274 |
self.assertEqual(['sylvain.thenault@logilab.fr', 'syt@logilab.fr'], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
275 |
addresses) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
276 |
self.assertIn(e.primary_email[0].address, ['sylvain.thenault@logilab.fr', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
277 |
'syt@logilab.fr']) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
278 |
# email content should be indexed on the user |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
279 |
rset = cnx.execute('CWUser X WHERE X has_text "thenault"') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
280 |
self.assertEqual(rset.rows, [[e.eid]]) |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
281 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
282 |
def test_copy_to_system_source(self): |
8921
da46624a0880
[test/ldap] small improvement to ldapfeed unit tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8917
diff
changeset
|
283 |
"make sure we can 'convert' an LDAP user into a system one" |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
284 |
with self.admin_access.repo_cnx() as cnx: |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
285 |
source = self.repo.source_by_uri('ldap') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
286 |
eid = cnx.execute('CWUser X WHERE X login %(login)s', {'login': 'syt'})[0][0] |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
287 |
cnx.execute('SET X cw_source S WHERE X eid %(x)s, S name "system"', {'x': eid}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
288 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
289 |
rset = cnx.execute('CWUser X WHERE X login %(login)s', {'login': 'syt'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
290 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
291 |
e = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
292 |
self.assertEqual(e.eid, eid) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
293 |
self.assertEqual(e.cw_source[0].name, 'system') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
294 |
self.assertTrue(e.creation_date) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
295 |
self.assertTrue(e.modification_date) |
11755
96ced95e4002
[ldap] Stop using entities table in ldap source authentication and parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11719
diff
changeset
|
296 |
source.pull_data(cnx, raise_on_error=True) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
297 |
rset = cnx.execute('CWUser X WHERE X login %(login)s', {'login': 'syt'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
298 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
299 |
self.assertTrue(self.repo.system_source.authenticate(cnx, 'syt', password='syt')) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
300 |
# make sure the pull from ldap have not "reverted" user as a ldap-feed user |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
301 |
# and that the password stored in the system source is not empty or so |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
302 |
user = cnx.execute('CWUser U WHERE U login "syt"').get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
303 |
user.cw_clear_all_caches() |
11764
6ab14a1afb65
[entity] Reimplement and deprecate entity.cw_metainformation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11762
diff
changeset
|
304 |
self.assertEqual(user.cw_source[0].name, 'system') |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
305 |
cu = cnx.system_sql("SELECT cw_upassword FROM cw_cwuser WHERE cw_login='syt';") |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
306 |
pwd = cu.fetchall()[0][0] |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
307 |
self.assertIsNotNone(pwd) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
308 |
self.assertTrue(str(pwd)) |
8921
da46624a0880
[test/ldap] small improvement to ldapfeed unit tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8917
diff
changeset
|
309 |
|
12153
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
310 |
def test_bad_config(self): |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
311 |
with self.admin_access.cnx() as cnx: |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
312 |
|
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
313 |
with self.assertRaises(ValidationError) as cm: |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
314 |
cnx.create_entity( |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
315 |
'CWSource', name=u'erroneous', type=u'ldapfeed', parser=u'ldapfeed', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
316 |
url=u'ldap.com', config=CONFIG_LDAPFEED) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
317 |
self.assertIn('badly formatted url', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
318 |
str(cm.exception)) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
319 |
cnx.rollback() |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
320 |
|
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
321 |
with self.assertRaises(ValidationError) as cm: |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
322 |
cnx.create_entity( |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
323 |
'CWSource', name=u'erroneous', type=u'ldapfeed', parser=u'ldapfeed', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
324 |
url=u'http://ldap.com', config=CONFIG_LDAPFEED) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
325 |
self.assertIn('unsupported protocol', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
326 |
str(cm.exception)) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
327 |
cnx.rollback() |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
328 |
|
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
329 |
with self.assertRaises(ValidationError) as cm: |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
330 |
cnx.create_entity( |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
331 |
'CWSource', name=u'erroneous', type=u'ldapfeed', parser=u'ldapfeed', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
332 |
url=u'ldap://host1\nldap://host2', config=CONFIG_LDAPFEED) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
333 |
self.assertIn('can only have one url', |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
334 |
str(cm.exception)) |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
335 |
cnx.rollback() |
0ff0aff4413d
[sources] Check source's url attribute value on creation/modification
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12151
diff
changeset
|
336 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
337 |
|
11719
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
338 |
class LDAPGeneratePwdTC(LDAPFeedTestBase): |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
339 |
""" |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
340 |
A testcase for password generation on CWUser when none is imported |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
341 |
""" |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
342 |
|
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
343 |
def setup_database(self): |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
344 |
with self.admin_access.repo_cnx() as cnx: |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
345 |
lfsource = cnx.repo.source_by_uri('ldap') |
11719
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
346 |
del lfsource.user_attrs['userPassword'] |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
347 |
super(LDAPGeneratePwdTC, self).setup_database() |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
348 |
|
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
349 |
def test_no_password(self): |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
350 |
with self.admin_access.repo_cnx() as cnx: |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
351 |
cu = cnx.system_sql("SELECT cw_upassword FROM cw_cwuser WHERE cw_login='syt';") |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
352 |
pwd = cu.fetchall()[0][0] |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
353 |
self.assertTrue(pwd) |
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
354 |
|
36443c44b9a5
[ldapfeed] Fix crash when user's password has to be generated
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11718
diff
changeset
|
355 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
356 |
class LDAPFeedUserDeletionTC(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
357 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
358 |
A testcase for situations where users are deleted from or |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
359 |
unavailable in the LDAP database. |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
360 |
""" |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
361 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
362 |
def test_a_filter_inactivate(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
363 |
""" filtered out people should be deactivated, unable to authenticate """ |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
364 |
with self.admin_access.repo_cnx() as cnx: |
12136
6069ee7d4824
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12132
diff
changeset
|
365 |
source = ldapsource(cnx) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
366 |
# filter with adim's phone number |
12143
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
367 |
options = {'user-filter': '(%s=%s)' % ('telephonenumber', '109')} |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
368 |
update_source_config(source, options) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
369 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
370 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
371 |
self.pull(cnx) |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
372 |
repo_source = self.repo.source_by_uri('ldap') |
12044
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
373 |
self.assertRaises(AuthenticationError, |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
374 |
repo_source.authenticate, cnx, 'syt', 'syt') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
375 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
376 |
self.assertEqual(cnx.execute('Any N WHERE U login "syt", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
377 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
378 |
'deactivated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
379 |
self.assertEqual(cnx.execute('Any N WHERE U login "adim", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
380 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
381 |
'activated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
382 |
# unfilter, syt should be activated again |
12143
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
383 |
source = ldapsource(cnx) |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
384 |
options = {'user-filter': u''} |
a446124bcf3c
[server] Drop update_config method of source
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12136
diff
changeset
|
385 |
update_source_config(source, options) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
386 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
387 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
388 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
389 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
390 |
self.assertEqual(cnx.execute('Any N WHERE U login "syt", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
391 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
392 |
'activated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
393 |
self.assertEqual(cnx.execute('Any N WHERE U login "adim", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
394 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
395 |
'activated') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
396 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
397 |
def test_delete(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
398 |
""" delete syt, pull, check deactivation, repull, |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
399 |
read syt, pull, check activation |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
400 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
401 |
self.delete_ldap_entry('uid=syt,ou=People,dc=cubicweb,dc=test') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
402 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
403 |
self.pull(cnx) |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
404 |
source = self.repo.source_by_uri('ldap') |
12044
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
405 |
self.assertRaises(AuthenticationError, |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
406 |
source.authenticate, cnx, 'syt', 'syt') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
407 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
408 |
self.assertEqual(cnx.execute('Any N WHERE U login "syt", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
409 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
410 |
'deactivated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
411 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
412 |
# check that it doesn't choke |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
413 |
self.pull(cnx) |
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
414 |
# reinsert syt |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
415 |
self.add_ldap_entry('uid=syt,ou=People,dc=cubicweb,dc=test', |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
416 |
{'objectClass': ['OpenLDAPperson', 'posixAccount', 'top', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
417 |
'shadowAccount'], |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
418 |
'cn': 'Sylvain Thenault', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
419 |
'sn': 'Thenault', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
420 |
'gidNumber': '1004', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
421 |
'uid': 'syt', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
422 |
'homeDirectory': '/home/syt', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
423 |
'shadowFlag': '134538764', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
424 |
'uidNumber': '1004', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
425 |
'givenName': 'Sylvain', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
426 |
'telephoneNumber': '106', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
427 |
'displayName': 'sthenault', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
428 |
'gecos': 'Sylvain Thenault', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
429 |
'mail': ['sylvain.thenault@logilab.fr', 'syt@logilab.fr'], |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
430 |
'userPassword': 'syt', |
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
431 |
}) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
432 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
433 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
434 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
435 |
self.assertEqual(cnx.execute('Any N WHERE U login "syt", ' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
436 |
'U in_state S, S name N').rows[0][0], |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
437 |
'activated') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
438 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
439 |
def test_reactivate_deleted(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
440 |
# test reactivating BY HAND the user isn't enough to |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
441 |
# authenticate, as the native source refuse to authenticate |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
442 |
# user from other sources |
12146
d540defa0591
[server] Add source_by_eid and source_by_uri methods to repository
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12143
diff
changeset
|
443 |
repo_source = self.repo.source_by_uri('ldap') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
444 |
self.delete_ldap_entry('uid=syt,ou=People,dc=cubicweb,dc=test') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
445 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
446 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
447 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
448 |
# reactivate user (which source is still ldap-feed) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
449 |
user = cnx.execute('CWUser U WHERE U login "syt"').get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
450 |
user.cw_adapt_to('IWorkflowable').fire_transition('activate') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
451 |
cnx.commit() |
12044
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
452 |
self.assertRaises(AuthenticationError, |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
453 |
repo_source.authenticate, cnx, 'syt', 'syt') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
454 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
455 |
# ok now let's try to make it a system user |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
456 |
cnx.execute('SET X cw_source S WHERE X eid %(x)s, S name "system"', {'x': user.eid}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
457 |
cnx.commit() |
12044
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
458 |
# and that we can now authenticate again |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
459 |
self.assertRaises(AuthenticationError, |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
460 |
repo_source.authenticate, cnx, 'syt', 'toto') |
70bb46dfa87b
[repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12042
diff
changeset
|
461 |
self.assertTrue(self.repo.authenticate_user(cnx, 'syt', password='syt')) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
462 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
463 |
|
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
464 |
class LDAPFeedGroupTC(LDAPFeedTestBase): |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
465 |
""" |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
466 |
A testcase for group support in ldapfeed. |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
467 |
""" |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
468 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
469 |
def test_groups_exist(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
470 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
471 |
rset = cnx.execute('CWGroup X WHERE X name "dir"') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
472 |
self.assertEqual(len(rset), 1) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
473 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
474 |
rset = cnx.execute('CWGroup X WHERE X cw_source S, S name "ldap"') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
475 |
self.assertEqual(len(rset), 2) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
476 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
477 |
def test_group_deleted(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
478 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
479 |
rset = cnx.execute('CWGroup X WHERE X name "dir"') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
480 |
self.assertEqual(len(rset), 1) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
481 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
482 |
def test_in_group(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
483 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
484 |
rset = cnx.execute('CWGroup X WHERE X name %(name)s', {'name': 'dir'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
485 |
dirgroup = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
486 |
self.assertEqual(set(['syt', 'adim']), |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
487 |
set([u.login for u in dirgroup.reverse_in_group])) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
488 |
rset = cnx.execute('CWGroup X WHERE X name %(name)s', {'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
489 |
logilabgroup = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
490 |
self.assertEqual(set(['adim']), |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
491 |
set([u.login for u in logilabgroup.reverse_in_group])) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
492 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
493 |
def test_group_member_added(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
494 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
495 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
496 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
497 |
rset = cnx.execute('Any L WHERE U in_group G, G name %(name)s, U login L', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
498 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
499 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
500 |
self.assertEqual(rset[0][0], 'adim') |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
501 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
502 |
try: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
503 |
self.update_ldap_entry('cn=logilab,ou=Group,dc=cubicweb,dc=test', |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
504 |
{('add', 'memberUid'): ['syt']}) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
505 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
506 |
self.pull(cnx) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
507 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
508 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
509 |
rset = cnx.execute('Any L WHERE U in_group G, G name %(name)s, U login L', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
510 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
511 |
self.assertEqual(len(rset), 2) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
512 |
members = set([u[0] for u in rset]) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
513 |
self.assertEqual(set(['adim', 'syt']), members) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
514 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
515 |
finally: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
516 |
# back to normal ldap setup |
11270
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
517 |
self.terminate_slapd() |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
518 |
self.init_slapd() |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
519 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
520 |
def test_group_member_deleted(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
521 |
with self.repo.internal_cnx() as cnx: |
10905
adffe1308a8f
[test/ldap] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10768
diff
changeset
|
522 |
self.pull(cnx) # ensure we are sync'ed |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
523 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
524 |
rset = cnx.execute('Any L WHERE U in_group G, G name %(name)s, U login L', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
525 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
526 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
527 |
self.assertEqual(rset[0][0], 'adim') |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
528 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
529 |
try: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
530 |
self.update_ldap_entry('cn=logilab,ou=Group,dc=cubicweb,dc=test', |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
531 |
{('delete', 'memberUid'): ['adim']}) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
532 |
with self.repo.internal_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
533 |
self.pull(cnx) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
534 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
535 |
with self.admin_access.repo_cnx() as cnx: |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
536 |
rset = cnx.execute('Any L WHERE U in_group G, G name %(name)s, U login L', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
537 |
{'name': 'logilab'}) |
10908
f80428f94761
[server/test] display rset content on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10905
diff
changeset
|
538 |
self.assertEqual(len(rset), 0, rset.rows) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
539 |
finally: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
540 |
# back to normal ldap setup |
11270
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
541 |
self.terminate_slapd() |
a9dc97b87ced
[devtools] set .config in setUpClass instead of using a cache in a classproperty
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
11195
diff
changeset
|
542 |
self.init_slapd() |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
543 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
544 |
|
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
545 |
if __name__ == '__main__': |
10572
2d5f7780b568
[test] kill unused lgc.testlib imports
Julien Cristau <julien.cristau@logilab.fr>
parents:
9794
diff
changeset
|
546 |
from logilab.common.testlib import unittest_main |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
547 |
unittest_main() |