@@ -777,6 +777,71 @@ def test_account_invitations_list_shows_linked_organization_name_for_org_invites
777777 self .assertContains (response , "Visibility Org" )
778778 self .assertContains (response , reverse ("organization-detail" , args = [organization .pk ]))
779779
780+ def test_account_invitations_list_shows_accepted_username_link_for_accepted_invitation (self ) -> None :
781+ self ._login_as_freeipa_user ("committee" )
782+
783+ invitation = AccountInvitation .objects .create (
784+ email = "accepted@example.com" ,
785+ full_name = "Accepted User" ,
786+ note = "" ,
787+ invited_by_username = "committee" ,
788+ accepted_at = timezone .now (),
789+ accepted_username = "accepteduser" ,
790+ freeipa_matched_usernames = ["accepteduser" ],
791+ )
792+
793+ with (
794+ patch ("core.backends.FreeIPAUser.get" , return_value = self ._committee_user ()),
795+ patch (
796+ "core.views_account_invitations.confirm_existing_usernames" ,
797+ return_value = (invitation .freeipa_matched_usernames , True ),
798+ ),
799+ ):
800+ response = self .client .get (reverse ("account-invitations" ))
801+
802+ self .assertEqual (response .status_code , 200 )
803+ self .assertContains (response , "Accepted" )
804+ accepted_user_url = reverse ("user-profile" , kwargs = {"username" : "accepteduser" })
805+ self .assertContains (
806+ response ,
807+ f'<div class="text-muted small">as <a href="{ accepted_user_url } ">accepteduser</a></div>' ,
808+ html = True ,
809+ )
810+
811+ def test_account_invitations_list_shows_accepted_username_link_for_multiple_matches (self ) -> None :
812+ self ._login_as_freeipa_user ("committee" )
813+
814+ invitation = AccountInvitation .objects .create (
815+ email = "multi@example.com" ,
816+ full_name = "Matched User" ,
817+ note = "" ,
818+ invited_by_username = "committee" ,
819+ accepted_at = timezone .now (),
820+ accepted_username = "accepteduser" ,
821+ freeipa_matched_usernames = ["alphauser" , "accepteduser" ],
822+ )
823+
824+ with (
825+ patch ("core.backends.FreeIPAUser.get" , return_value = self ._committee_user ()),
826+ patch (
827+ "core.views_account_invitations.confirm_existing_usernames" ,
828+ return_value = (invitation .freeipa_matched_usernames , True ),
829+ ),
830+ ):
831+ response = self .client .get (reverse ("account-invitations" ))
832+
833+ self .assertEqual (response .status_code , 200 )
834+ self .assertContains (response , "Accepted (multiple matches)" )
835+ self .assertContains (response , "alphauser" )
836+ self .assertContains (response , "accepteduser" )
837+ self .assertContains (response , reverse ("user-profile" , kwargs = {"username" : "alphauser" }))
838+ accepted_user_url = reverse ("user-profile" , kwargs = {"username" : "accepteduser" })
839+ self .assertContains (
840+ response ,
841+ f'<div class="text-muted small">as <a href="{ accepted_user_url } ">accepteduser</a></div>' ,
842+ html = True ,
843+ )
844+
780845 @override_settings (PUBLIC_BASE_URL = "" )
781846 def test_build_invitation_email_context_raises_when_public_base_url_missing (self ) -> None :
782847 invitation = AccountInvitation .objects .create (
0 commit comments