root/branches/release-41/t/54-usersgroupsroles.t @ 2679

Revision 2679, 7.3 kB (checked in by bchoate, 17 months ago)

Test updates to skip when appropriate.

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