From 45d1b4ea7d4e34cd331107f21c72edffa6b1f8d2 Mon Sep 17 00:00:00 2001 From: MeStrak Date: Sun, 24 Jan 2021 21:19:33 +0000 Subject: [PATCH 1/6] chore: version --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 075b86267..6f8b86192 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sanofi/whispr", - "version": "2.0.2", + "version": "2.0.3", "lockfileVersion": 1, "requires": true, "dependencies": { From 977d55bfd89ab49358ccb89997a4692c50fde792 Mon Sep 17 00:00:00 2001 From: MeStrak Date: Sun, 24 Jan 2021 21:24:51 +0000 Subject: [PATCH 2/6] chore(gitpod): install nest cli --- .gitpod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod.yml b/.gitpod.yml index 845021f10..3eb310b00 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,7 +4,7 @@ image: tasks: - init: | touch /tmp/.npm-lock - npm install && npm run build && make && nvm install 12.13.0 + npm install && npm run build && make && npm i -g @nestjs/cli && nvm install 12.13.0 rm /tmp/.npm-lock name: init - command: sudo docker-up From 83e336f264253a691a493aa64f6e8f946a469a59 Mon Sep 17 00:00:00 2001 From: MeStrak Date: Sun, 24 Jan 2021 22:25:19 +0000 Subject: [PATCH 3/6] feat: add health check endpoint --- package.json | 2 +- src/app.module.ts | 5 ++++- src/health/health.controller.ts | 13 +++++++++++++ tests/e2e/{ => app}/app.e2e-spec.ts | 0 tests/e2e/health/health.e2e-spec.ts | 12 ++++++++++++ tests/unit/health/health.controller.spec.ts | 21 +++++++++++++++++++++ 6 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/health/health.controller.ts rename tests/e2e/{ => app}/app.e2e-spec.ts (100%) create mode 100644 tests/e2e/health/health.e2e-spec.ts create mode 100644 tests/unit/health/health.controller.spec.ts diff --git a/package.json b/package.json index 3a4d17df9..7ba54ee11 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@nestjs/mongoose": "7.1.1", "@nestjs/platform-fastify": "7.2.0", "@nestjs/platform-socket.io": "7.2.0", - "@nestjs/terminus": "7.0.1", + "@nestjs/terminus": "^7.0.1", "@nestjs/websockets": "7.2.0", "@types/graphql": "14.5.0", "amazon-cognito-identity-js": "4.5.7", diff --git a/src/app.module.ts b/src/app.module.ts index ec789e0e1..8170b9142 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -2,6 +2,7 @@ import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { MongooseModule } from '@nestjs/mongoose'; +import { TerminusModule } from '@nestjs/terminus'; import { AWSCredsModule } from './auth/aws-creds.module'; import { ConfigModule } from './config/config.module'; import { DistributionModule } from './distribution/distribution.module'; @@ -17,9 +18,11 @@ import { AppService } from './app.service'; import { ConfigService } from './config/config.service'; import { WebhookModule } from './webhook/webhook.module'; import { TagModule } from './tag/tag.module'; +import { HealthController } from './health/health.controller'; @Module({ imports: [ + TerminusModule, GraphQLModule.forRootAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ @@ -48,6 +51,6 @@ import { TagModule } from './tag/tag.module'; WebhookModule, ], providers: [AppService], - controllers: [AppController], + controllers: [AppController, HealthController], }) export class AppModule {} diff --git a/src/health/health.controller.ts b/src/health/health.controller.ts new file mode 100644 index 000000000..bb4cd342d --- /dev/null +++ b/src/health/health.controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get } from '@nestjs/common'; +import { HealthCheck, HealthCheckService, MongooseHealthIndicator } from '@nestjs/terminus'; + +@Controller('health') +export class HealthController { + constructor(private health: HealthCheckService, private mongo: MongooseHealthIndicator) {} + + @Get() + @HealthCheck() + check() { + return this.health.check([() => this.mongo.pingCheck('mongo')]); + } +} diff --git a/tests/e2e/app.e2e-spec.ts b/tests/e2e/app/app.e2e-spec.ts similarity index 100% rename from tests/e2e/app.e2e-spec.ts rename to tests/e2e/app/app.e2e-spec.ts diff --git a/tests/e2e/health/health.e2e-spec.ts b/tests/e2e/health/health.e2e-spec.ts new file mode 100644 index 000000000..8946c74dc --- /dev/null +++ b/tests/e2e/health/health.e2e-spec.ts @@ -0,0 +1,12 @@ +import request from 'supertest'; + +describe('AppController (e2e)', () => { + it('Returns healthy status', async () => { + const res = await request(global.app.getHttpServer()).get('/health'); + expect(res.res.statusCode).toBe(200); + }); + it('Returns healthy graphQL status', async () => { + const res = await request(global.app.getHttpServer()).get('/.well-known/apollo/server-health'); + expect(res.res.statusCode).toBe(200); + }); +}); diff --git a/tests/unit/health/health.controller.spec.ts b/tests/unit/health/health.controller.spec.ts new file mode 100644 index 000000000..f08053572 --- /dev/null +++ b/tests/unit/health/health.controller.spec.ts @@ -0,0 +1,21 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { HealthCheckService, MongooseHealthIndicator } from '@nestjs/terminus'; +import { HealthCheckExecutor } from '@nestjs/terminus/dist/health-check/health-check-executor.service'; +import { HealthController } from '../../../src/health/health.controller'; + +describe('HealthController', () => { + let controller: HealthController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [HealthController], + providers: [HealthCheckService, MongooseHealthIndicator, HealthCheckExecutor], + }).compile(); + + controller = module.get(HealthController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); From fb9143134a31b2f31de836c46a1db057a65caf34 Mon Sep 17 00:00:00 2001 From: MeStrak Date: Sun, 24 Jan 2021 23:11:22 +0000 Subject: [PATCH 4/6] test: fix linting rules for tests and move gql health test --- tests/e2e/app/app.e2e-spec.ts | 4 ++++ tests/e2e/health/health.e2e-spec.ts | 8 ++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/e2e/app/app.e2e-spec.ts b/tests/e2e/app/app.e2e-spec.ts index 881731fa4..b7d2bda44 100644 --- a/tests/e2e/app/app.e2e-spec.ts +++ b/tests/e2e/app/app.e2e-spec.ts @@ -2,4 +2,8 @@ import request from 'supertest'; describe('AppController (e2e)', () => { it('/ (GET)', async () => request(global.app.getHttpServer()).get('/').expect(200).expect('Hello World!')); + it('Returns healthy graphQL status', async () => { + const res = await request(global.app.getHttpServer()).get('/.well-known/apollo/server-health'); + expect(res['res'].statusCode).toBe(200); // eslint-disable-line + }); }); diff --git a/tests/e2e/health/health.e2e-spec.ts b/tests/e2e/health/health.e2e-spec.ts index 8946c74dc..136699104 100644 --- a/tests/e2e/health/health.e2e-spec.ts +++ b/tests/e2e/health/health.e2e-spec.ts @@ -1,12 +1,8 @@ import request from 'supertest'; -describe('AppController (e2e)', () => { +describe('HealthController (e2e)', () => { it('Returns healthy status', async () => { const res = await request(global.app.getHttpServer()).get('/health'); - expect(res.res.statusCode).toBe(200); - }); - it('Returns healthy graphQL status', async () => { - const res = await request(global.app.getHttpServer()).get('/.well-known/apollo/server-health'); - expect(res.res.statusCode).toBe(200); + expect(res['res'].statusCode).toBe(200); // eslint-disable-line dot-notation }); }); From 8aab1a71fcba1892938c1a7b3d582cfe0bec663f Mon Sep 17 00:00:00 2001 From: MeStrak Date: Sun, 24 Jan 2021 23:11:56 +0000 Subject: [PATCH 5/6] fix: set controller return type --- src/health/health.controller.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/health/health.controller.ts b/src/health/health.controller.ts index bb4cd342d..ceebdf886 100644 --- a/src/health/health.controller.ts +++ b/src/health/health.controller.ts @@ -1,5 +1,7 @@ import { Controller, Get } from '@nestjs/common'; -import { HealthCheck, HealthCheckService, MongooseHealthIndicator } from '@nestjs/terminus'; +import { + HealthCheck, HealthCheckService, MongooseHealthIndicator, HealthCheckResult, +} from '@nestjs/terminus'; @Controller('health') export class HealthController { @@ -7,7 +9,7 @@ export class HealthController { @Get() @HealthCheck() - check() { + check(): Promise { return this.health.check([() => this.mongo.pingCheck('mongo')]); } } From 9530551f644ff45b2e04a68d9e219b70bba2e1de Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 25 Jan 2021 16:28:35 +0000 Subject: [PATCH 6/6] chore(release): 2.1.0 # [2.1.0](https://github.com/Sanofi-IADC/whispr/compare/v2.0.3...v2.1.0) (2021-01-25) ### Bug Fixes * set controller return type ([8aab1a7](https://github.com/Sanofi-IADC/whispr/commit/8aab1a71fcba1892938c1a7b3d582cfe0bec663f)) ### Features * add health check endpoint ([83e336f](https://github.com/Sanofi-IADC/whispr/commit/83e336f264253a691a493aa64f6e8f946a469a59)) --- CHANGELOG.md | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3eba99f77..2206f7191 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [2.1.0](https://github.com/Sanofi-IADC/whispr/compare/v2.0.3...v2.1.0) (2021-01-25) + + +### Bug Fixes + +* set controller return type ([8aab1a7](https://github.com/Sanofi-IADC/whispr/commit/8aab1a71fcba1892938c1a7b3d582cfe0bec663f)) + + +### Features + +* add health check endpoint ([83e336f](https://github.com/Sanofi-IADC/whispr/commit/83e336f264253a691a493aa64f6e8f946a469a59)) + ## [2.0.3](https://github.com/Sanofi-IADC/whispr/compare/v2.0.2...v2.0.3) (2021-01-24) diff --git a/package.json b/package.json index 7ba54ee11..fee0fa69a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sanofi/whispr", - "version": "2.0.3", + "version": "2.1.0", "private": true, "description": "", "author": "",