thanks Jerome
I am doing something similar, though our project started life off with
sf1.0 so the login page doesnt use the form framework.
------ test browser
class emTestBrowser extends sfTestFunctional
{
public function loadData()
{
// load fixtures..
}
public function loginOk()
{
$this -> post('/customer/login', array('email' =>
'[email protected]', 'password' => 'wibble');
$this -> isRedirected();
return $this;
}
}
-------- test
$browser = new emTestBrowser(new sfBrowser());
$browser -> initialize();
$browser -> loadData();
$browser -> loginOk();
$browser->
get('/someModule/index')->
isStatusCode(200)->
isRequestParameter('module', 'someModule')->
isRequestParameter('action', 'index')->
isRequestParameter('mailbox_id', 1)->
checkResponseElement('body', 'Something')->
end();
----------------
The problem is that we do not get as far as the first assertion in
emTestBrowser::loginOk. The login code calls [->redirect] and that
throws an sfStopException which, err, stops everything. If I remove
the redirect from the login code then the tests proceed as expected. I
know I must be missing something here otherwise assertions such as [-
>isRedirected] would be pretty pointless :)
On 28 Jan, 09:34, Jérôme TEXIER <[email protected]> wrote:
> Did you try to use the specific sfTesterUser to check the state of the
> your user :
>
> with('user')->begin()->
> isAuthenticated()->
> end()
>
> One good point dealing with signin/signout operations on functional
> test is to write a reusable class for those kind of test, something
> like :
>
> class sfGuardTestFunctional extends sfTestFunctional {
> public function signinOk($user_data)
> {
> return $this->
> info(sprintf('Connexion with login : "%s" and password "%s"
> should be ok OK.', $user_data['username'], $user_data['password']))->
> get('/login')->
> click('login',array('signin'=>$user_data))->
>
> with('form')->begin()->
> hasErrors(false)->
> end()->
>
> with('user')->begin()->
> isCulture('en')->
> isAuthenticated(true)->
> end()->
>
> with('request')->begin()->
> isParameter('module', 'sfGuardAuth')->
> isParameter('action', 'signin')->
> end()->
>
> isRedirected();
> }
> //could add signout, signinError methods here
> ?>
>
> So on your fonctional test, you can use the signin test :
>
> $browser = new sfGuardTestFunctional(new sfBrowser()); //rather than
> $browser = new sfTestFunctional(new sfBrowser())
> $browser->signinOk(array('username'=>'foo','password'=>'bar'));
>
> Regards.
>
> Jérôme
>
> On 27 jan, 15:00, dantleech <[email protected]> wrote:
>
> > cheers alecs
>
> > though im not sure that your examples addresses my problem of
> > authenticating the user before function testing a page ... what I
> > meant by sfContext::getUser() was
>
> > <?php
> > $user = sfContext::getInstance() -> getUser();
> > $user -> login($user_object);
>
> > On 27 Jan, 13:00, Lupu Alexandru-Emil <[email protected]> wrote:
>
> > > On Tue, Jan 27, 2009 at 1:17 PM, dantleech <[email protected]> wrote:
>
> > > > I am trying to write functional tests for an authenticated
> > > > application, but every time I authenticate the user it seems that the
> > > > users state is reset every time,
>
> > > > i.e. the next [-> get] doesn't seem to recognize the fact that I
> > > > have previously authenticated the user and when running the test I
> > > > receive the login HTML rather than the page I want to test
>
> > > > I have tried both authenticating the user using sfContext::getUser()
> > > > and logging in manually by using:
>
> > > > $sf_test_functional -> post('/user_plugin_module/login', array('email'
> > > > => '[email protected]', 'password' => 'blah');
>
> > > > and the dev log seems to suggest that the user was indeed logged in,
> > > > but the subsequent request redirects to the login page anyway ..
>
> > > > cheers
>
> > > > dan
>
> > > Hi!
> > > before you call "sfContext::getUser()" each time, you could try
> > > <?php
>
> > > $my_test_user = sfContext::getUser();
> > > $my_test_user->getFOO();
> > > ....
> > > ?>
> > > Also you might wanna try :
> > > <?php
> > > $context = sfContext::getInstance();
> > > $my_test_user = $context->getUser();
> > > $my_test_user->getFOO();
> > > ....
> > > ?>
>
> > > Alecs
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---