root/branches/boomer/t/54-usersgroupsroles.t @ 1098

Revision 1098, 7.1 kB (checked in by hachi, 2 years ago)

Branching for boomer from release-19, rev 62318

  • Property svn:keywords set to Id Revision
Line 
1#!/usr/bin/perl
2
3use strict;
4use Test::More qw(no_plan);
5
6BEGIN {
7    $ENV{MT_CONFIG} = 'mysql-test.cfg';
8}
9use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib';
10use MT::Test qw(:db);
11use MT;
12use MT::Blog;
13use MT::Author;
14use MT::Role;
15use MT::Association;
16use MT::Group;
17use MT::Request;
18
19my $r = MT::Request->instance;
20
21# Users:
22
23my $user_brad = new MT::Author();
24$user_brad->name('Brad');
25$user_brad->set_password('(none)');
26$user_brad->save or die $user_brad->errstr;
27
28my $user_chris = new MT::Author();
29$user_chris->name('Chris');
30$user_chris->set_password('(none)');
31$user_chris->save;
32
33my $user_garth = new MT::Author();
34$user_garth->name('Garth');
35$user_garth->set_password('(none)');
36$user_garth->save;
37
38my $user_gene = new MT::Author();
39$user_gene->name('Gene');
40$user_gene->set_password('(none)');
41$user_gene->save;
42
43my $user_jason = new MT::Author;
44$user_jason->set_password('(none)');
45$user_jason->name('Jason');
46$user_jason->is_superuser(1);
47$user_jason->save;
48
49my $user_lilia = new MT::Author();
50$user_lilia->name('Lilia');
51$user_lilia->set_password('(none)');
52$user_lilia->save;
53
54my $user_luke = new MT::Author();
55$user_luke->name('Luke');
56$user_luke->set_password('(none)');
57$user_luke->save;
58
59my $user_mark = new MT::Author();
60$user_mark->name('Mark');
61$user_mark->set_password('(none)');
62$user_mark->save;
63
64my $user_melody = new MT::Author();
65$user_melody->name('Melody');
66$user_melody->set_password('(none)');
67$user_melody->save;
68
69my $user_randy = new MT::Author();
70$user_randy->name('Randy');
71$user_randy->set_password('(none)');
72$user_randy->save;
73
74my $user_walt = new MT::Author;
75$user_walt->name('Walt');
76$user_walt->set_password('(none)');
77$user_walt->save;
78
79# Groups
80
81my $group_designers = new MT::Group;
82$group_designers->name('Designers');
83$group_designers->save;
84$group_designers->add_user($user_lilia);
85$group_designers->add_user($user_walt);
86$group_designers->add_user($user_luke);
87
88my $group_engineers = new MT::Group;
89$group_engineers->name('Engineers');
90$group_engineers->save;
91$group_engineers->add_user($user_brad);
92$group_engineers->add_user($user_gene);
93$group_engineers->add_user($user_randy);
94$group_engineers->add_user($user_mark);
95$group_engineers->add_user($user_garth);
96
97my $group_it = new MT::Group;
98$group_it->name('IT');
99$group_it->add_user($user_jason);
100
101my $group_managers = new MT::Group;
102$group_managers->name('Managers');
103$group_managers->save;
104$group_managers->add_user($user_brad);
105$group_managers->add_user($user_garth);
106$group_managers->add_user($user_randy);
107
108my $group_mt = new MT::Group;
109$group_mt->name('Movable Type');
110$group_mt->save;
111$group_mt->add_user($user_brad);
112$group_mt->add_user($user_gene);
113$group_mt->add_user($user_luke);
114$group_mt->add_user($user_chris);
115
116my $group_qa = new MT::Group;
117$group_qa->name('QA');
118$group_qa->save;
119$group_qa->add_user($user_chris);
120
121my $group_typepad = new MT::Group;
122$group_typepad->name('TypePad');
123$group_typepad->save;
124$group_typepad->add_user($user_garth);
125$group_typepad->add_user($user_mark);
126$group_typepad->add_user($user_walt);
127
128my $group_vox = new MT::Group;
129$group_vox->name('Vox');
130$group_vox->save;
131$group_vox->add_user($user_lilia);
132$group_vox->add_user($user_randy);
133
134my $role_design = new MT::Role;
135$role_design->name('Custom Designer');
136$role_design->set_these_permissions('edit_templates');
137$role_design->save;
138
139my $role_admin = new MT::Role;
140$role_admin->name('Custom Administrator');
141$role_admin->set_these_permissions('administer_blog');
142$role_admin->save;
143
144my $role_writer = new MT::Role;
145$role_writer->name('Custom Writer');
146$role_writer->set_these_permissions('create_post');
147$role_writer->save;
148
149# Blogs
150
151my $blog_mt = new MT::Blog;
152$blog_mt->name('Movable Type');
153$blog_mt->save;
154
155my $blog_vox = new MT::Blog;
156$blog_vox->name('Vox Themes');
157$blog_vox->save;
158
159my $blog_qa = new MT::Blog;
160$blog_qa->name('QA Central');
161$blog_qa->save;
162
163my $blog_db = new MT::Blog;
164$blog_db->name('Daily Build');
165$blog_db->save;
166
167my $blog_mgt = new MT::Blog;
168$blog_mgt->name('Management');
169$blog_mgt->save;
170
171my $blog_tp = new MT::Blog;
172$blog_tp->name('TypePadding');
173$blog_tp->save;
174
175# Associations
176
177MT::Association->link($blog_mt => $group_mt => $role_writer);
178MT::Association->link($blog_mt => $user_brad => $role_design);
179MT::Association->link($blog_vox => $group_vox => $role_writer);
180MT::Association->link($blog_qa => $group_qa => $role_writer);
181MT::Association->link($blog_db => $group_engineers => $role_writer);
182MT::Association->link($blog_mgt => $group_managers => $role_writer);
183MT::Association->link($blog_tp => $group_typepad => $role_writer);
184
185MT::Association->link($blog_mt => $group_designers => $role_design);
186MT::Association->link($blog_vox => $group_designers => $role_design);
187MT::Association->link($blog_qa => $group_designers => $role_design);
188MT::Association->link($blog_db => $group_designers => $role_design);
189MT::Association->link($blog_mgt => $group_designers => $role_design);
190MT::Association->link($blog_tp => $group_designers => $role_design);
191
192# Test 1 -- All blogs that designers have access to
193
194my @blogs;
195if (my $blog_iter = $group_designers->blog_iter()) {
196    while (my $blog = $blog_iter->()) {
197        push @blogs, $blog;
198    }
199}
200is(@blogs, 6);
201
202# Blogs Walt has access to (all, through design group)
203
204@blogs = ();
205if (my $blog_iter = $user_walt->blog_iter()) {
206    while (my $blog = $blog_iter->()) {
207        push @blogs, $blog;
208    }
209}
210is(@blogs, 6);
211
212# Blogs Brad has access to (MT, Daily Build, Managers)
213
214@blogs = ();
215if (my $blog_iter = $user_brad->blog_iter()) {
216    while (my $blog = $blog_iter->()) {
217        push @blogs, $blog;
218    }
219}
220is(@blogs, 3);
221
222# Blog count for Melody
223
224@blogs = ();
225if (my $blog_iter = $user_melody->blog_iter()) {
226    while (my $blog = $blog_iter->()) {
227        push @blogs, $blog;
228    }
229}
230is(@blogs, 0);
231
232# Can Brad edit templates the Daily Build blog?
233
234ok(!$user_brad->permissions($blog_db)->can_edit_templates);
235
236# Can Walt edit MT templates? Yes
237
238ok($user_walt->permissions($blog_mt)->can_edit_templates);
239
240MT::Association->link($user_walt => $role_writer => $blog_mt);
241
242$r->reset();
243
244# Can Walt write to MT? Yes
245
246ok($user_walt->permissions($blog_mt)->can_create_post);
247
248MT::Association->unlink($user_walt => $role_writer => $blog_mt);
249
250$r->reset();
251
252# Can Walt write to MT? No
253
254ok(!$user_walt->permissions($blog_mt)->can_create_post);
255
256$group_designers->remove_user($user_walt);
257
258$r->reset();
259
260# Can Walt edit MT templates? No
261
262ok(!$user_walt->permissions($blog_mt)->can_edit_templates);
263
264$group_designers->add_user($user_walt);
265
266$r->reset();
267
268# Can Walt edit MT templates? Yes
269
270ok($user_walt->permissions($blog_mt)->can_edit_templates);
271
272# Disable designer group
273
274$group_designers->status(MT::Group::INACTIVE());
275$group_designers->save;
276
277$r->reset();
278
279# Can Walt edit MT templates? No
280
281ok(!$user_walt->permissions($blog_mt)->can_edit_templates);
282ok(!$user_luke->permissions($blog_vox)->can_edit_templates);
283ok(!$user_lilia->permissions($blog_tp)->can_edit_templates);
284
285# Enable designer group
286
287$group_designers->status(MT::Group::ACTIVE());
288$group_designers->save;
289
290$r->reset();
291
292# Can Walt edit MT templates? Yes
293
294ok($user_walt->permissions($blog_mt)->can_edit_templates);
295ok($user_luke->permissions($blog_vox)->can_edit_templates);
296ok($user_lilia->permissions($blog_tp)->can_edit_templates);
Note: See TracBrowser for help on using the browser.