首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Symfony2单元中处理身份验证-测试

在Symfony2单元中处理身份验证-测试
EN

Stack Overflow用户
提问于 2011-12-15 15:25:41
回答 2查看 5.1K关注 0票数 2

我想为通过Symfony2身份验证机制保护的控制器编写功能测试。我读了很多描述它的教程,但不幸的是,所有的教程都不适用于当前的Symfony2版本(测试了2.0.4到2.0.7)。

我到目前为止所做的事:

在config_test.yml中添加安全设置

代码语言:javascript
复制
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    providers:
        main:
            users:
                admin:  { password: adminsmurf, roles: [ 'ROLE_USER' ] }
                inventory: { password: inventorysmurf, roles: [ 'ROLE_ADMIN', 'ROLE_USER', 'ROLE_INVENTORY' ] }
                andon: { password: andonsmurf, roles: [ 'ROLE_ADMIN', 'ROLE_ANDON' ] }

    firewalls:
        main:
            pattern:    /.*
            http_basic:
                realm: "Secured Area"
                provider: main
            logout:     true
            security:   true
            stateless:  true
            anonymous: true

单元-测试

代码语言:javascript
复制
class DefaultControllerTest extends WebTestCase
{

    public function testCorrectAuthentificationCredentials()
    {
        $client = static::createClient();

        $crawler = $client->request('GET', '/inventory/index', array(), array(), 
                                    array(
                                          'PHP_AUTH_USER' => 'admin',
                                          'PHP_AUTH_PW' => 'adminsmurf'
                                        ));

        $response = $client->getResponse();

        $this->assertEquals(200, $response->getStatusCode());
    }
}

此测试失败(预期为200,获取302)。有人能帮我做错事吗?

更新16/12

我又走了一步。因为我在常规安全文件中使用表单登录。Symfony刚刚将http_basic登录添加到防火墙。这就是重定向的原因(302)。我刚加了一个

代码语言:javascript
复制
form_login: false

到测试安全设置。现在没有重定向,但我得到401状态代码作为结果。

EN

回答 2

Stack Overflow用户

发布于 2011-12-16 15:44:30

我正在说明,应该作为请求的第四个参数,而不是第五个参数。源是文档--如果它们不能工作,我们需要更新它们。但请告诉我:

http://symfony.com/doc/2.0/cookbook/testing/http_authentication.html

而且,一旦正确工作,就可以重新打开表单,因为Symfony没有任何理由使用表单的入口点(<-花哨字:)来重定向您。

希望这能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2013-09-13 15:50:12

在我的例子中,问题是测试环境使用一个单独的数据库,但是我忘记了用用户填充它。m)

我知道,这可能并不能真正解决你的问题,但是让我们看看,如果每个有相同问题的人都投票的话,这会得到多少支持。如果没人这么做,我是唯一一个这么蠢的人。

顺便说一句,您可以尝试内存中的提供程序来查看您的身份验证是否由于数据库问题等原因而失败。所以我才发现我的问题是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8522432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档