|
31 | 31 |
|
32 | 32 | import synapse.rest.admin |
33 | 33 | from synapse.api.constants import LoginType, Membership |
34 | | -from synapse.api.errors import Codes, HttpResponseException |
| 34 | +from synapse.api.errors import Codes, HttpResponseException, SynapseError |
35 | 35 | from synapse.appservice import ApplicationService |
36 | 36 | from synapse.rest import admin |
37 | 37 | from synapse.rest.client import account, login, register, room |
@@ -515,20 +515,24 @@ def test_deactivate_erase_account(self) -> None: |
515 | 515 | user_id, create_requester(user_id), "http://test/Kermit.jpg" |
516 | 516 | ) |
517 | 517 | ) |
518 | | - self.erase(mxid, tok) |
| 518 | + self.deactivate(mxid, tok, erase=True) |
519 | 519 |
|
520 | 520 | store = self.hs.get_datastores().main |
521 | 521 |
|
522 | 522 | # Check that the user has been marked as deactivated. |
523 | 523 | self.assertTrue(self.get_success(store.get_user_deactivated_status(mxid))) |
524 | 524 |
|
525 | | - # On deactivation with 'erase', a displayname and avatar_url are set to an empty |
526 | | - # string through the handler, but are turned into `None` for the database |
527 | | - display_name = self.get_success(profile_handler.get_displayname(user_id)) |
528 | | - assert display_name is None, f"{display_name}" |
| 525 | + # On deactivation with 'erase', the entire database row is erased. Both of these |
| 526 | + # should raise a 404(Not Found) SynapseError |
| 527 | + display_name_failure = self.get_failure( |
| 528 | + profile_handler.get_displayname(user_id), SynapseError |
| 529 | + ) |
| 530 | + assert display_name_failure.value.code == HTTPStatus.NOT_FOUND |
529 | 531 |
|
530 | | - avatar_url = self.get_success(profile_handler.get_avatar_url(user_id)) |
531 | | - assert avatar_url is None, f"{avatar_url}" |
| 532 | + avatar_url_failure = self.get_failure( |
| 533 | + profile_handler.get_avatar_url(user_id), SynapseError |
| 534 | + ) |
| 535 | + assert avatar_url_failure.value.code == HTTPStatus.NOT_FOUND |
532 | 536 |
|
533 | 537 | # Check that this access token has been invalidated. |
534 | 538 | channel = self.make_request("GET", "account/whoami", access_token=tok) |
@@ -558,18 +562,22 @@ def test_deactivate_erase_account_with_disabled_profile_changes(self) -> None: |
558 | 562 | ) |
559 | 563 |
|
560 | 564 | # self.get_success(profile_handler.set_displayname(user_id, create_requester(user_id), )) |
561 | | - self.erase(mxid, tok) |
| 565 | + self.deactivate(mxid, tok, erase=True) |
562 | 566 |
|
563 | 567 | # Check that the user has been marked as deactivated. |
564 | 568 | self.assertTrue(self.get_success(store.get_user_deactivated_status(mxid))) |
565 | 569 |
|
566 | | - # On deactivation with 'erase', a displayname and avatar_url are set to an empty |
567 | | - # string through the handler, but are turned into `None` for the database |
568 | | - display_name = self.get_success(profile_handler.get_displayname(user_id)) |
569 | | - assert display_name is None, f"{display_name}" |
| 570 | + # On deactivation with 'erase', the entire database row is erased. Both of these |
| 571 | + # should raise a 404(Not Found) SynapseError |
| 572 | + display_name_failure = self.get_failure( |
| 573 | + profile_handler.get_displayname(user_id), SynapseError |
| 574 | + ) |
| 575 | + assert display_name_failure.value.code == HTTPStatus.NOT_FOUND |
570 | 576 |
|
571 | | - avatar_url = self.get_success(profile_handler.get_avatar_url(user_id)) |
572 | | - assert avatar_url is None, f"{avatar_url}" |
| 577 | + avatar_url_failure = self.get_failure( |
| 578 | + profile_handler.get_avatar_url(user_id), SynapseError |
| 579 | + ) |
| 580 | + assert avatar_url_failure.value.code == HTTPStatus.NOT_FOUND |
573 | 581 |
|
574 | 582 | # Check that this access token has been invalidated. |
575 | 583 | channel = self.make_request("GET", "account/whoami", access_token=tok) |
@@ -773,28 +781,14 @@ def test_background_update_deletes_deactivated_users_server_side_backup_keys( |
773 | 781 | ) |
774 | 782 | self.assertEqual(len(res2), 4) |
775 | 783 |
|
776 | | - def deactivate(self, user_id: str, tok: str) -> None: |
777 | | - request_data = { |
778 | | - "auth": { |
779 | | - "type": "m.login.password", |
780 | | - "user": user_id, |
781 | | - "password": "test", |
782 | | - }, |
783 | | - "erase": False, |
784 | | - } |
785 | | - channel = self.make_request( |
786 | | - "POST", "account/deactivate", request_data, access_token=tok |
787 | | - ) |
788 | | - self.assertEqual(channel.code, 200, channel.json_body) |
789 | | - |
790 | | - def erase(self, user_id: str, tok: str) -> None: |
| 784 | + def deactivate(self, user_id: str, tok: str, erase: bool = False) -> None: |
791 | 785 | request_data = { |
792 | 786 | "auth": { |
793 | 787 | "type": "m.login.password", |
794 | 788 | "user": user_id, |
795 | 789 | "password": "test", |
796 | 790 | }, |
797 | | - "erase": True, |
| 791 | + "erase": erase, |
798 | 792 | } |
799 | 793 | channel = self.make_request( |
800 | 794 | "POST", "account/deactivate", request_data, access_token=tok |
|
0 commit comments