# All files / nodejs-homework-API app.js

95.83% Statements 23/24
50% Branches 1/2
50% Functions 1/2
95.83% Lines 23/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    531x
    1x
    1x
    1x
    1x
    1x

    1x
    1x
    1x

    1x
    1x
    1x
    1x

    1x
    1x
    1x
    1x

    1x
    1x

    1x

    1x
    3x

    1x

     const express = require("express");
    const path = require("path");
    const logger = require("morgan");
    const cors = require("cors");
    const helmet = require("helmet");
    const apiLimiter = require("./helpers/apiLimiter");

    const contactsRouter = require("./routes/api/contacts");
    const authenticationRoute = require("./routes/api/user");
    const app = express();

    const FOLDER_IMAGES = process.env.DIR_IMAGES;
    app.use(express.static(path.join(__dirname, FOLDER_IMAGES)));
    console.log(path.join(__dirname, FOLDER_IMAGES));
    const formatsLogger = app.get("env") === "development" ? "dev" : "short";

    app.use(helmet());
    app.use(logger(formatsLogger));
    app.use(cors());
    app.use(express.json());

    app.use("/api/contacts", apiLimiter, contactsRouter);
    app.use("/api/auth", apiLimiter, authenticationRoute);

    app.use((req, res) => {
      res.status(404).json({ message: "Not found" });
    });

    app.use((err, req, res, next) => {
      res.status(500).json({ message: err.message });
    });

    module.exports = app;
    // Дополнительное задание - необязательное
    // 1. Написать юнит-тесты для мидлвара по авторизации
    // (при помощи mocha, sinon)
    // все методы и функции, вызываемые мидлваром (вместе с next) должны быть заглушены при помощи sinon
    // нужно проверить количество вызовов заглушок и аргументы с которыми они вызывались в случаях, когда:
    // пользователь не передал токен в Authorization заголовке
    // токен пользователя невалидный
    // токен пользователя валидный
    // Подсказка:
    // Иногда Вам может понадобится переопределить возвращаемые значения
    // методов-заглушок
    // 2. Написать приемочные тесты для ендпоинта обновления аватарок
    // (дополнительно нужно будет использовать supertest)
    // Тесты должны проверять:
    // возвращается ли ответ со статус кодом 401, если токен пользователя невалидный
    // В случае, если все прошло успешно, проверить:
    // возвращается ли ответ со статус кодом 200
    // возвращается ли тело ответа в правильном формате
    // добавляется ли avatarUrl в документ целевого пользователя