2016-01-25 13:20:20 +00:00

2016-01-28 11:51:52 +00:00
[](https://requires.io/github/alphagov/notifications-api/requirements/?branch=master)
2015-11-18 17:03:35 +00:00
2016-03-22 08:40:05 +00:00
[](https://github.com/alphagov/notifications-api/compare/staging...master?expand=1&title=Deploy%20to%20staging) [](https://github.com/alphagov/notifications-api/compare/live...staging?expand=1&title=Deploy%20to%20live)
2015-11-20 10:51:08 +00:00
# notifications-api
2015-11-18 13:58:21 +00:00
Notifications api
2015-11-20 10:51:08 +00:00
Application for the notification api.
Read and write notifications/status queue.
Get and update notification status.
2016-02-17 09:49:36 +00:00
## Setting Up
```
2016-01-25 13:20:20 +00:00
mkvirtualenv -p /usr/local/bin/python3 notifications-api
2016-02-17 09:49:36 +00:00
```
2016-02-16 15:25:46 +00:00
2016-08-24 15:00:09 +01:00
Creating the environment.sh file. Replace [unique-to-environment] with your something unique to the environment. Your AWS credentials should be set up for notify-tools (the development/CI AWS account).
2016-02-16 15:25:46 +00:00
2016-02-17 10:20:40 +00:00
Create a local environment.sh file containing the following:
2016-02-16 15:25:46 +00:00
```
2016-02-17 09:49:36 +00:00
echo "
2016-08-04 12:35:47 +01:00
export NOTIFY_ENVIRONMENT='development'
2016-02-29 13:21:12 +00:00
export ADMIN_BASE_URL='http://localhost:6012'
2016-02-17 10:20:40 +00:00
export ADMIN_CLIENT_USER_NAME='dev-notify-admin'
2016-08-24 15:00:09 +01:00
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
export API_HOST_NAME='http://localhost:6011'
2016-02-16 15:25:46 +00:00
export AWS_REGION='eu-west-1'
2016-08-24 15:00:09 +01:00
export AWS_ACCESS_KEY_ID=[MY ACCESS KEY]
export AWS_SECRET_ACCESS_KEY=[MY SECRET]
2016-02-17 10:20:40 +00:00
export DANGEROUS_SALT='dev-notify-salt'
2016-03-03 15:17:14 +00:00
export FIRETEXT_API_KEY=[contact team member for api key]
2016-08-24 15:00:09 +01:00
export FROM_NUMBER='40605'
export INVITATION_EMAIL_FROM='invites'
2016-02-29 13:21:12 +00:00
export INVITATION_EXPIRATION_DAYS=2
2016-08-24 15:00:09 +01:00
export MMG_API_KEY=mmg=secret-key
export MMG_URL="https://api.mmg.co.uk/json/api.php"
export NOTIFICATION_QUEUE_PREFIX='[unique-to-environment]' #
export NOTIFY_EMAIL_DOMAIN='notify.tools'
2016-02-17 10:20:40 +00:00
export SECRET_KEY='dev-notify-secret-key'
2016-04-26 14:16:01 +01:00
export SQLALCHEMY_DATABASE_URI='postgresql://localhost/notification_api'
2016-05-16 16:16:14 +01:00
export STATSD_ENABLED=True
export STATSD_HOST="localhost"
export STATSD_PORT=1000
export STATSD_PREFIX="stats-prefix"
2016-02-17 09:49:36 +00:00
"> environment.sh
```
2016-08-24 15:00:09 +01:00
NOTE: The SECRET_KEY and DANGEROUS_SALT should match those in the [notifications-admin ](https://github.com/alphagov/notifications-admin ) app.
2016-02-17 10:20:40 +00:00
NOTE: Also note the unique prefix for the queue names. This prevents clashing with others queues in shared amazon environment and using a prefix enables filtering by queue name in the SQS interface.
2016-02-23 12:28:10 +00:00
## To run the application
You need to run the api application and a local celery instance.
There are two run scripts for running all the necessary parts.
```
scripts/run_app.sh
```
```
scripts/run_celery.sh
```
2016-03-18 12:58:17 +00:00
```
scripts/run_celery_beat.sh
```
2016-05-11 15:52:49 +01:00
2016-08-24 14:30:46 +01:00
## To test the application
First, ensure that `scripts/boostrap.sh` has been run, as it creates the test database.
Then simply run
```
make test
```
That will run pep8 for code analysis and our unit test suite. If you wish to run our functional tests, instructions can be found in the
[notifications-functional-test ](https://github.com/alphagov/notifications-functional-test ) repository.
2016-05-11 15:52:49 +01:00
## To remove functional test data
NOTE: There is assumption that both the server name prefix and user name prefix are followed by a uuid.
The script will search for all services/users with that prefix and only remove it if the prefix is followed by a uuid otherwise it will be skipped.
Locally
```
python application.py purge_functional_test_data -u <functional tests user name prefix> # Remove the user and associated services.
```
On the server
```
python server_commands.py purge_functional_test_data -u <functional tests user name prefix> # Remove the user and associated services.
```