3 * Copyright 2011, Roland Mas
5 * This file is part of FusionForge.
7 * FusionForge is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published
9 * by the Free Software Foundation; either version 2 of the License,
10 * or (at your option) any later version.
12 * FusionForge is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 require_once dirname(dirname(__FILE__)).'/Testing/SeleniumGforge.php';
24 class Search extends FForge_SeleniumTestCase
32 $this->populateStandardTemplate();
33 $this->createProject('projecta');
34 $this->createProject('projectb');
37 $this->waitForPageToLoad("30000");
38 $this->type("//input[@name='words']", "XXXXXXXXXXXXXXXXXXXXXXXXXX");
39 $this->click("//input[@name='Search']");
40 $this->waitForPageToLoad("30000");
41 $this->assertTrue($this->isTextPresent("No matches found for"));
44 $this->waitForPageToLoad("30000");
45 $this->type("//input[@name='words']", "projecta");
46 $this->click("//input[@name='Search']");
47 $this->waitForPageToLoad("30000");
48 $this->assertFalse($this->isTextPresent("No matches found for"));
49 $this->assertTrue($this->isTextPresent("public description for projecta"));
50 $this->assertFalse($this->isTextPresent("public description for projectb"));
53 $this->waitForPageToLoad("30000");
54 $this->type("//input[@name='words']", "description public projecta");
55 $this->click("//input[@name='Search']");
56 $this->waitForPageToLoad("30000");
57 $this->assertFalse($this->isTextPresent("No matches found for"));
58 $this->assertTrue($this->isTextPresent("public description for projecta"));
59 $this->assertFalse($this->isTextPresent("public description for projectb"));
62 $this->waitForPageToLoad("30000");
63 $this->type("//input[@name='words']", "description 'public projecta'");
64 $this->click("//input[@name='Search']");
65 $this->waitForPageToLoad("30000");
66 $this->assertTrue($this->isTextPresent("No matches found for"));
67 $this->assertFalse($this->isTextPresent("public description for projecta"));
68 $this->assertFalse($this->isTextPresent("public description for projectb"));
71 $this->waitForPageToLoad("30000");
72 $this->type("//input[@name='words']", "description public");
73 $this->click("//input[@name='Search']");
74 $this->waitForPageToLoad("30000");
75 $this->assertFalse($this->isTextPresent("No matches found for"));
76 $this->assertTrue($this->isTextPresent("public description for projecta"));
77 $this->assertTrue($this->isTextPresent("public description for projectb"));
80 $this->waitForPageToLoad("30000");
81 $this->type("//input[@name='words']", "'description public'");
82 $this->click("//input[@name='Search']");
83 $this->waitForPageToLoad("30000");
84 $this->assertTrue($this->isTextPresent("No matches found for"));
85 $this->assertFalse($this->isTextPresent("public description for projecta"));
86 $this->assertFalse($this->isTextPresent("public description for projectb"));
89 $this->waitForPageToLoad("30000");
90 $this->type("//input[@name='words']", "'public description'");
91 $this->click("//input[@name='Search']");
92 $this->waitForPageToLoad("30000");
93 $this->assertFalse($this->isTextPresent("No matches found for"));
94 $this->assertTrue($this->isTextPresent("public description for projecta"));
95 $this->assertTrue($this->isTextPresent("public description for projectb"));
101 $this->createUser('ratatouille');
102 $this->createUser('tartiflette');
105 $this->waitForPageToLoad("30000");
106 $this->select("type_of_search", "label=People");
107 $this->type("//input[@name='words']", "tartempion");
108 $this->click("//input[@name='Search']");
109 $this->waitForPageToLoad("30000");
110 $this->assertTrue($this->isTextPresent("No matches found for"));
111 $this->assertFalse($this->isTextPresent("ratatouille Lastname"));
112 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
115 $this->waitForPageToLoad("30000");
116 $this->select("type_of_search", "label=People");
117 $this->type("//input[@name='words']", "ratatouille");
118 $this->click("//input[@name='Search']");
119 $this->waitForPageToLoad("30000");
120 $this->assertFalse($this->isTextPresent("No matches found for"));
121 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
122 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
125 $this->waitForPageToLoad("30000");
126 $this->select("type_of_search", "label=People");
127 $this->type("//input[@name='words']", "lastname ratatouille");
128 $this->click("//input[@name='Search']");
129 $this->waitForPageToLoad("30000");
130 $this->assertFalse($this->isTextPresent("No matches found for"));
131 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
132 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
135 $this->waitForPageToLoad("30000");
136 $this->select("type_of_search", "label=People");
137 $this->type("//input[@name='words']", "Lastname");
138 $this->click("//input[@name='Search']");
139 $this->waitForPageToLoad("30000");
140 $this->assertFalse($this->isTextPresent("No matches found for"));
141 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
142 $this->assertTrue($this->isTextPresent("tartiflette Lastname"));
145 * Search inside a project
148 // Prepare some tracker items
150 $this->gotoProject('projecta');
151 $this->clickAndWait("link=Tracker");
152 $this->clickAndWait("link=Bugs");
153 $this->clickAndWait("link=Submit New");
154 $this->type("summary", "Bug1 boustrophédon");
155 $this->type("details", "brebis outremanchienne");
156 $this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
157 $this->clickAndWait("link=Bug1 boustrophédon");
158 $this->type("details", 'Ceci était une référence au « Génie des Alpages », rien à voir avec Charlie - also, ZONGO');
159 $this->clickAndWait("submit");
160 $this->clickAndWait("link=Bug1 boustrophédon");
161 $this->type("details", 'This is the needle');
162 $this->clickAndWait("submit");
164 $this->clickAndWait("link=Tracker");
165 $this->clickAndWait("link=Patches");
166 $this->clickAndWait("link=Submit New");
167 $this->type("summary", "Bug2 gratapouêt");
168 $this->type("details", "cthulhu was here - also, ZONGO");
169 $this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
170 $this->clickAndWait("link=Bug2 gratapouêt");
171 $this->type("details", 'Charlie was here too');
172 $this->clickAndWait("submit");
174 // Search in trackers
176 $this->select("type_of_search", "label=This project's trackers");
177 $this->type("//input[@name='words']", "brebis");
178 $this->clickAndWait("//input[@name='Search']");
179 $this->assertFalse($this->isTextPresent("No matches found for"));
180 $this->assertTrue($this->isTextPresent("Bug1"));
182 $this->select("type_of_search", "label=This project's trackers");
183 $this->type("//input[@name='words']", "alpages");
184 $this->clickAndWait("//input[@name='Search']");
185 $this->assertFalse($this->isTextPresent("No matches found for"));
186 $this->assertTrue($this->isTextPresent("Bug1"));
188 $this->select("type_of_search", "label=This project's trackers");
189 $this->type("//input[@name='words']", "boustrophédon brebis alpages");
190 $this->clickAndWait("//input[@name='Search']");
191 $this->assertFalse($this->isTextPresent("No matches found for"));
192 $this->assertTrue($this->isTextPresent("Bug1"));
194 $this->select("type_of_search", "label=This project's trackers");
195 $this->type("//input[@name='words']", "'boustrophédon brebis'");
196 $this->clickAndWait("//input[@name='Search']");
197 $this->assertTrue($this->isTextPresent("No matches found for"));
198 $this->assertFalse($this->isTextPresent("Bug1"));
200 $this->select("type_of_search", "label=This project's trackers");
201 $this->type("//input[@name='words']", "boustrophédon cthulhu");
202 $this->clickAndWait("//input[@name='Search']");
203 $this->assertTrue($this->isTextPresent("No matches found for"));
204 $this->assertFalse($this->isTextPresent("Bug1"));
205 $this->assertFalse($this->isTextPresent("Bug2"));
207 // Search in one particular tracker
209 $this->select("type_of_search", "label=This project's trackers");
210 $this->type("//input[@name='words']", "charlie");
211 $this->clickAndWait("//input[@name='Search']");
212 $this->assertFalse($this->isTextPresent("No matches found for"));
213 $this->assertTrue($this->isTextPresent("Bug1"));
214 $this->assertTrue($this->isTextPresent("Bug2"));
216 $this->clickAndWait("link=Tracker");
217 $this->clickAndWait("link=Bugs");
218 $this->select("type_of_search", "label=Bugs");
219 $this->type("//input[@name='words']", "charlie");
220 $this->clickAndWait("//input[@name='Search']");
221 $this->assertFalse($this->isTextPresent("No matches found for"));
222 $this->assertTrue($this->isTextPresent("Bug1"));
223 $this->assertFalse($this->isTextPresent("Bug2"));
225 $this->clickAndWait("link=Bugs");
226 $this->select("type_of_search", "label=Bugs");
227 $this->type("//input[@name='words']", "charlie boustrophédon");
228 $this->clickAndWait("//input[@name='Search']");
229 $this->assertFalse($this->isTextPresent("No matches found for"));
230 $this->assertTrue($this->isTextPresent("Bug1"));
231 $this->assertFalse($this->isTextPresent("Bug2"));
235 $this->gotoProject('projecta');
236 $this->clickAndWait("link=Tasks");
237 $this->clickAndWait("link=To Do");
238 $this->clickAndWait("link=Add Task");
239 $this->type("summary", "Task1 the brain");
240 $this->type("details", "The same thing we do every night, Pinky - try to take over the world! - also, ZONGO");
241 $this->type("hours", "199");
242 $this->clickAndWait("submit");
244 $this->clickAndWait("link=Task1 the brain");
245 $this->type("details", 'This is the needle for tasks');
246 $this->clickAndWait("submit");
248 $this->gotoProject('projecta');
249 $this->clickAndWait("link=Next Release");
250 $this->clickAndWait("link=Add Task");
251 $this->type("summary", "Task2 world peace");
252 $this->type("details", "Otherwise WW4 will be fought with sticks - also, ZONGO");
253 $this->type("hours", "199");
254 $this->clickAndWait("submit");
258 $this->select("type_of_search", "label=This project's tasks");
259 $this->type("//input[@name='words']", "pinky");
260 $this->clickAndWait("//input[@name='Search']");
261 $this->assertFalse($this->isTextPresent("No matches found for"));
262 $this->assertTrue($this->isTextPresent("Task1"));
264 $this->select("type_of_search", "label=This project's tasks");
265 $this->type("//input[@name='words']", "cortex");
266 $this->clickAndWait("//input[@name='Search']");
267 $this->assertTrue($this->isTextPresent("No matches found for"));
268 $this->assertFalse($this->isTextPresent("Task1"));
270 $this->select("type_of_search", "label=This project's tasks");
271 $this->type("//input[@name='words']", "brain pinky needle");
272 $this->clickAndWait("//input[@name='Search']");
273 $this->assertFalse($this->isTextPresent("No matches found for"));
274 $this->assertTrue($this->isTextPresent("Task1"));
276 // Post some messages in a forum
278 $this->gotoProject('projecta');
279 $this->clickAndWait("link=Forums");
280 $this->clickAndWait("link=open-discussion");
281 $this->click("link=Start New Thread");
282 $this->waitForPageToLoad("30000");
283 $this->type("subject", "Message1 in a bottle");
284 $this->type("body", "ninetynine of them on Charlie's wall - also, ZONGO");
285 $this->clickAndWait("submit");
286 $this->clickAndWait("link=Message1 in a bottle");
287 $this->clickAndWait("link=[ reply ]");
288 $this->type("subject", "Message2 in a bottle");
289 $this->type("body", "ninetyeight of them in Charlie's fridge - also, ZONGO");
290 $this->clickAndWait("submit");
291 $this->clickAndWait("link=Message1 in a bottle");
292 $this->clickAndWait("link=[ reply ]");
293 $this->type("subject", "Message3 in a bottle");
294 $this->type("body", "and yet another needle for the forums - also, ZONGO");
295 $this->clickAndWait("submit");
297 $this->clickAndWait("link=Forums");
298 $this->clickAndWait("link=developers-discussion");
299 $this->click("link=Start New Thread");
300 $this->waitForPageToLoad("30000");
301 $this->type("subject", "Message4 in an envelope");
302 $this->type("body", "not the same thing as an antilope (and different thread anyway) (but still related to Charlie) - also, ZONGO");
303 $this->clickAndWait("submit");
307 $this->select("type_of_search", "label=This project's forums");
308 $this->type("//input[@name='words']", "bottle");
309 $this->clickAndWait("//input[@name='Search']");
310 $this->assertFalse($this->isTextPresent("No matches found for"));
311 $this->assertTrue($this->isTextPresent("Message1"));
312 $this->assertTrue($this->isTextPresent("Message2"));
313 $this->assertTrue($this->isTextPresent("Message3"));
314 $this->assertFalse($this->isTextPresent("Message4"));
316 $this->select("type_of_search", "label=This project's forums");
317 $this->type("//input[@name='words']", "bottle fridge");
318 $this->clickAndWait("//input[@name='Search']");
319 $this->assertFalse($this->isTextPresent("No matches found for"));
320 $this->assertFalse($this->isTextPresent("Message1"));
321 $this->assertTrue($this->isTextPresent("Message2"));
322 $this->assertFalse($this->isTextPresent("Message3"));
323 $this->assertFalse($this->isTextPresent("Message4"));
325 // Search in one particular forum
327 $this->select("type_of_search", "label=This project's forums");
328 $this->type("//input[@name='words']", "charlie");
329 $this->clickAndWait("//input[@name='Search']");
330 $this->assertFalse($this->isTextPresent("No matches found for"));
331 $this->assertTrue($this->isTextPresent("Message1"));
332 $this->assertTrue($this->isTextPresent("Message2"));
333 $this->assertFalse($this->isTextPresent("Message3"));
334 $this->assertTrue($this->isTextPresent("Message4"));
336 $this->clickAndWait("link=Forums");
337 $this->clickAndWait("link=open-discussion");
338 $this->select("type_of_search", "label=This forum");
339 $this->type("//input[@name='words']", "charlie");
340 $this->clickAndWait("//input[@name='Search']");
341 $this->assertFalse($this->isTextPresent("No matches found for"));
342 $this->assertTrue($this->isTextPresent("Message1"));
343 $this->assertTrue($this->isTextPresent("Message2"));
344 $this->assertFalse($this->isTextPresent("Message3"));
345 $this->assertFalse($this->isTextPresent("Message4"));
347 $this->clickAndWait("link=Forums");
348 $this->clickAndWait("link=open-discussion");
349 $this->select("type_of_search", "label=This forum");
350 $this->type("//input[@name='words']", "charlie fridge");
351 $this->clickAndWait("//input[@name='Search']");
352 $this->assertFalse($this->isTextPresent("No matches found for"));
353 // Only one result => threaded view => need to check on bodies, not subjects
354 $this->assertFalse($this->isTextPresent("wall"));
355 $this->assertTrue($this->isTextPresent("fridge"));
356 $this->assertFalse($this->isTextPresent("needle"));
357 $this->assertFalse($this->isTextPresent("Message4"));
359 // Create some documents
361 $this->gotoProject('projecta');
362 $this->clickAndWait("link=Docs");
363 $this->clickAndWait("addItemDocmanMenu");
364 $this->click("buttonDoc");
365 $this->type("title", "Doc1 Vladimir");
366 $this->type("description", "Jenkins buildbot - also, ZONGO");
367 $this->click("//input[@name='type' and @value='pasteurl']");
368 $this->type("file_url", "http://buildbot3.fusionforge.org/");
369 $this->clickAndWait("submit");
371 $this->clickAndWait("addItemDocmanMenu");
372 $this->click("buttonDoc");
373 $this->type("title", "Doc2 Astromir");
374 $this->type("description", "Hudson (the needle) - also, ZONGO");
375 $this->click("//input[@name='type' and @value='pasteurl']");
376 $this->type("file_url", "http://buildbot.fusionforge.org/");
377 $this->clickAndWait("submit");
379 // Search in Documents
381 $this->select("type_of_search", "label=This project's documents");
382 $this->type("//input[@name='words']", "jenkins");
383 $this->clickAndWait("//input[@name='Search']");
384 $this->assertFalse($this->isTextPresent("No matches found for"));
385 $this->assertTrue($this->isTextPresent("Doc1"));
386 $this->assertFalse($this->isTextPresent("Doc2"));
388 $this->select("type_of_search", "label=This project's documents");
389 $this->type("//input[@name='words']", "vladimir jenkins");
390 $this->clickAndWait("//input[@name='Search']");
391 $this->assertFalse($this->isTextPresent("No matches found for"));
392 $this->assertTrue($this->isTextPresent("Doc1"));
393 $this->assertFalse($this->isTextPresent("Doc2"));
397 $this->gotoProject('projecta');
398 $this->clickAndWait("link=News");
399 $this->clickAndWait("link=Submit");
400 $this->type("summary", "News1 daily planet");
401 $this->type("details", "Clark Kent's newspaper - also, ZONGO");
402 $this->clickAndWait("submit");
404 $this->clickAndWait("link=Submit");
405 $this->type("summary", "News2 usenet");
406 $this->type("details", "alt sysadmin recovery (needle) - also, ZONGO");
407 $this->clickAndWait("submit");
408 $this->clickAndWait("link=News");
412 $this->select("type_of_search", "label=This project's news");
413 $this->type("//input[@name='words']", "sysadmin");
414 $this->clickAndWait("//input[@name='Search']");
415 $this->assertFalse($this->isTextPresent("No matches found for"));
416 $this->assertTrue($this->isTextPresent("News2"));
418 $this->select("type_of_search", "label=This project's news");
419 $this->type("//input[@name='words']", "daily newspaper");
420 $this->clickAndWait("//input[@name='Search']");
421 $this->assertFalse($this->isTextPresent("No matches found for"));
422 $this->assertTrue($this->isTextPresent("News1"));
424 // Search in entire project
425 $this->gotoProject('projecta');
426 $this->select("type_of_search", "label=Search the entire project");
427 $this->type("//input[@name='words']", "needle");
428 $this->clickAndWait("//input[@name='Search']");
429 $this->assertTrue($this->isTextPresent("Bug1"));
430 $this->assertFalse($this->isTextPresent("Bug2"));
431 $this->assertTrue($this->isTextPresent("Task1"));
432 $this->assertFalse($this->isTextPresent("Task2"));
433 $this->assertFalse($this->isTextPresent("Message1"));
434 $this->assertFalse($this->isTextPresent("Message2"));
435 $this->assertTrue($this->isTextPresent("Message3"));
436 $this->assertFalse($this->isTextPresent("Message4"));
437 $this->assertFalse($this->isTextPresent("Doc1"));
438 $this->assertTrue($this->isTextPresent("Doc2"));
439 $this->assertFalse($this->isTextPresent("News1"));
440 $this->assertTrue($this->isTextPresent("News2"));
442 $this->gotoProject('projecta');
443 $this->select("type_of_search", "label=Search the entire project");
444 $this->type("//input[@name='words']", "zongo");
445 $this->clickAndWait("//input[@name='Search']");
446 $this->assertTrue($this->isTextPresent("Bug1"));
447 $this->assertTrue($this->isTextPresent("Bug2"));
448 $this->assertTrue($this->isTextPresent("Task1"));
449 $this->assertTrue($this->isTextPresent("Task2"));
450 $this->assertTrue($this->isTextPresent("Message1"));
451 $this->assertTrue($this->isTextPresent("Message2"));
452 $this->assertTrue($this->isTextPresent("Message3"));
453 $this->assertTrue($this->isTextPresent("Message4"));
454 $this->assertTrue($this->isTextPresent("Doc1"));
455 $this->assertTrue($this->isTextPresent("Doc2"));
456 $this->assertTrue($this->isTextPresent("News1"));
457 $this->assertTrue($this->isTextPresent("News2"));
461 $this->gotoProject('projecta');
462 $this->clickAndWait('Link=Advanced search');
463 $this->click("//input[@class='checkthemall']");
464 $this->type("//div[@id='maindiv']//input[@name='words']", "needle");
465 $this->clickAndWait("//input[@name='submitbutton']");
466 $this->assertTrue($this->isTextPresent("Bug1"));
467 $this->assertFalse($this->isTextPresent("Bug2"));
468 $this->assertTrue($this->isTextPresent("Task1"));
469 $this->assertFalse($this->isTextPresent("Task2"));
470 $this->assertFalse($this->isTextPresent("Message1"));
471 $this->assertFalse($this->isTextPresent("Message2"));
472 $this->assertTrue($this->isTextPresent("Message3"));
473 $this->assertFalse($this->isTextPresent("Message4"));
474 $this->assertFalse($this->isTextPresent("Doc1"));
475 $this->assertTrue($this->isTextPresent("Doc2"));
476 $this->assertFalse($this->isTextPresent("News1"));
477 $this->assertTrue($this->isTextPresent("News2"));
479 $this->gotoProject('projecta');
480 $this->clickAndWait('Link=Advanced search');
481 $this->click("//a[contains(@href,'short_forum') and .='all']");
482 $this->click("//a[contains(@href,'short_tracker') and .='all']");
483 $this->click("//a[contains(@href,'short_pm') and .='all']");
484 $this->click("//a[contains(@href,'short_docman') and .='all']");
485 $this->click("//a[contains(@href,'short_news') and .='all']");
486 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
487 $this->clickAndWait("//input[@name='submitbutton']");
488 $this->assertTrue($this->isTextPresent("Bug1"));
489 $this->assertTrue($this->isTextPresent("Bug2"));
490 $this->assertTrue($this->isTextPresent("Task1"));
491 $this->assertTrue($this->isTextPresent("Task2"));
492 $this->assertTrue($this->isTextPresent("Message1"));
493 $this->assertTrue($this->isTextPresent("Message2"));
494 $this->assertTrue($this->isTextPresent("Message3"));
495 $this->assertTrue($this->isTextPresent("Message4"));
496 $this->assertTrue($this->isTextPresent("Doc1"));
497 $this->assertTrue($this->isTextPresent("Doc2"));
498 $this->assertTrue($this->isTextPresent("News1"));
499 $this->assertTrue($this->isTextPresent("News2"));
501 // Now let's check that RBAC permissions are taken into account
503 $this->createUser('piperade');
504 $this->gotoProject('projecta');
505 $this->click("link=Admin");
506 $this->waitForPageToLoad("30000");
507 $this->click("link=Users and permissions");
508 $this->waitForPageToLoad("30000");
509 $this->click("//tr/td/form/div[contains(.,'Any user logged in')]/../../../td/form/div/input[contains(@value,'Unlink Role')]");
510 $this->waitForPageToLoad("30000");
511 $this->type ("//form[contains(@action,'roleedit.php')]/..//input[@name='role_name']", "Trainee") ;
512 $this->click ("//input[@value='Create Role']") ;
513 $this->waitForPageToLoad("30000");
515 $this->click("link=Users and permissions");
516 $this->waitForPageToLoad("30000");
517 $this->type ("//form[contains(@action,'users.php')]//input[@name='form_unix_name' and @type='text']", "piperade") ;
518 $this->select("//input[@value='Add Member']/../select[@name='role_id']", "label=Trainee");
519 $this->click ("//input[@value='Add Member']") ;
520 $this->waitForPageToLoad("30000");
522 $this->click("link=Users and permissions");
523 $this->waitForPageToLoad("30000");
524 $this->click ("//td/form/div[contains(.,'Trainee')]/../div/input[@value='Edit Permissions']") ;
525 $this->waitForPageToLoad("30000");
526 $this->select("//tr/td[.='Bugs']/../td/select[contains(@name,'data[tracker]')]", "label=Read only");
527 $this->select("//tr/td[.='Patches']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
528 $this->select("//tr/td[.='To Do']/../td/select[contains(@name,'data[pm]')]", "label=Read only");
529 $this->select("//tr/td[.='Next Release']/../td/select[contains(@name,'data[pm]')]", "label=No access");
530 $this->select("//tr/td[.='open-discussion']/../td/select[contains(@name,'data[forum]')]", "label=Read only");
531 $this->select("//tr/td[.='developers-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
532 $this->select("//select[contains(@name,'data[docman]')]", "label=Read only");
533 $this->click ("//input[@value='Submit']") ;
534 $this->waitForPageToLoad("30000");
536 $this->click("link=Users and permissions");
537 $this->waitForPageToLoad("30000");
538 $this->click ("//td/form/div[contains(.,'Anonymous')]/../div/input[@value='Edit Permissions']") ;
539 $this->waitForPageToLoad("30000");
540 $this->select("//tr/td[.='Bugs']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
541 $this->select("//tr/td[.='Patches']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
542 $this->select("//tr/td[.='To Do']/../td/select[contains(@name,'data[pm]')]", "label=No access");
543 $this->select("//tr/td[.='Next Release']/../td/select[contains(@name,'data[pm]')]", "label=No access");
544 $this->select("//tr/td[.='open-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
545 $this->select("//tr/td[.='developers-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
546 $this->select("//select[contains(@name,'data[docman]')]", "label=No access");
547 $this->click ("//input[@value='Submit']") ;
548 $this->waitForPageToLoad("30000");
550 $this->switchUser('piperade');
551 $this->gotoProject('projecta');
552 $this->select("type_of_search", "label=Search the entire project");
553 $this->type("//input[@name='words']", "zongo");
554 $this->clickAndWait("//input[@name='Search']");
555 $this->assertTrue($this->isTextPresent("Bug1"));
556 $this->assertFalse($this->isTextPresent("Bug2"));
557 $this->assertTrue($this->isTextPresent("Task1"));
558 $this->assertFalse($this->isTextPresent("Task2"));
559 $this->assertTrue($this->isTextPresent("Message1"));
560 $this->assertTrue($this->isTextPresent("Message2"));
561 $this->assertTrue($this->isTextPresent("Message3"));
562 $this->assertFalse($this->isTextPresent("Message4"));
563 $this->assertTrue($this->isTextPresent("Doc1"));
564 $this->assertTrue($this->isTextPresent("Doc2"));
565 $this->assertTrue($this->isTextPresent("News1"));
566 $this->assertTrue($this->isTextPresent("News2"));
568 $this->gotoProject('projecta');
569 $this->clickAndWait('Link=Advanced search');
570 $this->click("//a[contains(@href,'short_forum') and .='all']");
571 $this->click("//a[contains(@href,'short_tracker') and .='all']");
572 $this->click("//a[contains(@href,'short_pm') and .='all']");
573 $this->click("//a[contains(@href,'short_docman') and .='all']");
574 $this->click("//a[contains(@href,'short_news') and .='all']");
575 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
576 $this->clickAndWait("//input[@name='submitbutton']");
577 $this->assertTrue($this->isTextPresent("Bug1"));
578 $this->assertFalse($this->isTextPresent("Bug2"));
579 $this->assertTrue($this->isTextPresent("Task1"));
580 $this->assertFalse($this->isTextPresent("Task2"));
581 $this->assertTrue($this->isTextPresent("Message1"));
582 $this->assertTrue($this->isTextPresent("Message2"));
583 $this->assertTrue($this->isTextPresent("Message3"));
584 $this->assertFalse($this->isTextPresent("Message4"));
585 $this->assertTrue($this->isTextPresent("Doc1"));
586 $this->assertTrue($this->isTextPresent("Doc2"));
587 $this->assertTrue($this->isTextPresent("News1"));
588 $this->assertTrue($this->isTextPresent("News2"));
591 $this->gotoProject('projecta');
592 $this->select("type_of_search", "label=Search the entire project");
593 $this->type("//input[@name='words']", "zongo");
594 $this->clickAndWait("//input[@name='Search']");
595 $this->assertFalse($this->isTextPresent("Bug1"));
596 $this->assertFalse($this->isTextPresent("Bug2"));
597 $this->assertFalse($this->isTextPresent("Task1"));
598 $this->assertFalse($this->isTextPresent("Task2"));
599 $this->assertFalse($this->isTextPresent("Message1"));
600 $this->assertFalse($this->isTextPresent("Message2"));
601 $this->assertFalse($this->isTextPresent("Message3"));
602 $this->assertFalse($this->isTextPresent("Message4"));
603 $this->assertFalse($this->isTextPresent("Doc1"));
604 $this->assertFalse($this->isTextPresent("Doc2"));
605 $this->assertTrue($this->isTextPresent("News1"));
606 $this->assertTrue($this->isTextPresent("News2"));
608 $this->gotoProject('projecta');
609 $this->clickAndWait('Link=Advanced search');
610 $this->click("//a[contains(@href,'short_forum') and .='all']");
611 $this->click("//a[contains(@href,'short_tracker') and .='all']");
612 $this->assertFalse($this->isElementPresent("//a[contains(@href,'short_pm') and .='all']"));
613 $this->assertFalse($this->isElementPresent("//a[contains(@href,'short_docman') and .='all']"));
614 $this->click("//a[contains(@href,'short_news') and .='all']");
615 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
616 $this->clickAndWait("//input[@name='submitbutton']");
617 $this->assertFalse($this->isTextPresent("Bug1"));
618 $this->assertFalse($this->isTextPresent("Bug2"));
619 $this->assertFalse($this->isTextPresent("Task1"));
620 $this->assertFalse($this->isTextPresent("Task2"));
621 $this->assertFalse($this->isTextPresent("Message1"));
622 $this->assertFalse($this->isTextPresent("Message2"));
623 $this->assertFalse($this->isTextPresent("Message3"));
624 $this->assertFalse($this->isTextPresent("Message4"));
625 $this->assertFalse($this->isTextPresent("Doc1"));
626 $this->assertFalse($this->isTextPresent("Doc2"));
627 $this->assertTrue($this->isTextPresent("News1"));
628 $this->assertTrue($this->isTextPresent("News2"));