3 * Copyright 2011, Roland Mas
4 * Copyright 2013, Franck Villaume - TrivialDev
6 * This file is part of FusionForge.
8 * FusionForge is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published
10 * by the Free Software Foundation; either version 2 of the License,
11 * or (at your option) any later version.
13 * FusionForge is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 require_once dirname(dirname(__FILE__)).'/Testing/SeleniumGforge.php';
25 class Search extends FForge_SeleniumTestCase
33 $this->populateStandardTemplate();
34 $this->createProject('projecta');
35 $this->createProject('projectb');
38 $this->waitForPageToLoad("30000");
39 $this->type("//input[@name='words']", "XXXXXXXXXXXXXXXXXXXXXXXXXX");
40 $this->click("//input[@name='Search']");
41 $this->waitForPageToLoad("30000");
42 $this->assertTrue($this->isTextPresent("No matches found for"));
45 $this->waitForPageToLoad("30000");
46 $this->type("//input[@name='words']", "projecta");
47 $this->click("//input[@name='Search']");
48 $this->waitForPageToLoad("30000");
49 $this->assertFalse($this->isTextPresent("No matches found for"));
50 $this->assertTrue($this->isTextPresent("public description for projecta"));
51 $this->assertFalse($this->isTextPresent("public description for projectb"));
54 $this->waitForPageToLoad("30000");
55 $this->type("//input[@name='words']", "description public projecta");
56 $this->click("//input[@name='Search']");
57 $this->waitForPageToLoad("30000");
58 $this->assertFalse($this->isTextPresent("No matches found for"));
59 $this->assertTrue($this->isTextPresent("public description for projecta"));
60 $this->assertFalse($this->isTextPresent("public description for projectb"));
63 $this->waitForPageToLoad("30000");
64 $this->type("//input[@name='words']", "description 'public projecta'");
65 $this->click("//input[@name='Search']");
66 $this->waitForPageToLoad("30000");
67 $this->assertTrue($this->isTextPresent("No matches found for"));
68 $this->assertFalse($this->isTextPresent("public description for projecta"));
69 $this->assertFalse($this->isTextPresent("public description for projectb"));
72 $this->waitForPageToLoad("30000");
73 $this->type("//input[@name='words']", "description public");
74 $this->click("//input[@name='Search']");
75 $this->waitForPageToLoad("30000");
76 $this->assertFalse($this->isTextPresent("No matches found for"));
77 $this->assertTrue($this->isTextPresent("public description for projecta"));
78 $this->assertTrue($this->isTextPresent("public description for projectb"));
81 $this->waitForPageToLoad("30000");
82 $this->type("//input[@name='words']", "'description public'");
83 $this->click("//input[@name='Search']");
84 $this->waitForPageToLoad("30000");
85 $this->assertTrue($this->isTextPresent("No matches found for"));
86 $this->assertFalse($this->isTextPresent("public description for projecta"));
87 $this->assertFalse($this->isTextPresent("public description for projectb"));
90 $this->waitForPageToLoad("30000");
91 $this->type("//input[@name='words']", "'public description'");
92 $this->click("//input[@name='Search']");
93 $this->waitForPageToLoad("30000");
94 $this->assertFalse($this->isTextPresent("No matches found for"));
95 $this->assertTrue($this->isTextPresent("public description for projecta"));
96 $this->assertTrue($this->isTextPresent("public description for projectb"));
102 $this->createUser('ratatouille');
103 $this->createUser('tartiflette');
106 $this->waitForPageToLoad("30000");
107 $this->select("type_of_search", "label=People");
108 $this->type("//input[@name='words']", "tartempion");
109 $this->click("//input[@name='Search']");
110 $this->waitForPageToLoad("30000");
111 $this->assertTrue($this->isTextPresent("No matches found for"));
112 $this->assertFalse($this->isTextPresent("ratatouille Lastname"));
113 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
116 $this->waitForPageToLoad("30000");
117 $this->select("type_of_search", "label=People");
118 $this->type("//input[@name='words']", "ratatouille");
119 $this->click("//input[@name='Search']");
120 $this->waitForPageToLoad("30000");
121 $this->assertFalse($this->isTextPresent("No matches found for"));
122 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
123 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
126 $this->waitForPageToLoad("30000");
127 $this->select("type_of_search", "label=People");
128 $this->type("//input[@name='words']", "lastname ratatouille");
129 $this->click("//input[@name='Search']");
130 $this->waitForPageToLoad("30000");
131 $this->assertFalse($this->isTextPresent("No matches found for"));
132 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
133 $this->assertFalse($this->isTextPresent("tartiflette Lastname"));
136 $this->waitForPageToLoad("30000");
137 $this->select("type_of_search", "label=People");
138 $this->type("//input[@name='words']", "Lastname");
139 $this->click("//input[@name='Search']");
140 $this->waitForPageToLoad("30000");
141 $this->assertFalse($this->isTextPresent("No matches found for"));
142 $this->assertTrue($this->isTextPresent("ratatouille Lastname"));
143 $this->assertTrue($this->isTextPresent("tartiflette Lastname"));
146 * Search inside a project
149 // Prepare some tracker items
151 $this->gotoProject('projecta');
152 $this->clickAndWait("link=Tracker");
153 $this->clickAndWait("link=Bugs");
154 $this->clickAndWait("link=Submit New");
155 $this->type("summary", "Bug1 boustrophédon");
156 $this->type("details", "brebis outremanchienne");
157 $this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
158 $this->clickAndWait("link=Bug1 boustrophédon");
159 $this->type("details", 'Ceci était une référence au « Génie des Alpages », rien à voir avec Charlie - also, ZONGO, and needle');
160 $this->clickAndWait("submit");
162 $this->clickAndWait("link=Tracker");
163 $this->clickAndWait("link=Patches");
164 $this->clickAndWait("link=Submit New");
165 $this->type("summary", "Bug2 gratapouêt");
166 $this->type("details", "cthulhu was here - also, ZONGO, and Charlie was here too");
167 $this->clickAndWait("//form[@id='trackeraddform']//input[@type='submit']");
169 // Search in trackers
171 $this->select("type_of_search", "label=This project's trackers");
172 $this->type("//input[@name='words']", "brebis");
173 $this->clickAndWait("//input[@name='Search']");
174 $this->assertFalse($this->isTextPresent("No matches found for"));
175 $this->assertTrue($this->isTextPresent("Bug1"));
177 $this->select("type_of_search", "label=This project's trackers");
178 $this->type("//input[@name='words']", "alpages");
179 $this->clickAndWait("//input[@name='Search']");
180 $this->assertFalse($this->isTextPresent("No matches found for"));
181 $this->assertTrue($this->isTextPresent("Bug1"));
183 $this->select("type_of_search", "label=This project's trackers");
184 $this->type("//input[@name='words']", "boustrophédon brebis alpages");
185 $this->clickAndWait("//input[@name='Search']");
186 $this->assertFalse($this->isTextPresent("No matches found for"));
187 $this->assertTrue($this->isTextPresent("Bug1"));
189 $this->select("type_of_search", "label=This project's trackers");
190 $this->type("//input[@name='words']", "'boustrophédon brebis'");
191 $this->clickAndWait("//input[@name='Search']");
192 $this->assertTrue($this->isTextPresent("No matches found for"));
193 $this->assertFalse($this->isTextPresent("Bug1"));
195 $this->select("type_of_search", "label=This project's trackers");
196 $this->type("//input[@name='words']", "boustrophédon cthulhu");
197 $this->clickAndWait("//input[@name='Search']");
198 $this->assertTrue($this->isTextPresent("No matches found for"));
199 $this->assertFalse($this->isTextPresent("Bug1"));
200 $this->assertFalse($this->isTextPresent("Bug2"));
202 // Search in one particular tracker
204 $this->select("type_of_search", "label=This project's trackers");
205 $this->type("//input[@name='words']", "charlie");
206 $this->clickAndWait("//input[@name='Search']");
207 $this->assertFalse($this->isTextPresent("No matches found for"));
208 $this->assertTrue($this->isTextPresent("Bug1"));
209 $this->assertTrue($this->isTextPresent("Bug2"));
211 $this->clickAndWait("link=Tracker");
212 $this->clickAndWait("link=Bugs");
213 $this->select("type_of_search", "label=Bugs");
214 $this->type("//input[@name='words']", "charlie");
215 $this->clickAndWait("//input[@name='Search']");
216 $this->assertFalse($this->isTextPresent("No matches found for"));
217 $this->assertTrue($this->isTextPresent("Bug1"));
218 $this->assertFalse($this->isTextPresent("Bug2"));
220 $this->clickAndWait("link=Bugs");
221 $this->select("type_of_search", "label=Bugs");
222 $this->type("//input[@name='words']", "charlie boustrophédon");
223 $this->clickAndWait("//input[@name='Search']");
224 $this->assertFalse($this->isTextPresent("No matches found for"));
225 $this->assertTrue($this->isTextPresent("Bug1"));
226 $this->assertFalse($this->isTextPresent("Bug2"));
230 $this->gotoProject('projecta');
231 $this->clickAndWait("link=Tasks");
232 $this->clickAndWait("link=To Do");
233 $this->clickAndWait("link=Add Task");
234 $this->type("summary", "Task1 the brain");
235 $this->type("details", "The same thing we do every night, Pinky - try to take over the world! - also, ZONGO");
236 $this->type("hours", "199");
237 $this->clickAndWait("submit");
239 $this->clickAndWait("link=Task1 the brain");
240 $this->type("details", 'This is the needle for tasks');
241 $this->clickAndWait("submit");
243 $this->gotoProject('projecta');
244 $this->clickAndWait("link=Tasks");
245 $this->clickAndWait("link=Next Release");
246 $this->clickAndWait("link=Add Task");
247 $this->type("summary", "Task2 world peace");
248 $this->type("details", "Otherwise WW4 will be fought with sticks - also, ZONGO");
249 $this->type("hours", "199");
250 $this->clickAndWait("submit");
254 $this->select("type_of_search", "label=This project's tasks");
255 $this->type("//input[@name='words']", "pinky");
256 $this->clickAndWait("//input[@name='Search']");
257 $this->assertFalse($this->isTextPresent("No matches found for"));
258 $this->assertTrue($this->isTextPresent("Task1"));
260 $this->select("type_of_search", "label=This project's tasks");
261 $this->type("//input[@name='words']", "cortex");
262 $this->clickAndWait("//input[@name='Search']");
263 $this->assertTrue($this->isTextPresent("No matches found for"));
264 $this->assertFalse($this->isTextPresent("Task1"));
266 $this->select("type_of_search", "label=This project's tasks");
267 $this->type("//input[@name='words']", "brain pinky needle");
268 $this->clickAndWait("//input[@name='Search']");
269 $this->assertFalse($this->isTextPresent("No matches found for"));
270 $this->assertTrue($this->isTextPresent("Task1"));
272 // Post some messages in a forum
274 $this->gotoProject('projecta');
275 $this->clickAndWait("link=Forums");
276 $this->clickAndWait("link=open-discussion");
277 $this->click("link=Start New Thread");
278 $this->waitForPageToLoad("30000");
279 $this->type("subject", "Message1 in a bottle");
280 $this->type("body", "ninetynine of them on Charlie's wall - also, ZONGO");
281 $this->clickAndWait("submit");
282 $this->clickAndWait("link=Message1 in a bottle");
283 $this->clickAndWait("link=[ reply ]");
284 $this->type("subject", "Message2 in a bottle");
285 $this->type("body", "ninetyeight of them in Charlie's fridge - also, ZONGO");
286 $this->clickAndWait("submit");
287 $this->clickAndWait("link=Message1 in a bottle");
288 $this->clickAndWait("link=[ reply ]");
289 $this->type("subject", "Message3 in a bottle");
290 $this->type("body", "and yet another needle for the forums - also, ZONGO");
291 $this->clickAndWait("submit");
293 $this->clickAndWait("link=Forums");
294 $this->clickAndWait("link=developers-discussion");
295 $this->click("link=Start New Thread");
296 $this->waitForPageToLoad("30000");
297 $this->type("subject", "Message4 in an envelope");
298 $this->type("body", "not the same thing as an antilope (and different thread anyway) (but still related to Charlie) - also, ZONGO");
299 $this->clickAndWait("submit");
303 $this->select("type_of_search", "label=This project's forums");
304 $this->type("//input[@name='words']", "bottle");
305 $this->clickAndWait("//input[@name='Search']");
306 $this->assertFalse($this->isTextPresent("No matches found for"));
307 $this->assertTrue($this->isTextPresent("Message1"));
308 $this->assertTrue($this->isTextPresent("Message2"));
309 $this->assertTrue($this->isTextPresent("Message3"));
310 $this->assertFalse($this->isTextPresent("Message4"));
312 $this->select("type_of_search", "label=This project's forums");
313 $this->type("//input[@name='words']", "bottle fridge");
314 $this->clickAndWait("//input[@name='Search']");
315 $this->assertFalse($this->isTextPresent("No matches found for"));
316 $this->assertFalse($this->isTextPresent("Message1"));
317 $this->assertTrue($this->isTextPresent("Message2"));
318 $this->assertFalse($this->isTextPresent("Message3"));
319 $this->assertFalse($this->isTextPresent("Message4"));
321 // Search in one particular forum
323 $this->select("type_of_search", "label=This project's forums");
324 $this->type("//input[@name='words']", "charlie");
325 $this->clickAndWait("//input[@name='Search']");
326 $this->assertFalse($this->isTextPresent("No matches found for"));
327 $this->assertTrue($this->isTextPresent("Message1"));
328 $this->assertTrue($this->isTextPresent("Message2"));
329 $this->assertFalse($this->isTextPresent("Message3"));
330 $this->assertTrue($this->isTextPresent("Message4"));
332 $this->clickAndWait("link=Forums");
333 $this->clickAndWait("link=open-discussion");
334 $this->select("type_of_search", "label=This forum");
335 $this->type("//input[@name='words']", "charlie");
336 $this->clickAndWait("//input[@name='Search']");
337 $this->assertFalse($this->isTextPresent("No matches found for"));
338 $this->assertTrue($this->isTextPresent("Message1"));
339 $this->assertTrue($this->isTextPresent("Message2"));
340 $this->assertFalse($this->isTextPresent("Message3"));
341 $this->assertFalse($this->isTextPresent("Message4"));
343 $this->clickAndWait("link=Forums");
344 $this->clickAndWait("link=open-discussion");
345 $this->select("type_of_search", "label=This forum");
346 $this->type("//input[@name='words']", "charlie fridge");
347 $this->clickAndWait("//input[@name='Search']");
348 $this->assertFalse($this->isTextPresent("No matches found for"));
349 // Only one result => threaded view => need to check on bodies, not subjects
350 $this->assertFalse($this->isTextPresent("wall"));
351 $this->assertTrue($this->isTextPresent("fridge"));
352 $this->assertFalse($this->isTextPresent("needle"));
353 $this->assertFalse($this->isTextPresent("Message4"));
355 // Create some documents
357 $this->gotoProject('projecta');
358 $this->clickAndWait("link=Docs");
359 $this->clickAndWait("addItemDocmanMenu");
360 // ugly hack until we fix behavior in docman when no folders exist. We need to click twice on the link
361 $this->clickAndWait("addItemDocmanMenu");
362 $this->click("id=tab-new-document");
363 $this->type("title", "Doc1 Vladimir");
364 $this->type("//input[@name='description']", "Jenkins buildbot - also, ZONGO");
365 $this->click("//input[@name='type' and @value='pasteurl']");
366 $this->type("file_url", "http://buildbot.fusionforge.org/");
367 $this->clickAndWait("submit");
369 $this->clickAndWait("addItemDocmanMenu");
370 $this->click("id=tab-new-document");
371 $this->type("title", "Doc2 Astromir");
372 $this->type("//input[@name='description']", "Main website (the needle) - also, ZONGO");
373 $this->click("//input[@name='type' and @value='pasteurl']");
374 $this->type("file_url", "http://fusionforge.org/");
375 $this->clickAndWait("submit");
377 // Search in Documents
379 $this->select("type_of_search", "label=This project's documents");
380 $this->type("//input[@name='words']", "jenkins");
381 $this->clickAndWait("//input[@name='Search']");
382 $this->assertFalse($this->isTextPresent("No matches found for"));
383 $this->assertTrue($this->isTextPresent("Doc1"));
384 $this->assertFalse($this->isTextPresent("Doc2"));
386 $this->select("type_of_search", "label=This project's documents");
387 $this->type("//input[@name='words']", "vladimir jenkins");
388 $this->clickAndWait("//input[@name='Search']");
389 $this->assertFalse($this->isTextPresent("No matches found for"));
390 $this->assertTrue($this->isTextPresent("Doc1"));
391 $this->assertFalse($this->isTextPresent("Doc2"));
395 $this->gotoProject('projecta');
396 $this->clickAndWait("link=News");
397 $this->clickAndWait("link=Submit");
398 $this->type("summary", "News1 daily planet");
399 $this->type("details", "Clark Kent's newspaper - also, ZONGO");
400 $this->clickAndWait("submit");
402 $this->clickAndWait("link=Submit");
403 $this->type("summary", "News2 usenet");
404 $this->type("details", "alt sysadmin recovery (needle) - also, ZONGO");
405 $this->clickAndWait("submit");
406 $this->clickAndWait("link=News");
410 $this->select("type_of_search", "label=This project's news");
411 $this->type("//input[@name='words']", "sysadmin");
412 $this->clickAndWait("//input[@name='Search']");
413 $this->assertFalse($this->isTextPresent("No matches found for"));
414 $this->assertTrue($this->isTextPresent("News2"));
416 $this->select("type_of_search", "label=This project's news");
417 $this->type("//input[@name='words']", "daily newspaper");
418 $this->clickAndWait("//input[@name='Search']");
419 $this->assertFalse($this->isTextPresent("No matches found for"));
420 $this->assertTrue($this->isTextPresent("News1"));
422 // Search in entire project
423 $this->gotoProject('projecta');
424 $this->select("type_of_search", "label=Search the entire project");
425 $this->type("//input[@name='words']", "needle");
426 $this->clickAndWait("//input[@name='Search']");
427 $this->assertTrue($this->isTextPresent("Bug1"));
428 $this->assertFalse($this->isTextPresent("Bug2"));
429 $this->assertTrue($this->isTextPresent("Task1"));
430 $this->assertFalse($this->isTextPresent("Task2"));
431 $this->assertFalse($this->isTextPresent("Message1"));
432 $this->assertFalse($this->isTextPresent("Message2"));
433 $this->assertTrue($this->isTextPresent("Message3"));
434 $this->assertFalse($this->isTextPresent("Message4"));
435 $this->assertFalse($this->isTextPresent("Doc1"));
436 $this->assertTrue($this->isTextPresent("Doc2"));
437 $this->assertFalse($this->isTextPresent("News1"));
438 $this->assertTrue($this->isTextPresent("News2"));
440 $this->gotoProject('projecta');
441 $this->select("type_of_search", "label=Search the entire project");
442 $this->type("//input[@name='words']", "zongo");
443 $this->clickAndWait("//input[@name='Search']");
444 $this->assertTrue($this->isTextPresent("Bug1"));
445 $this->assertTrue($this->isTextPresent("Bug2"));
446 $this->assertTrue($this->isTextPresent("Task1"));
447 $this->assertTrue($this->isTextPresent("Task2"));
448 $this->assertTrue($this->isTextPresent("Message1"));
449 $this->assertTrue($this->isTextPresent("Message2"));
450 $this->assertTrue($this->isTextPresent("Message3"));
451 $this->assertTrue($this->isTextPresent("Message4"));
452 $this->assertTrue($this->isTextPresent("Doc1"));
453 $this->assertTrue($this->isTextPresent("Doc2"));
454 $this->assertTrue($this->isTextPresent("News1"));
455 $this->assertTrue($this->isTextPresent("News2"));
459 $this->gotoProject('projecta');
460 $this->clickAndWait('Link=Advanced search');
461 $this->click("//input[@class='checkthemall']");
462 $this->type("//div[@id='maindiv']//input[@name='words']", "needle");
463 $this->clickAndWait("//input[@name='submitbutton']");
464 $this->assertTrue($this->isTextPresent("Bug1"));
465 $this->assertFalse($this->isTextPresent("Bug2"));
466 $this->assertTrue($this->isTextPresent("Task1"));
467 $this->assertFalse($this->isTextPresent("Task2"));
468 $this->assertFalse($this->isTextPresent("Message1"));
469 $this->assertFalse($this->isTextPresent("Message2"));
470 $this->assertTrue($this->isTextPresent("Message3"));
471 $this->assertFalse($this->isTextPresent("Message4"));
472 $this->assertFalse($this->isTextPresent("Doc1"));
473 $this->assertTrue($this->isTextPresent("Doc2"));
474 $this->assertFalse($this->isTextPresent("News1"));
475 $this->assertTrue($this->isTextPresent("News2"));
477 $this->gotoProject('projecta');
478 $this->clickAndWait('Link=Advanced search');
479 $this->click("//input[@class='checkthemall']");
480 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
481 $this->clickAndWait("//input[@name='submitbutton']");
482 $this->assertTrue($this->isTextPresent("Bug1"));
483 $this->assertTrue($this->isTextPresent("Bug2"));
484 $this->assertTrue($this->isTextPresent("Task1"));
485 $this->assertTrue($this->isTextPresent("Task2"));
486 $this->assertTrue($this->isTextPresent("Message1"));
487 $this->assertTrue($this->isTextPresent("Message2"));
488 $this->assertTrue($this->isTextPresent("Message3"));
489 $this->assertTrue($this->isTextPresent("Message4"));
490 $this->assertTrue($this->isTextPresent("Doc1"));
491 $this->assertTrue($this->isTextPresent("Doc2"));
492 $this->assertTrue($this->isTextPresent("News1"));
493 $this->assertTrue($this->isTextPresent("News2"));
495 // Now let's check that RBAC permissions are taken into account
497 $this->gotoProject('projecta');
498 $this->click("link=Admin");
499 $this->waitForPageToLoad("30000");
500 $this->click("link=Users and permissions");
501 $this->waitForPageToLoad("30000");
502 $this->click("//tr/td/form/div[contains(.,'Any user logged in')]/../../../td/form/div/input[contains(@value,'Unlink Role')]");
503 $this->waitForPageToLoad("30000");
504 $this->type ("//form[contains(@action,'roleedit.php')]/..//input[@name='role_name']", "Trainee") ;
505 $this->click ("//input[@value='Create Role']") ;
506 $this->waitForPageToLoad("30000");
508 $this->click("link=Users and permissions");
509 $this->waitForPageToLoad("30000");
510 $this->type ("//form[contains(@action,'users.php')]//input[@name='form_unix_name' and @type='text']", "ratatouille") ;
511 $this->select("//input[@value='Add Member']/../select[@name='role_id']", "label=Trainee");
512 $this->click ("//input[@value='Add Member']") ;
513 $this->waitForPageToLoad("30000");
515 $this->click("link=Users and permissions");
516 $this->waitForPageToLoad("30000");
517 $this->click ("//td/form/div[contains(.,'Trainee')]/../div/input[@value='Edit Permissions']") ;
518 $this->waitForPageToLoad("30000");
519 $this->select("//select[contains(@name,'data[project_read]')]", "label=Visible");
520 $this->select("//tr/td[.='Bugs']/../td/select[contains(@name,'data[tracker]')]", "label=Read only");
521 $this->select("//tr/td[.='Patches']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
522 $this->select("//tr/td[.='To Do']/../td/select[contains(@name,'data[pm]')]", "label=Read only");
523 $this->select("//tr/td[.='Next Release']/../td/select[contains(@name,'data[pm]')]", "label=No access");
524 $this->select("//tr/td[.='open-discussion']/../td/select[contains(@name,'data[forum]')]", "label=Read only");
525 $this->select("//tr/td[.='developers-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
526 $this->select("//select[contains(@name,'data[docman]')]", "label=Read only");
527 $this->click ("//input[@value='Submit']") ;
528 $this->waitForPageToLoad("30000");
530 $this->click("link=Users and permissions");
531 $this->waitForPageToLoad("30000");
532 $this->click ("//td/form/div[contains(.,'Anonymous')]/../div/input[@value='Edit Permissions']") ;
533 $this->waitForPageToLoad("30000");
534 $this->select("//select[contains(@name,'data[project_read]')]", "label=Visible");
535 $this->select("//tr/td[.='Bugs']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
536 $this->select("//tr/td[.='Patches']/../td/select[contains(@name,'data[tracker]')]", "label=No access");
537 $this->select("//tr/td[.='To Do']/../td/select[contains(@name,'data[pm]')]", "label=No access");
538 $this->select("//tr/td[.='Next Release']/../td/select[contains(@name,'data[pm]')]", "label=No access");
539 $this->select("//tr/td[.='open-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
540 $this->select("//tr/td[.='developers-discussion']/../td/select[contains(@name,'data[forum]')]", "label=No access");
541 $this->select("//select[contains(@name,'data[docman]')]", "label=No access");
542 $this->click ("//input[@value='Submit']") ;
543 $this->waitForPageToLoad("30000");
545 $this->switchUser('ratatouille');
546 $this->gotoProject('projecta');
547 $this->select("type_of_search", "label=Search the entire project");
548 $this->type("//input[@name='words']", "zongo");
549 $this->clickAndWait("//input[@name='Search']");
550 $this->assertTrue($this->isTextPresent("Bug1"));
551 $this->assertFalse($this->isTextPresent("Bug2"));
552 $this->assertTrue($this->isTextPresent("Task1"));
553 $this->assertFalse($this->isTextPresent("Task2"));
554 $this->assertTrue($this->isTextPresent("Message1"));
555 $this->assertTrue($this->isTextPresent("Message2"));
556 $this->assertTrue($this->isTextPresent("Message3"));
557 $this->assertFalse($this->isTextPresent("Message4"));
558 $this->assertTrue($this->isTextPresent("Doc1"));
559 $this->assertTrue($this->isTextPresent("Doc2"));
560 $this->assertTrue($this->isTextPresent("News1"));
561 $this->assertTrue($this->isTextPresent("News2"));
563 $this->gotoProject('projecta');
564 $this->clickAndWait('Link=Advanced search');
565 $this->click("//input[@class='checkthemall']");
566 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
567 $this->clickAndWait("//input[@name='submitbutton']");
568 $this->assertTrue($this->isTextPresent("Bug1"));
569 $this->assertFalse($this->isTextPresent("Bug2"));
570 $this->assertTrue($this->isTextPresent("Task1"));
571 $this->assertFalse($this->isTextPresent("Task2"));
572 $this->assertTrue($this->isTextPresent("Message1"));
573 $this->assertTrue($this->isTextPresent("Message2"));
574 $this->assertTrue($this->isTextPresent("Message3"));
575 $this->assertFalse($this->isTextPresent("Message4"));
576 $this->assertTrue($this->isTextPresent("Doc1"));
577 $this->assertTrue($this->isTextPresent("Doc2"));
578 $this->assertTrue($this->isTextPresent("News1"));
579 $this->assertTrue($this->isTextPresent("News2"));
582 $this->gotoProject('projecta');
583 $this->select("type_of_search", "label=Search the entire project");
584 $this->type("//input[@name='words']", "zongo");
585 $this->clickAndWait("//input[@name='Search']");
586 $this->assertFalse($this->isTextPresent("Bug1"));
587 $this->assertFalse($this->isTextPresent("Bug2"));
588 $this->assertFalse($this->isTextPresent("Task1"));
589 $this->assertFalse($this->isTextPresent("Task2"));
590 $this->assertFalse($this->isTextPresent("Message1"));
591 $this->assertFalse($this->isTextPresent("Message2"));
592 $this->assertFalse($this->isTextPresent("Message3"));
593 $this->assertFalse($this->isTextPresent("Message4"));
594 $this->assertFalse($this->isTextPresent("Doc1"));
595 $this->assertFalse($this->isTextPresent("Doc2"));
596 $this->assertTrue($this->isTextPresent("News1"));
597 $this->assertTrue($this->isTextPresent("News2"));
599 $this->gotoProject('projecta');
600 $this->clickAndWait('Link=Advanced search');
601 $this->click("//input[@class='checkthemall']");
602 $this->assertFalse($this->isElementPresent("//input[@name='short_pm_checkall']"));
603 $this->assertFalse($this->isElementPresent("//input[@name='short_docman_checkall']"));
604 $this->type("//div[@id='maindiv']//input[@name='words']", "zongo");
605 $this->clickAndWait("//input[@name='submitbutton']");
606 $this->assertFalse($this->isTextPresent("Bug1"));
607 $this->assertFalse($this->isTextPresent("Bug2"));
608 $this->assertFalse($this->isTextPresent("Task1"));
609 $this->assertFalse($this->isTextPresent("Task2"));
610 $this->assertFalse($this->isTextPresent("Message1"));
611 $this->assertFalse($this->isTextPresent("Message2"));
612 $this->assertFalse($this->isTextPresent("Message3"));
613 $this->assertFalse($this->isTextPresent("Message4"));
614 $this->assertFalse($this->isTextPresent("Doc1"));
615 $this->assertFalse($this->isTextPresent("Doc2"));
616 $this->assertTrue($this->isTextPresent("News1"));
617 $this->assertTrue($this->isTextPresent("News2"));