[Rt-commit] rt branch, 4.4/serialize-json-initialdata, updated. rt-4.4.1-358-g79a7c65
Shawn Moore
shawn at bestpractical.com
Mon Mar 20 18:07:11 EDT 2017
The branch, 4.4/serialize-json-initialdata has been updated
via 79a7c65b0fdc6fcb093454eaa37879c15ef9c897 (commit)
from 0f6da4e08f74651dd293198901ce28f70b3b5e1c (commit)
Summary of changes:
lib/RT/Migrate/Serializer/JSON.pm | 16 ++++++++++++++
t/api/initialdata-roundtrip.t | 44 +++++++++++++++++++++++++++++++++++++++
2 files changed, 60 insertions(+)
- Log -----------------------------------------------------------------
commit 79a7c65b0fdc6fcb093454eaa37879c15ef9c897
Author: Shawn M Moore <shawn at bestpractical.com>
Date: Mon Mar 20 22:07:02 2017 +0000
Roundtrip group members (with tests)
diff --git a/lib/RT/Migrate/Serializer/JSON.pm b/lib/RT/Migrate/Serializer/JSON.pm
index e7e2a7a..452fd09 100644
--- a/lib/RT/Migrate/Serializer/JSON.pm
+++ b/lib/RT/Migrate/Serializer/JSON.pm
@@ -297,6 +297,21 @@ sub CanonicalizeUsers {
}
}
+sub CanonicalizeGroupMembers {
+ my $self = shift;
+
+ for my $record (values %{ $self->{Records}{'RT::GroupMember'} }) {
+ my $group = $self->_GetObjectByRef(delete $record->{GroupId});
+ $record->{Group} = $group->Object->Name;
+
+ my $member = $self->_GetObjectByRef(delete $record->{MemberId});
+ $record->{Class} = ref($member->Object);
+ $record->{Name} = $member->Object->Name;
+
+ delete @$record{qw/Creator Created LastUpdated LastUpdatedBy/};
+ }
+}
+
sub CanonicalizeObjects {
my $self = shift;
@@ -361,6 +376,7 @@ sub WriteFile {
$self->CanonicalizeObjects;
$self->CanonicalizeACLs;
$self->CanonicalizeUsers;
+ $self->CanonicalizeGroupMembers;
delete $self->{Records}{'RT::Attribute'};
diff --git a/t/api/initialdata-roundtrip.t b/t/api/initialdata-roundtrip.t
index 48c4079..96b89ff 100644
--- a/t/api/initialdata-roundtrip.t
+++ b/t/api/initialdata-roundtrip.t
@@ -27,6 +27,50 @@ my @tests = (
is($group->Domain, 'UserDefined', 'Domain');
},
},
+ {
+ name => 'Group membership',
+ create => sub {
+ my $outer = RT::Group->new(RT->SystemUser);
+ my ($ok, $msg) = $outer->CreateUserDefinedGroup(Name => 'Outer');
+ ok($ok, $msg);
+
+ my $inner = RT::Group->new(RT->SystemUser);
+ ($ok, $msg) = $inner->CreateUserDefinedGroup(Name => 'Inner');
+ ok($ok, $msg);
+
+ my $user = RT::User->new(RT->SystemUser);
+ ($ok, $msg) = $user->Create(Name => 'User');
+ ok($ok, $msg);
+
+ ($ok, $msg) = $outer->AddMember($inner->PrincipalId);
+ ok($ok, $msg);
+
+ ($ok, $msg) = $inner->AddMember($user->PrincipalId);
+ ok($ok, $msg);
+ },
+ present => sub {
+ my $outer = RT::Group->new(RT->SystemUser);
+ $outer->LoadUserDefinedGroup('Outer');
+ ok($outer->Id, 'Loaded group');
+ is($outer->Name, 'Outer', 'Group name');
+
+ my $inner = RT::Group->new(RT->SystemUser);
+ $inner->LoadUserDefinedGroup('Inner');
+ ok($inner->Id, 'Loaded group');
+ is($inner->Name, 'Inner', 'Group name');
+
+ my $user = RT::User->new(RT->SystemUser);
+ $user->Load('User');
+ ok($user->Id, 'Loaded user');
+ is($user->Name, 'User', 'User name');
+
+ ok($outer->HasMember($inner->PrincipalId), 'outer hasmember inner');
+ ok($inner->HasMember($user->PrincipalId), 'inner hasmember user');
+ ok($outer->HasMemberRecursively($user->PrincipalId), 'outer hasmember user recursively');
+ ok(!$outer->HasMember($user->PrincipalId), 'outer does not have member user directly');
+ ok(!$inner->HasMember($outer->PrincipalId), 'inner does not have member outer');
+ },
+ },
{
name => 'Custom field on two queues',
-----------------------------------------------------------------------
More information about the rt-commit
mailing list