Skip to content

albertcrowley/srt-api

 
 

Repository files navigation

srt-server

CircleCI Maintainability Test Coverage

The srt-server application is an expressjs Node application that provides a REST API for the srt-client. Together the client/server provide a web portal to view reports from and provide feedback to the Solicitation Review Tool (SRT).

Release notes are available in the release-notes.md file.

Deployment

This web application is intended for deployment to cloud.gov. Deployment is most easily performed using the deploy.sh script which will baseline, build, deploy, and configure the SRT application. In the most simple case of deploying a previously baselined version of the application to the staging space on cloud.gov:

deploy.sh staging v1.4.0

The full list of options available during deployment are:

usage: deploy.sh [OPTIONS] <SPACE> <TAG>

    -d --dry-run : do everything but push to cloud.gov
    -s --serverrepo : URI for srt-server repository
    -c --clientrepo : URI for srt-client repository
    -t --tempdir : defaults to /tmp
    -y --yes : delete existing git repo in temp directory
    -n --no : do not delete any existing git repo in temp directory
    -b --create-tag-from-branch : Create TAG at head of this branch

Running / Configuration

The npm run start command will start the server. Database configuration options are read from server/dbConfig/dbConfig.js and general configuration from server/config/config.js file. dbConfig.json holds the configuration for every environment the app amy be run in and the specific configuration for this run is chosen based on the NODE_ENV environment variable.

Database connection information is stored in the dbConfig.jsjs file but will be overridden by any settings in the VCAP_SERVICES environment variable. This feature allows cloud.gov to inject the proper database connection information upon startup.

There are a few environment variables that control the configuration or set security sensitive keys. The deployment script may will prompt you for some of these if they are not already configured in the target cloud.gov environment. On cloud.gov any variables you would like to configure manually can be changed using the cloud.gov control panel or CLI.

Environment Variables

  • SENDGRID_API_KEY - If using Sendgrid as an email server, set this variable to an appropriate API key. If this is not set in a cloud.gov environment, the deployment script will give the option to set it.
  • NODE_ENV - This should be set based on the environment. It is used to choose between the available configuration settings. Examples include production, cloudstage, clouddev, circle, development. The definitive list can be found by reading config.js.
  • VCAP_SERVICES - cloud.gov will automatically set this environment variable. It contains connection information for the configured postgres database for that environment - and also any other cloud.gov services or connections that may be configured int the future.
  • VCAP_APPLICAION - While not currently used, this environment variable is automatically set by cloud.gov and contains information about the running application such as memory/disk limits, space and instance IDs, and DNS info.
  • MAIL_ENGINE - Used in development. If this is set it will over-ride the usual 'nodemailer' mail engine. It is used for testing when sending actual email is not desirable.
  • JWT_SECRET - Not currently implemented - will be used to set the encryption secret used to sign JSON Web Tokens.

Documentation

Documentation for the srt-server is created from JSDoc tags embeded in the source code. You can find a pre-build copy in the the /docs directory of this repository. The documentaiton can be rebuilt from source when updats are necessary using npm run doc

Testing and Continuous Integration / Continuous Deployment

The srt-server application has a set of unit test in the server/tests directory. These can be run from the command line with npm run test Database connection are not mocked for the unit tests to ensure that data flows properly through the system and into the database.

A test database file can be found in srt-database-export.sql.gz. There is a database load process scripted in the npm run restore-db command. The package.json file has connection information coded directly into that command. When running this for the first time, that file will need to be updated to your local settings.

Continuous integration and Deployment is configured in the .circleci/config.yml file in the CircleCI format. The CI server will start a Postgres database and load it with test data before automatically running the unit tests.

A very brief Selenium IDE integration test can be found in the srt-client repository under test/SRT.side. The integration test is not run automatically by the CI server.

About

Server-side API for the Solicitation Review Tool

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 96.6%
  • Shell 3.4%