Каждый пункт 10 баллов, частичная реализация пункта 5 баллов. Каждый коммит после дедлайна (за исключением коммитов в README.md) минус 10 баллов
- в корне репозитория создана папка с произвольным названием (например caesar-cipher-cli, task1 и т.п.), в которой расположены файлы с кодом программы
- в README.md должно быть описано, как можно запустить программу из командной строки, описаны аргументы, которые можно передать приложению
- если переданы все аргументы, приложение читает из файла и записывает в файл зашифрованный/расшифрованный текст, при этом предыдущие записи не удаляются
- если не переданы обязательные аргументы, приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0
- если переданы аргументы с путями к файлам, но файлы отсутствуют (или к ним невозможен доступ), приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0
- если не передан аргумент с путем до файла на чтение, то чтение осуществляется из process.stdin
- если не передан аргумент с путем до файла на запись, то вывод осуществляется в process.stdout
- шифруются/дешифруются только латинские буквы, регистр сохраняется, остальные символы не изменяются
- если текст вводится из консоли, то программа не должна завершаться после выполнения шифровки/дешифровки введенного текста, т.е. должна быть возможность ввести еще текст
- кодовая база не находится в одном файле, а разделена на файлы в соответствии с выполняемыми задачами (например - функция, преобразующая строку, в отдельном файле, код, создающий transform стрим, в отдельном файле, функция для парсинга и валидации аргументов в отдельном файле и т.п.)
N.B. console.error
пишет ошибку в process.stderr
, большинство библиотек для парсинга параметров при ошибке также пишут в process.stderr
. В VS Code, если запустить приложение в режиме дебага, можно увидеть в панели output, что цвет сообщений, выводимых в process.stdout и process.stderr отличаются.
Проверку тестов следует проводить в Node.js последней LTS версии. При выставлении оценок используйте рекомендации RSSchool. Минимальная оценка за таску не может быть меньше 0. Максимально возможная оценка: 170 баллов - 1 пункт, 10 баллов - 3 пункт, 10 баллов - 4 пункт, 10 баллов - 5 пункт, итого: 200 баллов.
- каждый успешный тест при выполнении скрипта
npm run test
+10 баллов. - в тестах не должно быть исправлений, за исключением обновлений из репозитория RS School. Если есть другие изменения в файлах с тестами, за каждый исправленный тест минус 10 баллов.
Как обновиться из репозитория RS School
- Установить VSCode как дефолтный GIT редактор (не обязательный пункт)
git config --global core.editor "code --wait"
- Закомитать текущие изменения
- Добавить в качестве дополнительного удаленного репозитория темплейт
git remote add template https://github.com/rolling-scopes-school/nodejs-course-template.git
- Применить изменения из темплейта
git pull template master --allow-unrelated-histories
- Применить все свои изменения
git checkout --ours ':!node_modules'
- Применить все изменения для папки
test
git checkout --theirs ./test
- Сохранить изменения
git add .
- Продолжить мердж
git commit
- Закрыть вкладку VSCode с описанием коммита. Если дефолтный редактор не меняли - выйти из VIM
:qa
- Открыть глобальный
.gitconfig
:git config --global -e
- Добавить в глобальный
.gitconfig
следующие строки. Если вы не используете VSCode заменитеcode
на соответстующую вашей IDE команду (или путь к выполняемому файлу).[diff] tool = vscode [difftool "vscode"] cmd = code --wait --diff $LOCAL $REMOTE
- Добавить в качестве дополнительного удаленного репозитория темплейт
git remote add template https://github.com/rolling-scopes-school/nodejs-course-template.git
- Создать локальную копию ветки master из темплейта
git fetch template master:template-master
- Запустить сравнение для текущей ветки с веткой master темплейта
git difftool <название текущей ветки> template-master test/
- код приложения, работающий с сущностью user разделен по модулям в соответствии с его назначением (к примеру: работа с запросом и ответом в *.router.js, бизнес-логика в *.service.js, работа с хранилищем данных в *.repository.js и т.п.) + 10 баллов
- аналогично пункту 3 для boards +10 баллов
- аналогично пункту 3 для tasks + 10 баллов
- каждый коммит после дедлайна минус 10 баллов.
При выставлении оценок используйте рекомендации RSSchool.
Максимальная оценка - 100 баллов.
- реализовано логирование (url, query parameters, body) для всех запросов к серверу с использованием middleware +20 баллов
- добавлена централизованная обработка всех ошибок, которая включает отправку респонса с соответствующим кодом http статуса и их логирование с использованием middleware +20 баллов
- добавлены обработка и логирование ошибок на событие
uncaughtException
+20 баллов - добавлены обработка и логирование ошибок на событие
unhandledRejection
+20 баллов - процесс логирования осуществляется единственным модулем +20 баллов
- каждый коммит после дедлайна минус 10 баллов.
Все тесты npm run test
должны проходить, если не проходят тесты минус 10 баллов.
Подсказки:
- (3 пункт) Для проверки, пропишите
throw Error('Oops!')
ВНЕ инициализации express и ПОСЛЕprocess.on('uncaughtException', () => {})
. Например:
// Express initialization
const app = express().use(...);
// Exceptions catcher
process.on('uncaughtException'...);
// PUT IT HERE
throw Error('Oops!');
module.exports = app;
Как результат: вывод в консоли отловленной ошибки
- (4 пункт) Для проверки, пропишите
Promise.reject(Error('Oops!'))
ВНЕ инициализации express и ПОСЛЕprocess.on('unhandledRejection', () => {})
:
// Express initialization
const app = express().use(...);
// Exceptions catcher
process.on('unhandledRejection'...);
// PUT IT HERE
Promise.reject(Error('Oops!'));
module.exports = app;
Как результат: вывод в консоли отловленной ошибки
При выставлении оценок используйте рекомендации RSSchool.
Максимальная оценка - 100 баллов. Минимальная оценка - 0 баллов.
- в качестве источника данных для users используется MongoDB база данных +30 баллов.
- в качестве источника данных для tasks используется MongoDB база данных +30 баллов.
- в качестве источника данных для boards используется MongoDB база данных +30 баллов.
- строка, используемая для подключения к базе данных хранится в
.env
+10 баллов. - каждый непроходящий тест минус 10 баллов.
- за каждый исправленный тест минус 10 баллов. Смотри Как увидеть различия для папки
test
между текущей веткой и веткой master из темплейта. - каждый коммит после дедлайна минус 10 баллов.
При выставлении оценок используйте рекомендации RSSchool.
Максимальная оценка - 100 баллов. Минимальная оценка - 0 баллов.
- Пароли пользователей сохраняются в базу в виде хэша с использованием
bcrypt
. +20 баллов. - Добавлен роут
/login
, связанная с ним логика разделена между контроллером (middleware) и соответствующим сервисом. В случае отсутствия юзера в БД, возвращается 403 (Forbidden) HTTP статус. +20 баллов. - JWT токен содержит userId и login, секретный ключ хранится в
.env
+20 баллов. - Доступ ко всем роутам, за исключением
/login
,/doc
и/
, требует аутентификации +20 баллов. - Проверка на наличие токена в реквесте реализована в отдельной middleware на уровне приложения. В случае если токен не валидный, или отсутствует, возвращается 401 (Unauthorized) HTTP статус. +20 баллов.
- Для успешного прохождения тестов обязательно наличие в БД юзера с логином - admin, паролем - admin. Все тесты
npm run test:auth
должны проходить успешно, каждый не пройденный тест минус 10 баллов. - каждый коммит после дедлайна минус 10 баллов.