3

サービスSymfony2で機能テストを1回やり直したい。アイデアは、前にコントローラーを呼び出し、その後、関数をサービスにロードすることです。関数はこれです:

function save($title,$description,$setId,$html,$validate,$articles){
    $articles = explode(',', $articles);

    if (false === $this->container->get('security.context')->isGranted('ROLE_USER')) {
        throw new \Exception("Not allowed");
    }else{
        $profileId  = $this->container->get('security.context')->getToken()->getUser()->getId();
        $userName   = $this->container->get('security.context')->getToken()->getUser()->getUserName();
    }
}

そして今、私のテストコードは:

    $client = static::createClient();

    $crawler = $client->request('GET','/sets/save',
            array(
                    "title"=>"rtyui",
                    "description"=>"aksdjhashdkjahskjdh",
                    "set_id"=>"",
                    "html"=>"",
                    "validate"=>1,
                    "articels"=>"3,4"
                )
        ); 

しかし、私がこの行を持っていることはまだ機能していません:

if (false === $this->container->get('security.context')->isGranted('ROLE_USER')) {
        throw new \Exception("Not allowed");

さて、問題は、検証プロセスをどのように行うことができるかということです。ドキュメントを示すように、この検証プロセスを実行しようとしました。

$client = static::createClient(array(), array(
    'PHP_AUTH_USER' => 'username',
    'PHP_AUTH_PW'   => 'pa$$word',
));

しかし、私は同じエラーを受け取りました。

4

1 に答える 1

8

また、セキュリティトークンでユーザーにログインできます。

$client = static::createClient();
$container = $client->getContainer();
$container->get('security.context')->setToken(
    new UsernamePasswordToken(
        $user, null, 'main', $user->getRoles()
    )
);

どこ:

  1. $user-役割を持つユーザーエンティティのインスタンスROLE_USER
  2. main-セキュリティプロバイダー名
于 2012-09-07T07:46:17.257 に答える