В настоящее время я пытаюсь протестировать приложение Symfony с защищенными страницами, используя функциональные тесты.
Сценарий
- Войдите в систему как пользователь, который является суперадмином (таким образом, обходя любую проверку учетных данных)
- Просмотр защищенной страницы (здесь отображается список документов)
- Проведите несколько различных тестов, чтобы проверить различные требования.
Задача
Когда я просматриваю защищенную страницу, вместо 200 HTTP
кода, я получаю 401 "Unauthorized" HTTP code
, что означает, что я пытаюсь получить доступ к странице без аутентификации / без необходимых учетных данных.
Даже если я войду в систему как обычный пользователь с соответствующими учетными данными Symfony, я все равно получу 401 error
.
Используемый код
//CapWebndfTestFunctional.class.php
class CapWebndfTestFunctional extends sfTestFunctional
{
/**
* Login as a user
* @param string $username User's username
*/
public function signInAs($username)
{
$user = Doctrine_Core::getTable('sfGuardUser')->findOneByUsername($username);
//force the context to be created
$this->browser->getContext(true)->getUser()->signIn($user);
$this->info(sprintf('Signin user using username "%s"', $username));
if ($user->getIsSuperAdmin())
{
$this->info('Beware, you are logged as a superadmin!');
}
return $this;
}
}
Тестовый набор:
<?php
$browser = new CapWebndfTestFunctional(new sfBrowser());
$browser->
signInAs('superadmin')->
with('user')->begin()->
isAuthenticated()-> //ensure that I'm well authenticated
end()->
get('/document')-> //a secured page
with('request')->begin()->
isParameter('module', 'document')->
isParameter('action', 'index')->
end()->
with('response')->begin()->
isStatusCode(200)-> //as superadmin is a sfGuard superadmin, this should be 200;
end()->
// Here some other tests...
/* Outputs :
clem@ubuntu:/var/www/cap_webndf/trunk$ php symfony test:functional backend documentActions
> Signin user using username "superadmin"
> Beware, you are logged as a superadmin!
ok 1 - user is authenticated
# get /document
ok 2 - request parameter module is document
ok 3 - request parameter action is index
not ok 4 - status code is 200
# Failed test (./lib/vendor/symfony/lib/test/sfTesterResponse.class.php at line 412)
# got: 401
# expected: 200
*/
Я действительно застрял на этом, так что спасибо за любую помощь.
Редактировать : Если хотите, вот использованный код в сущности
РЕДАКТИРОВАТЬ : В чем разница между переходом на страницу входа и отправкой (поддельным) почтовым запросом и прямым входом в систему с помощью специального метода sfGuard?