0001-fix-crypted-password-importion-9588.patch
mandayejs/mandaye/management/commands/migrate-ldap-users.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import json |
4 | 4 |
import ldif |
5 |
import logging |
|
5 | 6 | |
6 | 7 |
from django.core.management.base import BaseCommand, CommandError |
7 | 8 |
from django.db import IntegrityError |
... | ... | |
9 | 10 | |
10 | 11 |
from mandayejs.mandaye.models import UserCredentials |
11 | 12 | |
13 |
logger = logging.getLogger(__name__) |
|
12 | 14 | |
13 | 15 |
class Command(BaseCommand): |
14 | 16 |
args = '<ldif_file>' |
... | ... | |
33 | 35 |
for data in parsed_data: |
34 | 36 |
data = { k : ''.join(v) for k,v in data.items()} |
35 | 37 |
try: |
36 |
user = User(username=data.get('idpUniqueID'), last_name=data.get('spLogin')) |
|
38 |
user, created = User.objects.get_or_create(username=data.get('idpUniqueID'), |
|
39 |
last_name=data.get('spLogin')) |
|
37 | 40 |
user.save() |
38 | 41 |
uc = UserCredentials(user=user, locators=json.loads(data.get('spPostValues'))) |
42 |
uc.decrypt() |
|
39 | 43 |
uc.save() |
40 | 44 |
self.stdout.write('{idpUniqueID} imported'.format(**data)) |
45 |
logger.debug('{idpUniqueID} imported'.format(**data)) |
|
41 | 46 |
except (IntegrityError,) as e: |
47 |
logger.debug(e) |
|
42 | 48 |
continue |
43 | 49 |
tests/tests.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
from django.conf import settings |
4 | 4 |
from django.contrib.auth.models import User |
5 |
from django.core.management import call_command |
|
5 | 6 | |
6 | 7 |
from mandayejs.mandaye.models import UserCredentials |
7 | 8 | |
8 | 9 |
pytestmark = pytest.mark.django_db |
9 | 10 | |
11 |
# Encryption/Decryption |
|
12 | ||
10 | 13 |
def create_user(**kwargs): |
11 | 14 |
password = kwargs.pop('password', None) or kwargs.get('username') |
12 | 15 |
user, created = User.objects.get_or_create(**kwargs) |
... | ... | |
41 | 44 |
assert decrypted.get('password') == 'john password' |
42 | 45 |
|
43 | 46 | |
47 |
# Migration |
|
48 | ||
49 | ||
50 | ||
44 | 51 |
def test_migrate_users_command(): |
45 |
pass |
|
52 | ||
53 |
args = ['tests/ldap_users.txt',] |
|
54 |
opts = {} |
|
55 |
call_command('migrate-ldap-users', *args, **opts) |
|
56 | ||
57 |
credentials = UserCredentials.objects.filter(user__last_name__in=[ |
|
58 |
'ldap_user1', |
|
59 |
'ldap_user2', |
|
60 |
'ldap_user3' |
|
61 |
]) |
|
62 | ||
63 |
assert len(credentials) == 3 |
|
64 | ||
65 |
for cred in credentials: |
|
66 |
assert cred.to_login_info(decrypt=True)['#txtCode'] == 'password_{}'.format(cred.user.last_name) |
|
67 | ||
46 |
- |