|
| 1 | +from datetime import datetime |
| 2 | + |
1 | 3 | import django.core.mail |
2 | 4 | import pytest |
3 | 5 | from allauth.account.models import EmailAddress |
@@ -410,6 +412,51 @@ def test_crm_user_update_profile_information_and_email_address(request, client): |
410 | 412 | assert "Confirmez votre adresse email" in django.core.mail.outbox[0].subject |
411 | 413 |
|
412 | 414 |
|
| 415 | +@pytest.mark.django_db |
| 416 | +def test_crm_user_update_cant_update_disabled_user(request, client): |
| 417 | + site = get_current_site(request) |
| 418 | + |
| 419 | + organization = baker.make(addressbook_models.Organization) |
| 420 | + |
| 421 | + end_user = baker.make(auth_models.User, is_active=False) |
| 422 | + end_user.profile.sites.add(site) |
| 423 | + profile = end_user.profile |
| 424 | + profile.deleted = datetime(2022, 12, 12) |
| 425 | + profile.save() |
| 426 | + |
| 427 | + url = reverse("crm-user-update", args=[end_user.id]) |
| 428 | + data = { |
| 429 | + "username": "johndoe@example.org", |
| 430 | + "first_name": "John", |
| 431 | + "last_name": "DOE", |
| 432 | + "phone_no": "01 23 45 67 89", |
| 433 | + "organization": organization.id, |
| 434 | + "organization_position": "staff", |
| 435 | + } |
| 436 | + |
| 437 | + with login(client) as user: |
| 438 | + assign_perm("use_crm", user, site) |
| 439 | + client.post(url, data=data) |
| 440 | + |
| 441 | + # user data is updated |
| 442 | + end_user.refresh_from_db() |
| 443 | + |
| 444 | + assert end_user.username != data["username"] |
| 445 | + assert end_user.email != data["username"] |
| 446 | + assert end_user.first_name != data["first_name"] |
| 447 | + assert end_user.last_name != data["last_name"] |
| 448 | + |
| 449 | + # profile is updated |
| 450 | + profile.refresh_from_db() |
| 451 | + |
| 452 | + assert profile.phone_no != data["phone_no"] |
| 453 | + assert profile.organization != organization |
| 454 | + assert profile.organization_position != data["organization_position"] |
| 455 | + |
| 456 | + # the confirmation email has been sent |
| 457 | + assert len(django.core.mail.outbox) == 0 |
| 458 | + |
| 459 | + |
413 | 460 | @pytest.mark.django_db |
414 | 461 | def test_crm_user_update_profile_information_with_email_address_exists(request, client): |
415 | 462 | site = get_current_site(request) |
@@ -569,7 +616,8 @@ def test_crm_user_deactivate_processing(request, client): |
569 | 616 | # user data is updated |
570 | 617 | end_user.refresh_from_db() |
571 | 618 | assert end_user.is_active is False |
572 | | - assert end_user.profile.deleted is not None |
| 619 | + assert end_user.profile.deleted is None |
| 620 | + assert end_user.profile.disabled is not None |
573 | 621 |
|
574 | 622 |
|
575 | 623 | ######################################################################## |
@@ -623,7 +671,35 @@ def test_crm_user_reactivate_processing(request, client): |
623 | 671 | # user data is updated |
624 | 672 | end_user.refresh_from_db() |
625 | 673 | assert end_user.is_active is True |
626 | | - assert end_user.profile.deleted is None |
| 674 | + assert end_user.profile.disabled is None |
| 675 | + |
| 676 | + |
| 677 | +@pytest.mark.django_db |
| 678 | +def test_crm_user_reactivate_only_active(request, client): |
| 679 | + site = get_current_site(request) |
| 680 | + |
| 681 | + disabled = datetime(2025, 9, 12) |
| 682 | + deleted = datetime(2026, 1, 16) |
| 683 | + |
| 684 | + end_user = baker.make(auth_models.User, is_active=False) |
| 685 | + end_user.profile.sites.add(site) |
| 686 | + end_user.profile.disabled = disabled |
| 687 | + end_user.profile.deleted = deleted |
| 688 | + end_user.profile.save() |
| 689 | + |
| 690 | + url = reverse("crm-user-reactivate", args=[end_user.id]) |
| 691 | + |
| 692 | + with login(client) as user: |
| 693 | + assign_perm("use_crm", user, site) |
| 694 | + response = client.post(url) |
| 695 | + |
| 696 | + assert response.status_code == 400 |
| 697 | + |
| 698 | + # user data is updated |
| 699 | + end_user.refresh_from_db() |
| 700 | + assert end_user.is_active is False |
| 701 | + assert end_user.profile.disabled is not None |
| 702 | + assert end_user.profile.deleted is not None |
627 | 703 |
|
628 | 704 |
|
629 | 705 | ######################################################################## |
|
0 commit comments