Previously each navigation class had a list of endpoint to "exclude", which was only used in tests to ensure that all endpoints in the app were covered: either they are present in navigation, or excluded. However, over time the "exclude" lists have grown long and repetitive, and maintaining each of them individually adds extra work [1][2]. This switches to a more DRY approach, where the list of excluded endpoints is defined once, close to the single point of use in the test. Note the resulting test is _slightly_ less prescriptive, as it will now pass if an endpoint exist one in navigation, even if it should also exist in another. This seems a reasonable compromise. [1]: https://github.com/alphagov/notifications-admin/pull/3788/files#r572809972 [2]: https://github.com/alphagov/notifications-admin/pull/3794/files#diff-39387df3a9f89b313976957e7b5457be20deab1017b2d895541b142b957f1972
notifications-admin
GOV.UK Notify admin application - https://www.notifications.service.gov.uk/
- Register and manage users
- Create and manage services
- Send batch emails and SMS by uploading a CSV
- Show history of notifications
Setting up
Python version
At the moment we run Python 3.6 in production.
NPM packages
brew install node
NPM is Node's package management tool. n is a tool for managing different versions of Node. The following installs n and uses the long term support (LTS) version of Node.
npm install -g n
n lts
environment.sh
In the root directory of the application, run:
echo "
export NOTIFY_ENVIRONMENT='development'
export FLASK_APP=application.py
export FLASK_ENV=development
export WERKZEUG_DEBUG_PIN=off
"> environment.sh
AWS credentials
To run parts of the app, such as uploading letters, you will need appropriate AWS credentials. See the Wiki for more details.
To run the application
# install dependencies, etc.
make bootstrap
# run the web app
make run-flask
Then visit localhost:6012.
To test the application
# install dependencies, etc.
make bootstrap
make test
Common tasks
Updating application dependencies
requirements.txt is generated from the requirements.in in order to pin versions of all nested dependencies. If requirements.in has been changed, run make freeze-requirements to regenerate it.
Automatically rebuild the frontend assets
If you want the front end assets to re-compile on changes, leave this running in a separate terminal from the app
npm run watch