[Rt-commit] rt branch 5.0/validator-inconsitent-owner-in-merged-tickets created. rt-5.0.3-451-gc5dd66c158

BPS Git Server git at git.bestpractical.com
Wed Apr 12 14:41:59 UTC 2023


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt".

The branch, 5.0/validator-inconsitent-owner-in-merged-tickets has been created
        at  c5dd66c1585ae8ccb62c1fadd024b10aa14f101c (commit)

- Log -----------------------------------------------------------------
commit c5dd66c1585ae8ccb62c1fadd024b10aa14f101c
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Wed Apr 12 21:45:00 2023 +0800

    Fix inconsistent noramlized owner group member for merged tickets
    
    For merged tickets, Load method automatically loads the ticket these
    tickets are merged into. Here we want to load the original ticket
    object.

diff --git a/sbin/rt-validator.in b/sbin/rt-validator.in
index 115d026562..fb7ef118ba 100644
--- a/sbin/rt-validator.in
+++ b/sbin/rt-validator.in
@@ -696,7 +696,8 @@ END
                 "Found a ticket that has no normalized Owner group member."
             );
             my $ticket = RT::Ticket->new(RT->SystemUser);
-            $ticket->Load($ticket_id);
+            # Use LoadByCols in case it's a merged ticket
+            $ticket->LoadByCols( id => $ticket_id );
             my $group = $ticket->RoleGroup('Owner');
             $group->_AddMember(
                 PrincipalId       => $owner_id,
@@ -733,7 +734,8 @@ END
                 "Found a ticket that has inconsistent normalized Owner group member."
             );
             my $ticket = RT::Ticket->new(RT->SystemUser);
-            $ticket->Load($ticket_id);
+            # Use LoadByCols in case it's a merged ticket
+            $ticket->LoadByCols( id => $ticket_id );
             my $group = $ticket->RoleGroup('Owner');
 
             # remove all current members

commit bb915e530c2669ff811261587ed16e3caaadf820
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Wed Apr 12 21:59:00 2023 +0800

    Test validator to fix inconsistent owner group member for merged tickets

diff --git a/t/validator/role_groups.t b/t/validator/role_groups.t
index 5fe56634d9..edbab1e5c0 100644
--- a/t/validator/role_groups.t
+++ b/t/validator/role_groups.t
@@ -32,4 +32,26 @@ for my $object ( $ticket, $ticket->QueueObj ) {
     }
 }
 
+diag "Test inconsistent owner group member of merged tickets";
+my $root           = RT::Test->load_or_create_user( Name => 'root' );
+my $nobody         = RT->Nobody->Id;
+my $ticket_2       = RT::Test->create_ticket( Queue => 'General', Subject => 'test ticket 2', Owner => $root->Id );
+my $ticket_2_id    = $ticket_2->Id;
+my $owner_group_id = $ticket_2->RoleGroup('Owner')->Id;
+$RT::Handle->dbh->do("UPDATE GroupMembers SET MemberId=$nobody WHERE GroupId=$owner_group_id");
+my ( $ret, $msg ) = $ticket_2->MergeInto( $ticket->Id );
+ok( $ret, $msg );
+
+( $ecode, $res ) = RT::Test->run_validator( resolve => 1 );
+isnt( $ecode, 0, 'non-zero exit code' );
+
+like(
+    $res,
+    qr/The owner of ticket #$ticket_2_id is inconsistent/,
+    'Found/Fixed error of owner group member of merged ticket'
+);
+RT::Test->db_is_valid;
+$ticket_2->LoadByCols( id => $ticket_2_id );
+is( $ticket_2->RoleGroup('Owner')->UserMembersObj->First->id, $root->id, 'Fixed owner group member of merged ticket' );
+
 done_testing;

-----------------------------------------------------------------------


hooks/post-receive
-- 
rt


More information about the rt-commit mailing list