t.me/atinfo_chat Telegram группа по автоматизации тестирования

Проверить все ссылки на странице после логина

rest
codeception
api
tools
php
Теги: #<Tag:0x00007f9e35c0e808> #<Tag:0x00007f9e35c0e6a0> #<Tag:0x00007f9e35c0e560> #<Tag:0x00007f9e35c0e420> #<Tag:0x00007f9e35c0e2e0>

(Maksym Polynskyi) #1

Всем привет. Нужно залогиниться в приложение, ввести логин пароль в форму (api нету), получить в куку токен и с этим токеном пройтись по списку ссылок чтобы они возвращали 200.
Звучит как что-то, что уже сделали до меня много раз :slight_smile:
Как это оптимально сделать в codeception? Залогинится через webdriver, а как куку передать в REST тесты? Файл сохранять? Звучит как костыль, поэтому вопросы.
Какие best practice для такой задачи?


(Maksym Polynskyi) #2

Davert (разработчик codeception) рекомендовал эту тулзу вместо codeception, https://github.com/FriendsOfPHP/Goutte


(Denys Duvanov) #3

В codeception есть модуль REST.

Я делаю так:
Проверяю каждый метод в новом методе, аунтификация через сохраненный токен.
Что бы каждый раз не дергать метод вы можете всегда авторизовываться через сохраненный токен.
У меня аунтефикация через Bearer у вас возможно Basic поэтому метод должен быть соответствующий. Всесто amBearerAuthenticated свой.

 public function authenticated(ApiTester $I)
    {
// Аунтификация
        $I->amBearerAuthenticated('token-correct');
        $I->sendGET('/country');
        $I->seeResponseCodeIs(200);
        $I->seeResponseContainsJson(
            [
                'id' => 1,
                'country_code' => 'AD',
                'phone_code' => '376',
                'time_zone' => 'Europe/Andorra',
            ]
        );

// Тут проверяю что не возвращает не нужное поле
        $I->dontSeeResponseJsonMatchesJsonPath('$.user_edit');
    }