小编Gab*_*dez的帖子

无法在测试环境中从安全上下文中获取用户

我正在尝试测试一个API调用方法,该方法使用Basic Auth进行安全化,并且需要从安全上下文中检索用户.

我的config_test.yml文件(我正在使用内存数据库进行测试env):

imports:
    - { resource: config_dev.yml }

doctrine:
    dbal:
        driver: pdo_sqlite
        path: :memory:
        memory: true
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

framework:
    test: ~
    session: ~ 
    profiler:
        enabled: false

web_profiler:
    toolbar: false
    intercept_redirects: false

swiftmailer:
    disable_delivery: true
Run Code Online (Sandbox Code Playgroud)

我创建了一个测试,我按如下方式实例化客户端:

    $options =  array(
        'environment' => 'test',
        'debug'       => true,
    );

    $this->client = static::createClient($options);
Run Code Online (Sandbox Code Playgroud)

测试看起来像:

public function testProfileAction()
{
    $mockUser = new User();
    $mockUser->setUsername("user");
    $mockUser->setEmail("user@user.com");
    $mockUser->setName("User");
    $mockUser->setSurname("User");
    $mockUser->setPlainPassword("1234567890");
    $this->em->persist($mockUser);
    $this->em->flush();

    $crawler = $this->client->request('GET', '/api/1/user/profile', array(), array(), array(
        'PHP_AUTH_USER' => 'user',
        'PHP_AUTH_PW'   => …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle symfony-2.2

6
推荐指数
1
解决办法
2650
查看次数

Symfony2 - 在自定义验证器中调用 EmailValidator

我正在创建一个自定义验证器约束来验证“联系人”,类似于“John Doe <jdoe@example.com>”。按照食谱,我创建了约束类:

<?php

namespace MyCompany\MyBundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;

/**
 * @Annotation
 */
class Contact extends Constraint
{
    public $message = 'The string "%string%" is not a valid Contact.';
}
Run Code Online (Sandbox Code Playgroud)

并创建了验证器:

<?php

namespace MyCompany\MyBundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\EmailValidator;

class ContactValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint)
    {
        if (!preg_match('#(.*)\s+<(.*)>#', $value, $matches)) {
            $this->context->addViolation($constraint->message, array('%string%' => $value));
        }

        $emailValidator = new EmailValidator();
        if (isset($matches[2]) && $emailValidator->validate($matches[2], new Email())) {
            $this->context->addViolation($constraint->message, array('%string%' => $value));    
        } …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony-2.3

5
推荐指数
2
解决办法
4496
查看次数

标签 统计

symfony ×2

fosuserbundle ×1

php ×1

symfony-2.2 ×1

symfony-2.3 ×1