Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]functional test i GuardPlugin, jak uzyskać dostęp do zabezpieczonej www
janek9
post
Post #1





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

Ostrzeżenie: (0%)
-----


Witam,

Jestem na etapie testowania mojej aplikacji. Wejscie na strone odbywa sie za posrednictwem sfGuardPlugin. Teraz gdy chce przeprowadzac testy funkcjonalne zupelnie nie mam pojecia jak wpisac w konsoli, aby sfTestBrowser uzyskal dostep do niej, tzn gdzie moznaby bylo wpisac login i haslo zeby sprawdzal dana akcje, a nie wyswietlal tylko formularz logowania..?
Go to the top of the page
+Quote Post
lolekk
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 19.09.2007

Ostrzeżenie: (0%)
-----


Hej,

Aby móc przetestować jakaś funkcjonalność, która jest ukryta za formularzem logowania musisz po prostu najpierw się zalogować, czyli wysłać odpowiedni request z danymi do logowania:

  1. $browser->click('Zaloguj', array('login' => array(
  2. 'username' => 'admin',
  3. 'password' => 'admin'
  4. )));
  5.  


Najlepiej utworzyć sobie odpowiednią metodę do tego np.:

  1. class myTestBrowser extends sfTestBrowser
  2. {
  3. public function login()
  4. {
  5. $this->click('Zaloguj', array('login' => array(
  6. 'username' => 'admin',
  7. 'password' => 'admin'
  8. )));
  9. }
  10. }
  11.  


Oczywiście trzeba wcześniej zadbać o dodanie użytkownika testowego przed rozpoczęciem testów.

Mam nadzieję, że nic nie pokręciłem...

Pozdrawiam.
Go to the top of the page
+Quote Post
janek9
post
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

Ostrzeżenie: (0%)
-----


Cytat(lolekk @ 26.01.2010, 16:15:29 ) *
Hej,

Aby móc przetestować jakaś funkcjonalność, która jest ukryta za formularzem logowania musisz po prostu najpierw się zalogować, czyli wysłać odpowiedni request z danymi do logowania:

  1. [url="./Pobierz-Plik-183233.html"]pobierz[/url], [url="Plaintext-183233.html"]plaintext[/url] [list=1][*] $browser->click('Zaloguj', [url="http://www.php.net/array"]array[/url]('login' => [url="http://www.php.net/array"]array[/url]([*] 'username' => 'admin',[*] 'password' => 'admin'[*] )));[*][/list][PHP] [url="./Pobierz-Plik-183233.html"]pobierz[/url], [url="Plaintext-183233.html"]plaintext[/url]
  2.  
  3. Najlepiej utworzyć sobie odpowiednią metodę do tego np.:
  4.  
  5. [PHP] [url="./Pobierz-Plik-183234.html"]pobierz[/url], [url="Plaintext-183234.html"]plaintext[/url] [list=1][*] class myTestBrowser extends sfTestBrowser[*] {[*] public function login()[*] {[*] $this->click('Zaloguj', [url="http://www.php.net/array"]array[/url]('login' => [url="http://www.php.net/array"]array[/url]([*] 'username' => 'admin',[*] 'password' => 'admin'[*] )));[*] }[*] }[*][/list][PHP] [url="./Pobierz-Plik-183234.html"]pobierz[/url], [url="Plaintext-183234.html"]plaintext[/url]
  6.  
  7. Oczywiście trzeba wcześniej zadbać o dodanie użytkownika testowego przed rozpoczęciem testów.
  8.  
  9. Mam nadzieję, że nic nie pokręciłem...
  10.  
  11. Pozdrawiam.<!--QuoteEnd--></div><!--QuoteEEnd-->
  12.  
  13.  
  14. teraz wyskakuje: " The DOM is not accessible because the browser response content type is not HTML. "
  15.  
  16. mam taki kod w pliku testowym:
  17.  
  18. [php]
  19.  
  20. include(dirname(__FILE__).'/../../bootstrap/functional.php');
  21.  
  22. $browser = new sfTestFunctional(new sfBrowser());
  23.  
  24. $browser->
  25. get('/')->
  26. click('zaloguj', array('signin' => array('username' => 'username', 'password' => 'password)))->
  27. with('request')->begin()->
  28. isParameter('module', 'index')->
  29. isParameter('action', 'index')->
  30. end()->
  31.  
  32. with('response')->begin()->
  33. isStatusCode(200)->
  34. checkElement('body', '!/This is a temporary page/')->
  35. end()
  36. ;
  37.  



a wynik tego jest taki:

  1.  
  2. # get /
  3. # get /login
  4. not ok 1 - request parameter module is index
  5. # Failed test (/usr/share/php5/PEAR/symfony/test/sfTesterRequest.class.php at line 48)
  6. # got: 'sfGuardAuth'
  7. # expected: 'index'
  8. not ok 2 - request parameter action is index
  9. # Failed test (/usr/share/php5/PEAR/symfony/test/sfTesterRequest.class.php at line 48)
  10. # got: 'signin'
  11. # expected: 'index'
  12. not ok 3 - status code is 200
  13. # Failed test (/usr/share/php5/PEAR/symfony/test/sfTesterResponse.class.php at line 257)
  14. # got: 401
  15. # expected: 200
  16. ok 4 - response selector body does not match regex /This is a temporary page/
  17. 1..4
  18. Looks like you failed 3 tests of 4.
  19.  
  20.  



Naprawde nie wiem jak przekazac to do tego formularza..
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Czy element zaloguj w który test ma kliknąć prowadzi do strony z formularzem? Jeśli tak to powinieneś normalnie na tą stronę przejść i dopiero z tej strony wysłać ten formularz. Coś takiego:
  1. $browser->
  2. get('/')->
  3. click('zaloguj')->
  4. click('log in (w tym miejscu chodzi o button formularza', array('signin' => array(
  5. 'username' => 'username',
  6. 'password' => 'password')))->
  7. with('request')->begin()->
  8. isParameter('module', 'index')->
  9. isParameter('action', 'index')->
  10. end()->
  11. ;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 03:56