All files / src/web/routes swaggerRoutes.ts

100% Statements 14/14
75% Branches 6/8
100% Functions 0/0
100% Lines 14/14

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 53 54 55 56 57 58 59 60 61 627x 7x 7x 7x 7x 7x 7x   7x       7x           7x                         7x                                                 7x   7x   7x  
import express from "express";
import swaggerJSDoc from "swagger-jsdoc";
import swaggerUi from 'swagger-ui-express';
import { cardOperationTransaction, standardTransferTransaction } from "../schemas/transaction";
import GoogleOAuth2Constants from "../../constants";
import { transactionTypes } from "../schemas/transactionTypes";
import { entryTypes } from "../schemas/entryTypes";
 
const router = express.Router();
 
const scopes: {
    [key in typeof GoogleOAuth2Constants.scopes[number]]: string;
} = {
    'https://www.googleapis.com/auth/userinfo.profile': 'See your personal info, including any personal info you\'ve made publicly available',
    'https://www.googleapis.com/auth/userinfo.email': 'See your primary Google Account email address',
    'https://www.googleapis.com/auth/gmail.readonly': 'View your email messages and settings',
};
 
const googleOAuth2SecurityScheme = {
    Google: {
        type: 'oauth2',
        flows: {
            authorizationCode: {
                authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline',
                tokenUrl: GoogleOAuth2Constants.defaultRedirectUri,
                scopes: scopes
            }
        }
    }
};
 
const options = {
    definition: {
      openapi: '3.0.0',
      servers: [
        { url: `${process.env.UNIXPENSE_HOST_PREFIX ?? ''}/api` }
      ],
      info: {
        title: 'Unixpense Tracker API',
        version: process.env.VERSION ?? 'develop',
      },
      components: {
        securitySchemes: {
          ...googleOAuth2SecurityScheme
        },
        schemas: {
          cardOperationTransaction,
          standardTransferTransaction,
          transactionTypes,
          entryTypes,
        }
      }
    },
    apis: [ './**/web/routes/*.{js,ts}' ],
  };
 
const swaggerSpec = swaggerJSDoc(options);
 
router.use('/', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
 
export { router }