Phpunit Testing Controller только неавторизованный symfony 3.4 - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь проверить свой контроллер, и по какой-то причине единственный полученный код состояния - UNAUTHORIZED.Я не уверен, в чем проблема, поэтому я надеюсь, что кто-то может помочь мне.Я использую SYmfony 3.4, и это мой код:

loginFormAuth:

protected function login(array $roles = ['ROLE_USER'])
{
    $session = $this->client->getContainer()->get('session');

    $firewallContext = 'api';

    $token = new UsernamePasswordToken('test', null, $firewallContext, $roles);
    $session->set('_security_' . $firewallContext, serialize($token));
    $session->save();

    $cookie = new Cookie($session->getName(), $session->getId());
    $this->client->getCookieJar()->set($cookie);
}

protected function requestUrl($url)
{
    return $this->client->request('GET', $url);
}


public function testGetProductsAsAdmin()
{
    $this->logIn(array('ROLE_ADMIN');

    $url = 'api/products';
    $this->getUrl($url);

    $this->assertSame(Response::HTTP_OK, $this->client->getResponse()->getStatusCode());
}


public function getProductAction(Request $request, ListProductService $service)
{
    $this->checkAccess($this->getUser()); // so here only the admin has permission

    $result = $service->execute();

    return new Response($this->serializer->serialize($result));
}

security.yml

access_control:
    - { path: ^/api/products, roles: ROLE_ADMIN }

Есть предложения?

1 Ответ

0 голосов
/ 17 декабря 2018

одна вещь, которую я заметил выше, в функции: testGetProductsAsAdmin(), вы вызываете функцию: $this->getUrl($url); не видите эту функцию в коде, который вы перечислили, вы хотите вызвать

$this->requestUrl($url);?

также вопрос, return $this->client->request('GET', $url); отсутствует ли токен в этом запросе?

...