author | Julien Cristau <julien.cristau@logilab.fr> |
Tue, 06 Oct 2015 11:19:37 +0200 | |
changeset 10781 | e2ab20561932 |
parent 10768 | 99689a5862ea |
child 10905 | adffe1308a8f |
permissions | -rw-r--r-- |
9754
54f422ee3deb
[test] drop unused import
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9677
diff
changeset
|
1 |
# copyright 2003-2014 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/>. |
6434
d99b742a9c49
[test] fix ldap test when executed from certain hosts
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
18 |
"""cubicweb.server.sources.ldapusers unit and functional tests""" |
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
19 |
from __future__ import print_function |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
20 |
|
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
21 |
import os |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
22 |
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
|
23 |
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
|
24 |
import time |
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
|
25 |
from os.path import join, exists |
6887
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
26 |
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
|
27 |
import tempfile |
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
|
28 |
|
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
29 |
from six import string_types |
10609
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10589
diff
changeset
|
30 |
from six.moves import range |
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10589
diff
changeset
|
31 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
32 |
from cubicweb import AuthenticationError |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
33 |
from cubicweb.devtools.testlib import CubicWebTC |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
34 |
from cubicweb.devtools.repotest import RQLGeneratorTC |
6986
18343456ee49
[ldap test] use get_available_port from cw.devtools.httptest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6985
diff
changeset
|
35 |
from cubicweb.devtools.httptest import get_available_port |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
36 |
|
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
37 |
|
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
38 |
CONFIG_LDAPFEED = u''' |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
39 |
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
|
40 |
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
|
41 |
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
|
42 |
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
|
43 |
''' |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
44 |
CONFIG_LDAPUSER = u''' |
8917
685b93559e33
[ldapfeed] add support for multiple email addresses from ldap
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8904
diff
changeset
|
45 |
user-base-dn=ou=People,dc=cubicweb,dc=test |
685b93559e33
[ldapfeed] add support for multiple email addresses from ldap
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8904
diff
changeset
|
46 |
user-attrs-map=uid=login,mail=email,userPassword=upassword |
685b93559e33
[ldapfeed] add support for multiple email addresses from ldap
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8904
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 |
|
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
|
51 |
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
|
52 |
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
|
53 |
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
|
54 |
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
|
55 |
slapdconf = join(config.apphome, "slapd.conf") |
10614
57dfde80df11
[py3k] file → open
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10612
diff
changeset
|
56 |
confin = open(join(config.apphome, "slapd.conf.in")).read() |
57dfde80df11
[py3k] file → open
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10612
diff
changeset
|
57 |
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
|
58 |
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
|
59 |
confstream.close() |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
60 |
# 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
|
61 |
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
|
62 |
config.info('Initing ldap database') |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
63 |
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
|
64 |
PIPE = subprocess.PIPE |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
65 |
slapproc = subprocess.Popen(cmdline, stdout=PIPE, stderr=PIPE) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
66 |
stdout, stderr = slapproc.communicate() |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
67 |
if slapproc.returncode: |
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
68 |
print('slapadd returned with status: %s' |
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
69 |
% slapproc.returncode, file=sys.stderr) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
70 |
sys.stdout.write(stdout) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
71 |
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
|
72 |
|
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
73 |
#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
|
74 |
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
|
75 |
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
|
76 |
ldapuri = 'ldap://%s' % host |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
77 |
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
|
78 |
config.info('Starting slapd:', ' '.join(cmdline)) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
79 |
PIPE = subprocess.PIPE |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
80 |
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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
else: |
72d7feeb071e
[tests] make ldap source test run its own local (Open)LDAP server
David Douard <david.douard@logilab.fr>
parents:
6781
diff
changeset
|
85 |
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
|
86 |
(" ".join(cmdline), os.getcwd())) |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
87 |
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
|
88 |
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
|
89 |
|
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
|
90 |
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
|
91 |
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
|
92 |
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
|
93 |
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
|
94 |
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
|
95 |
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
|
96 |
else: |
18343456ee49
[ldap test] use get_available_port from cw.devtools.httptest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6985
diff
changeset
|
97 |
import os, 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
|
98 |
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
|
99 |
stdout, stderr = cls.slapd_process.communicate() |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
100 |
if cls.slapd_process.returncode: |
10589
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
101 |
print('slapd returned with status: %s' |
7c23b7de2b8d
[py3k] print function
Samuel Trégouët <samuel.tregouet@logilab.fr>
parents:
9794
diff
changeset
|
102 |
% cls.slapd_process.returncode, file=sys.stderr) |
8902
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
103 |
sys.stdout.write(stdout) |
9edfa3660bf4
[ldap] quieter tests
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8901
diff
changeset
|
104 |
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
|
105 |
config.info('DONE') |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
106 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
107 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
108 |
class LDAPFeedTestBase(CubicWebTC): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
109 |
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
|
110 |
loglevel = 'ERROR' |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
111 |
|
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
112 |
@classmethod |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
113 |
def setUpClass(cls): |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
114 |
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
|
115 |
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
|
116 |
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
|
117 |
|
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
118 |
@classmethod |
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
119 |
def tearDownClass(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
|
120 |
terminate_slapd(cls) |
8681
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
121 |
try: |
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
122 |
shutil.rmtree(cls._tmpdir) |
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
123 |
except: |
48731a0d3df8
[ldap test] move the slapd database directory to a tempdir (closes #2583993)
David Douard <david.douard@logilab.fr>
parents:
8680
diff
changeset
|
124 |
pass |
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
125 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
126 |
@classmethod |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
127 |
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
|
128 |
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
|
129 |
url=URL, config=CONFIG_LDAPFEED) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
130 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
131 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
132 |
return cls.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
133 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
134 |
@classmethod |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
135 |
def pull(self, cnx): |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
136 |
lfsource = cnx.repo.sources_by_uri['ldap'] |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
137 |
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
|
138 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
139 |
return stats |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
140 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
141 |
def setup_database(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
142 |
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
|
143 |
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
|
144 |
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
|
145 |
'WHERE S is CWSource, S name "ldap"', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
146 |
{"conf": CONFIG_LDAPFEED, 'url': URL} ) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
147 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
148 |
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
|
149 |
self.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
150 |
|
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
151 |
def add_ldap_entry(self, dn, mods): |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
152 |
""" |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
153 |
add an LDAP entity |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
154 |
""" |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
155 |
modcmd = ['dn: %s'%dn, 'changetype: add'] |
10662
10942ed172de
[py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10651
diff
changeset
|
156 |
for key, values in mods.items(): |
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
157 |
if isinstance(values, string_types): |
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
158 |
values = [values] |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
159 |
for value in values: |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
160 |
modcmd.append('%s: %s'%(key, value)) |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
161 |
self._ldapmodify(modcmd) |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
162 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
163 |
def delete_ldap_entry(self, dn): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
164 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
165 |
delete an LDAP entity |
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 |
modcmd = ['dn: %s'%dn, 'changetype: delete'] |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
168 |
self._ldapmodify(modcmd) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
169 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
170 |
def update_ldap_entry(self, dn, mods): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
171 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
172 |
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
|
173 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
174 |
modcmd = ['dn: %s'%dn, 'changetype: modify'] |
10662
10942ed172de
[py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10651
diff
changeset
|
175 |
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
|
176 |
modcmd.append('%s: %s' % (kind, key)) |
10612
84468b90e9c1
[py3k] basestring → six.string_types
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
177 |
if isinstance(values, string_types): |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
178 |
values = [values] |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
179 |
for value in values: |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
180 |
modcmd.append('%s: %s'%(key, value)) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
181 |
modcmd.append('-') |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
182 |
self._ldapmodify(modcmd) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
183 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
184 |
def _ldapmodify(self, modcmd): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
185 |
uri = self.repo.sources_by_uri['ldap'].urls[0] |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
186 |
updatecmd = ['ldapmodify', '-H', uri, '-v', '-x', '-D', |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
187 |
'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
|
188 |
PIPE = subprocess.PIPE |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
189 |
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
|
190 |
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
|
191 |
p.stdin.close() |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
192 |
if p.wait(): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
193 |
raise RuntimeError("ldap update failed: %s"%('\n'.join(p.stderr.readlines()))) |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
194 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
195 |
class CheckWrongGroup(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
196 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
197 |
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
|
198 |
created from LDAP is wrongly configured. |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
199 |
""" |
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
|
200 |
|
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
|
201 |
def test_wrong_group(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
202 |
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
|
203 |
source = cnx.execute('CWSource S WHERE S type="ldapfeed"').get_entity(0,0) |
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
|
204 |
config = source.repo_source.check_config(source) |
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
|
205 |
# inject a bogus group here, along with at least a valid one |
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
|
206 |
config['user-default-group'] = ('thisgroupdoesnotexists','users') |
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
|
207 |
source.repo_source.update_config(source, config) |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
208 |
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
|
209 |
# here we emitted an error log entry |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
210 |
stats = source.repo_source.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
|
211 |
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
|
212 |
|
8901
661b6aaac240
[test/ldap source] better source naming, some cleanups (prepares #2528116)
Jérôme Roy
parents:
8885
diff
changeset
|
213 |
|
8430
5bee87a14bb1
fix ldap removal handling in ldapfeed (closes #2376625 and #2385133)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8387
diff
changeset
|
214 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
215 |
class LDAPFeedUserTC(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
216 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
217 |
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
|
218 |
""" |
8684
6c7c2a02c9a0
[ldap test] fix bad merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8683
diff
changeset
|
219 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
220 |
def assertMetadata(self, entity): |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
221 |
self.assertTrue(entity.creation_date) |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
222 |
self.assertTrue(entity.modification_date) |
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
223 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
224 |
def test_authenticate(self): |
8901
661b6aaac240
[test/ldap source] better source naming, some cleanups (prepares #2528116)
Jérôme Roy
parents:
8885
diff
changeset
|
225 |
source = self.repo.sources_by_uri['ldap'] |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
226 |
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
|
227 |
# 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
|
228 |
self.assertRaises(AuthenticationError, |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
229 |
source.authenticate, cnx, 'toto', 'toto') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
230 |
self.assertTrue(source.authenticate(cnx, 'syt', 'syt')) |
9794
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
231 |
sessionid = self.repo.connect('syt', password='syt') |
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
232 |
self.assertTrue(sessionid) |
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
233 |
self.repo.close(sessionid) |
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
234 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
235 |
def test_base(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
236 |
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
|
237 |
# check a known one |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
238 |
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
|
239 |
e = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
240 |
self.assertEqual(e.login, 'syt') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
241 |
e.complete() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
242 |
self.assertMetadata(e) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
243 |
self.assertEqual(e.firstname, None) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
244 |
self.assertEqual(e.surname, None) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
245 |
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
|
246 |
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
|
247 |
self.assertEqual(e.created_by, ()) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
248 |
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
|
249 |
addresses.sort() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
250 |
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
|
251 |
addresses) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
252 |
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
|
253 |
'syt@logilab.fr']) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
254 |
# 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
|
255 |
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
|
256 |
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
|
257 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
258 |
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
|
259 |
"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
|
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 |
source = self.repo.sources_by_uri['ldap'] |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
262 |
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
|
263 |
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
|
264 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
265 |
source.reset_caches() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
266 |
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
|
267 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
268 |
e = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
269 |
self.assertEqual(e.eid, eid) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
270 |
self.assertEqual(e.cw_metainformation(), {'source': {'type': u'native', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
271 |
'uri': u'system', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
272 |
'use-cwuri-as-url': False}, |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
273 |
'type': 'CWUser', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
274 |
'extid': None}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
275 |
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
|
276 |
self.assertTrue(e.creation_date) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
277 |
self.assertTrue(e.modification_date) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
278 |
source.pull_data(cnx) |
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 login %(login)s', {'login': 'syt'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
280 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
281 |
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
|
282 |
# 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
|
283 |
self.assertEqual(e.cw_metainformation(), {'source': {'type': u'native', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
284 |
'uri': u'system', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
285 |
'use-cwuri-as-url': False}, |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
286 |
'type': 'CWUser', |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
287 |
'extid': None}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
288 |
# 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
|
289 |
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
|
290 |
user.cw_clear_all_caches() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
291 |
pwd = cnx.system_sql("SELECT cw_upassword FROM cw_cwuser WHERE cw_login='syt';").fetchall()[0][0] |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
292 |
self.assertIsNotNone(pwd) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
293 |
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
|
294 |
|
8188
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
295 |
|
1867e252e487
[repository] ldap-feed source. Closes #2086984
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8146
diff
changeset
|
296 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
297 |
class LDAPFeedUserDeletionTC(LDAPFeedTestBase): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
298 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
299 |
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
|
300 |
unavailable in the LDAP database. |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
301 |
""" |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
302 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
303 |
def test_a_filter_inactivate(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
304 |
""" 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
|
305 |
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
|
306 |
source = cnx.execute('CWSource S WHERE S type="ldapfeed"').get_entity(0,0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
307 |
config = source.repo_source.check_config(source) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
308 |
# filter with adim's phone number |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
309 |
config['user-filter'] = u'(%s=%s)' % ('telephoneNumber', '109') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
310 |
source.repo_source.update_config(source, config) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
311 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
312 |
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
|
313 |
self.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
314 |
self.assertRaises(AuthenticationError, self.repo.connect, 'syt', password='syt') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
315 |
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
|
316 |
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
|
317 |
'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
|
318 |
'deactivated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
319 |
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
|
320 |
'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
|
321 |
'activated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
322 |
# unfilter, syt should be activated again |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
323 |
config['user-filter'] = u'' |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
324 |
source.repo_source.update_config(source, config) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
325 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
326 |
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
|
327 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
328 |
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
|
329 |
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
|
330 |
'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
|
331 |
'activated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
332 |
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
|
333 |
'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
|
334 |
'activated') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
335 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
336 |
def test_delete(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
337 |
""" delete syt, pull, check deactivation, repull, |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
338 |
read syt, pull, check activation |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
339 |
""" |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
340 |
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
|
341 |
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
|
342 |
self.pull(cnx) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
343 |
self.assertRaises(AuthenticationError, self.repo.connect, 'syt', password='syt') |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
344 |
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
|
345 |
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
|
346 |
'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
|
347 |
'deactivated') |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
348 |
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
|
349 |
# check that it doesn't choke |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
350 |
self.pull(cnx) |
9142
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
351 |
# reinsert syt |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
352 |
self.add_ldap_entry('uid=syt,ou=People,dc=cubicweb,dc=test', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
353 |
{ 'objectClass': ['OpenLDAPperson','posixAccount','top','shadowAccount'], |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
354 |
'cn': 'Sylvain Thenault', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
355 |
'sn': 'Thenault', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
356 |
'gidNumber': '1004', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
357 |
'uid': 'syt', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
358 |
'homeDirectory': '/home/syt', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
359 |
'shadowFlag': '134538764', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
360 |
'uidNumber': '1004', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
361 |
'givenName': 'Sylvain', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
362 |
'telephoneNumber': '106', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
363 |
'displayName': 'sthenault', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
364 |
'gecos': 'Sylvain Thenault', |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
365 |
'mail': ['sylvain.thenault@logilab.fr','syt@logilab.fr'], |
41fb930dc751
[test/ldap] fix ldap tests
David Douard <david.douard@logilab.fr>
parents:
8959
diff
changeset
|
366 |
'userPassword': 'syt', |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
367 |
}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
368 |
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
|
369 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
370 |
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
|
371 |
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
|
372 |
'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
|
373 |
'activated') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
374 |
|
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
375 |
def test_reactivate_deleted(self): |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
376 |
# 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
|
377 |
# 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
|
378 |
# user from other sources |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
379 |
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
|
380 |
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
|
381 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
382 |
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
|
383 |
# 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
|
384 |
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
|
385 |
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
|
386 |
cnx.commit() |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
387 |
with self.assertRaises(AuthenticationError): |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
388 |
self.repo.connect('syt', password='syt') |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
389 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
390 |
# 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
|
391 |
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
|
392 |
cnx.commit() |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
393 |
# and that we can now authenticate again |
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
394 |
self.assertRaises(AuthenticationError, self.repo.connect, 'syt', password='toto') |
9794
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
395 |
sessionid = self.repo.connect('syt', password='syt') |
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
396 |
self.assertTrue(sessionid) |
61da050d11e4
[tests/ldap] don't leak sessions
Julien Cristau <julien.cristau@logilab.fr>
parents:
9793
diff
changeset
|
397 |
self.repo.close(sessionid) |
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
398 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
399 |
|
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
400 |
class LDAPFeedGroupTC(LDAPFeedTestBase): |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
401 |
""" |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
402 |
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
|
403 |
""" |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
404 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
405 |
def test_groups_exist(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
406 |
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
|
407 |
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
|
408 |
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
|
409 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
410 |
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
|
411 |
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
|
412 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
413 |
def test_group_deleted(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
414 |
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
|
415 |
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
|
416 |
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
|
417 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
418 |
def test_in_group(self): |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
419 |
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
|
420 |
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
|
421 |
dirgroup = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
422 |
self.assertEqual(set(['syt', 'adim']), |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
423 |
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
|
424 |
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
|
425 |
logilabgroup = rset.get_entity(0, 0) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
426 |
self.assertEqual(set(['adim']), |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
427 |
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
|
428 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
429 |
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
|
430 |
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
|
431 |
self.pull(cnx) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
432 |
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
|
433 |
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
|
434 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
435 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
436 |
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
|
437 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
438 |
try: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
439 |
self.update_ldap_entry('cn=logilab,ou=Group,dc=cubicweb,dc=test', |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
440 |
{('add', 'memberUid'): ['syt']}) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
441 |
time.sleep(1.1) # timestamps precision is 1s |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
442 |
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
|
443 |
self.pull(cnx) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
444 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
445 |
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
|
446 |
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
|
447 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
448 |
self.assertEqual(len(rset), 2) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
449 |
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
|
450 |
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
|
451 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
452 |
finally: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
453 |
# back to normal ldap setup |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
454 |
self.tearDownClass() |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
455 |
self.setUpClass() |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
456 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
457 |
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
|
458 |
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
|
459 |
self.pull(cnx) # ensure we are sync'ed |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
460 |
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
|
461 |
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
|
462 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
463 |
self.assertEqual(len(rset), 1) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
464 |
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
|
465 |
|
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
466 |
try: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
467 |
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
|
468 |
{('delete', 'memberUid'): ['adim']}) |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
469 |
time.sleep(1.1) # timestamps precision is 1s |
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
470 |
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
|
471 |
self.pull(cnx) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
472 |
|
9793
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
473 |
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
|
474 |
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
|
475 |
{'name': 'logilab'}) |
52647b05bda8
[tests/ldap] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9754
diff
changeset
|
476 |
self.assertEqual(len(rset), 0) |
8922
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
477 |
finally: |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
478 |
# back to normal ldap setup |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
479 |
self.tearDownClass() |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
480 |
self.setUpClass() |
715b9eec6da9
[ldapfeed] Add support for LDAP groups (closes #2528116)
David Douard <david.douard@logilab.fr>
parents:
8921
diff
changeset
|
481 |
|
8904
030463e2b620
[ldap] Major test refactoring
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8903
diff
changeset
|
482 |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1398
diff
changeset
|
483 |
|
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
484 |
if __name__ == '__main__': |
10572
2d5f7780b568
[test] kill unused lgc.testlib imports
Julien Cristau <julien.cristau@logilab.fr>
parents:
9794
diff
changeset
|
485 |
from logilab.common.testlib import unittest_main |
360
600dd2fe8b40
backport unittest_ldapuser
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
486 |
unittest_main() |