Тестовое задание на должность PHP-разработчика
Тестовое задание
Необходимо реализовать клиент к предлагаемому api не используя фреймворк и написать к нему unit тесты (PhpUnit). Все запросы к интеграции необходимо производить при помощи Guzzle (http://docs.guzzlephp.org/en/stable/) . Результат работы выложить на github.
Легенда
Надо написать клиент к http://testapi.ru который позволяет запросить и обновить данные пользователя в сторонней системе. Так же необходимо реализовать функционал использования этого клиента, где:
- мы запрашиваем данные пользователя,
- затем мы изменяем у него некоторые учетные данные (имя , флаг блокировки и его права) и отправляем результат в интегрируемую систему.
Авторизация
Для работы с api необходимо изначально произвести авторизацию по адресу http://testapi.ru/auth
- метод GET
- параметры login и pass
- где login=test, pass=12345 результатом будет json в котором будет содержаться token
ответ: { "status": "OK", "token": "dsfd79843r32d1d3dx23d32d" }
Получение данных пользователя
Так же api предоставляет возможность получения данные пользователя по адресу http://testapi.ru/get-user/?token=
- метод GET
- username = ivanov
- token = токен полученный при авторизации результатом будет json в котором будет содержать данные пользователь
ответ: { "status": "OK", "active": "1", "blocked": false, "created_at": 1587457590, "id": 23, "name": "Ivanov Ivan", "permissions": [ { "id": 1, "permission": "comment" }, { "id": 2, "permission": "upload photo" }, { "id": 3, "permission": "add event" } ] }
Отправка данных пользователя
И api предоставляет возможность обновить данные пользователя по адресу http://testapi.ru/user//update?token=
- метод POST
- тело запроса { "active": "1", "blocked": true, "name": "Petr Petrovich", "permissions": [ { "id": 1, "permission": "comment" }, ] }
Ответ: { "status": "OK", }
Для каждого запроса Помимо стандартных HTTP кодов ответа есть еще дополнительный параметр "status" который сигнализирует нам об успешности операции:
- Ok - успешно
- Not found - пользователь не найден
- Error - ошибка