Чеклист для самопроверки. 15 Спринт.

Работа принимается

Статус коды ошибок

Если в любом из запросов что-то идёт не так, сервер возвращает ответ с ошибкой и соответствующим ей статусом:

  • 400 — переданы некорректные данные в метод создания карточки, пользователя, обновления аватара пользователя и профиля;
  • 401 — передан неверный логин или пароль;
  • 401 — эту ошибку возвращает авторизационный middleware, если передан неверный JWT;
  • 404 — не найдена карточка или пользователь;
  • 409 — при регистрации указан email, который уже существует на сервере;
  • 500 — ошибка по умолчанию. Сопровождается сообщением «На сервере произошла ошибка».
  • Перед отправкой ошибки проверьте её, например так:

    
    const ERROR_CODE = 400;
    
    if(err.name === 'SomeErrorName') return res.status(ERROR_CODE).send(...)
                  

  • В контроллерах предусмотрена гарантированная отправка сообщения об ошибке.
  • Ответ с ошибкой содержит только поле message. Сообщение об ошибке соответсвует ее типу.

Настройка и деплой бэкенда

  • Все запросы и ответы записываются в файл request.log. Подойдёт вариант, если студент реализовал запись не в файл, а в stdout или сторонний сервис логов.
  • Все ошибки записываются в файл error.log. Подойдёт вариант, если студент реализовал запись не в файл, а в stdout или сторонний сервис логов.
  • Файлы логов не должны добавляться в репозиторий.
  • IP-адрес и URL сервера указаны в README.md.
  • К серверу можно обратиться по IP-адресу из README.md.
  • К домену из README.md можно обратиться по http и по https.
  • В режиме разработки (когда process.env.NODE_ENV !== 'production') код запускается и работает. Без файла .env ошибки не происходит.
  • Если в коде студента есть секретный ключ для верификации JWT в режиме разработки, он не должен верифицировать JWT продакшена. Чтобы проверить JWT, нужно зайти в папку проекта с установленным jsonwebtoken и исполнить этот код:
    
    const jwt = require('jsonwebtoken');
    
    const YOUR_JWT = ''; // вставьте сюда JWT, который вернул публичный сервер
    const SECRET_KEY_DEV = ''; // вставьте сюда секретный ключ для разработки из кода
    
    try {
      const payload = jwt.verify(YOUR_JWT, SECRET_KEY_DEV);
    
      console.log('\x1b[31m%s\x1b[0m', `
        Надо исправить. В продакшне используется тот же
        секретный ключ, что и в режиме разработки.
      `);
    } catch (err) {
      if (err.name === 'JsonWebTokenError' && err.message === 'invalid signature') {
        console.log(
          '\x1b[32m%s\x1b[0m',
          'Всё в порядке. Секретные ключи отличаются'
        );
      } else {
        console.log(
          '\x1b[33m%s\x1b[0m',
          'Что-то не так',
          err
        );
      }
    }
                  
  • После GET-запроса на URL /crash-test сервер самостоятельно восстанавливается и продолжает принимать другие запросы.
  • Сертификат выпущен и активен. Это можно проверит по ссылке: https://www.sslshopper.com/ssl-checker.html.

Работа отклоняется от проверки

  • При сборке или запуске проекта возникают ошибки.
  • Часть функциональности не реализована, например, бэкенд не задеплоен на удалённый сервер.
  • Работа содержит вопросы или просьбы о помощи к ревьюеру.
  • На повторных итерациях не исправлены критические замечания.