Giter Club home page Giter Club logo

cvs-tsk-cert-gov-notify's Introduction

cvs-tsk-cert-gov-notify

Lambda using gov-notify API to send notifications to users when test certificate generation task is triggered.

Dependencies

The project runs on node >10 with typescript and serverless framework. For further details about project dependencies, please refer to the package.json file. nvm is used to managed node versions and configuration explicitly done per project using an .npmrc file.

Prerequisites

Please install and run the following securiy programs as part of your development process:

These will be run as part of your projects hooks so you don't accidentally introduce any new security vulnerabilities.

You will also require Docker to run the service locally if you wish to mock external dependencies.

Architecture

End to end design

All in one view

Getting started

Set up your nodejs environment running nvm use and once the dependencies are installed using npm i, you can run the scripts from package.json to build your project. This code repository uses serverless framework to mock AWS capabilities for local development.

Environmental variables

  • The BRANCH environment variable indicates in which environment is this application running. Not setting this variable will result in defaulting to local.

Scripts

  • Building the docker image - npm run build:docker
  • Building with source maps - npm run build:dev
  • Building without source maps - npm run build

Running

  • The S3 server can be started by running npm run start:docker.
  • The app can be started by running npm run start

Configuration

The configuration file can be found under src/config/config.yml. Environment variable injection is possible with the syntax: ${BRANCH}, or you can specify a default value: ${BRANCH:local}.

Lambda Invoke

The invoke configuration contains settings for both the local and the remote environment. The local environment contains configuration for the Lambda Invoke local endpoint, as well as configuration for loading mock JSON response.

invoke:
  local:
    params:
      apiVersion: 2015-03-31
      endpoint: http://localhost:3000
    functions:
      testResults:
        name: cvs-svc-test-results
        mock: tests/resources/test-results-response.json
      techRecords:
        name: cvs-svc-technical-records
        mock: tests/resources/tech-records-response.json
  remote:
    params:
      apiVersion: 2015-03-31
    functions:
      testResults:
        name: test-results-${BRANCH}
      techRecords:
        name: technical-records-${BRANCH}

S3

The S3 configuration contains settings for both the local and the remote environment. The local environment contains configuration for the local S3 instance. The remote environment does not require parameters.

s3:
  local:
    endpoint: http://localhost:7000
    s3ForcePathStyle: true
  remote: {}

MOT

The MOT configuration contains the certificate generation endpoint URL and the expected document names. For more information, please visit the Confluence page

mot:
  endpoint: https://9fjfatqw19.execute-api.eu-west-1.amazonaws.com/cvs-dev/CVS
  documentNames:
    vt20: VT20.pdf
    vt20w: VT20W.pdf
    vt30: VT30.pdf
    vt30w: VT30W.pdf
    vt32ve: VT32VE.pdf
    vt32vew: VT32VEW.pdf
    prs: PRS.pdf
    prsw: PRSW.pdf
    ct20: CT20.pdf
    ct30: CT30.pdf
    vtp20: VTP20.pdf
    vtp30: VTP30.pdf
    psv_prs: PSV_PRS.pdf
    vtg5: VTG5.pdf
    vtg5a: VTG5A.pdf

Secrets

The secrets.yml file needs to be injected at deployment time, and should contain the API key for the MOT service.

mot:
  api_key: [API_KEY_HERE]

Debugging

The following environmental variables can be given to your serverless scripts to trace and debug your service:

AWS_XRAY_CONTEXT_MISSING = LOG_ERROR
SLS_DEBUG = *
BRANCH = local

Testing

Unit testing

In order to test, you need to run the following:

npm run test # unit tests

End to end

Infrastructure

We follow a gitflow approach for development. For the CI/CD and automation please refer to the following pages for further details:

Contributing

Please familiarise yourself with commitlint and conventional commits conventions as a hook is in place to enforce standards.

Hooks and code standards

The projects has multiple hooks configured using husky which will execute the following scripts: security-checks, audit, eslint, prepush. The codebase uses typescript clean code standards as well as sonarqube for static analysis.

SonarQube is available locally, please follow the instructions below if you wish to run the service locally (brew is the preferred approach).

Static code analysis

Brew (recommended):

  • Install sonarqube using brew
  • Change sonar.host.url to point to localhost, by default, sonar runs on http://localhost:9000
  • run the sonar server sonar start, then perform your analysis npm run sonar-scanner

Manual:

  • Download sonarqube
  • Add sonar-scanner in environment variables in your profile file add the line: export PATH=<PATH_TO_SONAR_SCANNER>/sonar-scanner-3.3.0.1492-macosx/bin:$PATH
  • Start the SonarQube server: cd <PATH_TO_SONARQUBE_SERVER>/bin/macosx-universal-64 ./sonar.sh start
  • In the microservice folder run the command: npm run sonar-scanner

cvs-tsk-cert-gov-notify's People

Contributors

castancu avatar cb-cs avatar cvs-ops avatar daniel-searle avatar dependabot[bot] avatar githanium avatar gjulien-bjss avatar irina005 avatar jonlazarinidd avatar khodderdvsa avatar leifkemp-bjss avatar m-coslett avatar m-ujaffer avatar martiuk avatar mcarrick1 avatar naathanbrown avatar nblore avatar oalexandru avatar premghinde avatar ruairidh-bjss avatar spwalsh94 avatar taylorhalf avatar tealorg avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

uk-gov-mirror

cvs-tsk-cert-gov-notify's Issues

Template placeholder parsing seems slightly off in 'Your driving test result on ...' email.

Hi folks,

Sorry to bother you - I'm also a dev within a different branch of govt (HMCTS).

By a lucky twist of fate, when I passed my test I spotted a telltale gov notify placeholder in the confirmation email:

image

I figured I should probably let someone know - this may not be the right repo for this, so I apologise if so. I would have made a PR but I guess your templates are probably not stored within github.

If I can provide any clarity on my personal info so this can be tracked, please feel free to contact me regarding this issue and I'll share whatever is desired :)

Thanks,

Danny

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.