mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-31 23:26:23 -05:00
Merge branch 'master' into write-to-postgres-not-sqs
This commit is contained in:
36
README.md
36
README.md
@@ -20,31 +20,19 @@ Create a local environment.sh file containing the following:
|
||||
|
||||
```
|
||||
echo "
|
||||
export NOTIFY_ENVIRONMENT='development'
|
||||
export ADMIN_BASE_URL='http://localhost:6012'
|
||||
export ADMIN_CLIENT_USER_NAME='dev-notify-admin'
|
||||
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
|
||||
export API_HOST_NAME='http://localhost:6011'
|
||||
|
||||
export AWS_REGION='eu-west-1'
|
||||
export AWS_ACCESS_KEY_ID=[MY ACCESS KEY]
|
||||
export AWS_SECRET_ACCESS_KEY=[MY SECRET]
|
||||
|
||||
export DANGEROUS_SALT='dev-notify-salt'
|
||||
export FIRETEXT_API_KEY=[contact team member for api key]
|
||||
export FROM_NUMBER='40605'
|
||||
export INVITATION_EMAIL_FROM='invites'
|
||||
export INVITATION_EXPIRATION_DAYS=2
|
||||
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'
|
||||
export SECRET_KEY='dev-notify-secret-key'
|
||||
export SQLALCHEMY_DATABASE_URI='postgresql://localhost/notification_api'
|
||||
export STATSD_ENABLED=True
|
||||
export STATSD_HOST="localhost"
|
||||
export STATSD_PORT=1000
|
||||
export STATSD_PREFIX="stats-prefix"
|
||||
export SECRET_KEY='secret-key'
|
||||
export DANGEROUS_SALT='dangerous-salt'
|
||||
export NOTIFY_ENVIRONMENT="development"
|
||||
export ADMIN_CLIENT_SECRET='notify-secret-key'
|
||||
export ADMIN_BASE_URL='http://localhost:6012'
|
||||
export FROM_NUMBER='development'
|
||||
export MMG_URL="https://api.mmg.co.uk/json/api.php"
|
||||
export MMG_API_KEY='MMG_API_KEY'
|
||||
export LOADTESTING_API_KEY="FIRETEXT_SIMULATION_KEY"
|
||||
export FIRETEXT_API_KEY="FIRETEXT_ACTUAL_KEY"
|
||||
export STATSD_PREFIX="FAKE_PREFIX"
|
||||
export NOTIFICATION_QUEUE_PREFIX="PREFIX-TO-IDENTIFY-SQS-QUEUE"
|
||||
"> environment.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ def create_app(app_name=None):
|
||||
|
||||
from config import configs
|
||||
application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])
|
||||
|
||||
if app_name:
|
||||
application.config['NOTIFY_APP_NAME'] = app_name
|
||||
|
||||
|
||||
93
config.py
93
config.py
@@ -5,27 +5,57 @@ import os
|
||||
|
||||
|
||||
class Config(object):
|
||||
DEBUG = False
|
||||
########################################
|
||||
# Secrets that are held in credstash ###
|
||||
########################################
|
||||
|
||||
# URL of admin app
|
||||
ADMIN_BASE_URL = os.environ['ADMIN_BASE_URL']
|
||||
ADMIN_CLIENT_USER_NAME = os.environ['ADMIN_CLIENT_USER_NAME']
|
||||
|
||||
# admin app api key
|
||||
ADMIN_CLIENT_SECRET = os.environ['ADMIN_CLIENT_SECRET']
|
||||
AWS_REGION = os.environ['AWS_REGION']
|
||||
|
||||
# encyption secret/salt
|
||||
SECRET_KEY = os.environ['SECRET_KEY']
|
||||
DANGEROUS_SALT = os.environ['DANGEROUS_SALT']
|
||||
INVITATION_EXPIRATION_DAYS = int(os.environ['INVITATION_EXPIRATION_DAYS'])
|
||||
INVITATION_EMAIL_FROM = os.environ['INVITATION_EMAIL_FROM']
|
||||
|
||||
# DB conection string
|
||||
SQLALCHEMY_DATABASE_URI = os.environ['SQLALCHEMY_DATABASE_URI']
|
||||
|
||||
# MMG API Url
|
||||
MMG_URL = os.environ['MMG_URL']
|
||||
|
||||
# MMG API Key
|
||||
MMG_API_KEY = os.environ['MMG_API_KEY']
|
||||
|
||||
# Firetext API Key
|
||||
FIRETEXT_API_KEY = os.getenv("FIRETEXT_API_KEY")
|
||||
|
||||
# Firetext simluation key
|
||||
LOADTESTING_API_KEY = os.getenv("LOADTESTING_API_KEY")
|
||||
|
||||
# Hosted graphite statsd prefix
|
||||
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
|
||||
|
||||
# Prefix to identify queues in SQS
|
||||
NOTIFICATION_QUEUE_PREFIX = os.getenv('NOTIFICATION_QUEUE_PREFIX')
|
||||
|
||||
###########################
|
||||
# Default config values ###
|
||||
###########################
|
||||
|
||||
DEBUG = False
|
||||
NOTIFY_ENVIRONMENT = 'development'
|
||||
ADMIN_CLIENT_USER_NAME = 'notify-admin'
|
||||
AWS_REGION = 'eu-west-1'
|
||||
INVITATION_EXPIRATION_DAYS = 2
|
||||
NOTIFY_APP_NAME = 'api'
|
||||
NOTIFY_LOG_PATH = '/var/log/notify/application.log'
|
||||
# Notification Queue names are a combination of a prefix plus a name
|
||||
NOTIFICATION_QUEUE_PREFIX = os.environ['NOTIFICATION_QUEUE_PREFIX']
|
||||
SECRET_KEY = os.environ['SECRET_KEY']
|
||||
SQLALCHEMY_COMMIT_ON_TEARDOWN = False
|
||||
SQLALCHEMY_DATABASE_URI = os.environ['SQLALCHEMY_DATABASE_URI']
|
||||
SQLALCHEMY_RECORD_QUERIES = True
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
||||
NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN']
|
||||
PAGE_SIZE = 50
|
||||
SMS_CHAR_COUNT_LIMIT = 495
|
||||
MMG_URL = os.environ['MMG_URL']
|
||||
BRANDING_PATH = '/static/images/email-template/crests/'
|
||||
|
||||
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
||||
@@ -37,10 +67,10 @@ class Config(object):
|
||||
|
||||
BROKER_URL = 'sqs://'
|
||||
BROKER_TRANSPORT_OPTIONS = {
|
||||
'region': 'eu-west-1',
|
||||
'region': AWS_REGION,
|
||||
'polling_interval': 1, # 1 second
|
||||
'visibility_timeout': 14410, # 4 hours 10 seconds. 10 seconds longer than max retry
|
||||
'queue_name_prefix': os.environ['NOTIFICATION_QUEUE_PREFIX'] + '-'
|
||||
'queue_name_prefix': NOTIFICATION_QUEUE_PREFIX
|
||||
}
|
||||
CELERY_ENABLE_UTC = True,
|
||||
CELERY_TIMEZONE = 'Europe/London'
|
||||
@@ -96,26 +126,27 @@ class Config(object):
|
||||
Queue('retry', Exchange('default'), routing_key='retry'),
|
||||
Queue('email-already-registered', Exchange('default'), routing_key='email-already-registered')
|
||||
]
|
||||
API_HOST_NAME = os.environ['API_HOST_NAME']
|
||||
MMG_API_KEY = os.environ['MMG_API_KEY']
|
||||
FIRETEXT_API_KEY = os.getenv("FIRETEXT_API_KEY")
|
||||
LOADTESTING_NUMBER = os.getenv('LOADTESTING_NUMBER')
|
||||
LOADTESTING_API_KEY = os.getenv("LOADTESTING_API_KEY")
|
||||
CSV_UPLOAD_BUCKET_NAME = os.getenv("CSV_UPLOAD_BUCKET_NAME")
|
||||
API_HOST_NAME = "http://localhost:6011"
|
||||
|
||||
NOTIFICATIONS_ALERT = 5 # five mins
|
||||
FROM_NUMBER = os.getenv('FROM_NUMBER')
|
||||
FROM_NUMBER = 'development'
|
||||
|
||||
STATSD_ENABLED = False
|
||||
STATSD_HOST = "statsd.hostedgraphite.com"
|
||||
STATSD_PORT = 8125
|
||||
STATSD_PREFIX = None
|
||||
|
||||
SENDING_NOTIFICATIONS_TIMEOUT_PERIOD = 259200
|
||||
|
||||
|
||||
######################
|
||||
# Config overrides ###
|
||||
######################
|
||||
|
||||
class Development(Config):
|
||||
NOTIFY_ENVIRONMENT = 'development'
|
||||
NOTIFY_EMAIL_DOMAIN = 'notify.tools'
|
||||
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
|
||||
NOTIFY_ENVIRONMENT = 'development'
|
||||
NOTIFICATION_QUEUE_PREFIX = 'development'
|
||||
DEBUG = True
|
||||
SQLALCHEMY_ECHO = False
|
||||
CELERY_QUEUES = Config.CELERY_QUEUES + [
|
||||
@@ -127,10 +158,14 @@ class Development(Config):
|
||||
|
||||
|
||||
class Test(Config):
|
||||
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
||||
FROM_NUMBER = 'testing'
|
||||
NOTIFY_ENVIRONMENT = 'test'
|
||||
DEBUG = True
|
||||
CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload'
|
||||
STATSD_PREFIX = "test"
|
||||
STATSD_ENABLED = True
|
||||
STATSD_HOST = "localhost"
|
||||
STATSD_PORT = 1000
|
||||
CELERY_QUEUES = Config.CELERY_QUEUES + [
|
||||
Queue('db-sms', Exchange('default'), routing_key='db-sms'),
|
||||
Queue('send-sms', Exchange('default'), routing_key='send-sms'),
|
||||
@@ -140,23 +175,29 @@ class Test(Config):
|
||||
|
||||
|
||||
class Preview(Config):
|
||||
NOTIFY_EMAIL_DOMAIN = 'notify.works'
|
||||
NOTIFY_ENVIRONMENT = 'preview'
|
||||
CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload'
|
||||
STATSD_PREFIX = "preview"
|
||||
API_HOST_NAME = 'http://admin-api.internal'
|
||||
FROM_NUMBER = 'preview'
|
||||
|
||||
|
||||
class Staging(Config):
|
||||
NOTIFY_EMAIL_DOMAIN = 'staging-notify.works'
|
||||
NOTIFY_ENVIRONMENT = 'staging'
|
||||
CSV_UPLOAD_BUCKET_NAME = 'staging-notify-csv-upload'
|
||||
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
|
||||
STATSD_ENABLED = True
|
||||
API_HOST_NAME = 'http://admin-api.internal'
|
||||
FROM_NUMBER = 'stage'
|
||||
|
||||
|
||||
class Live(Config):
|
||||
NOTIFY_EMAIL_DOMAIN = 'notifications.service.gov.uk'
|
||||
NOTIFY_ENVIRONMENT = 'live'
|
||||
CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload'
|
||||
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
|
||||
STATSD_ENABLED = True
|
||||
API_HOST_NAME = 'http://admin-api.internal'
|
||||
FROM_NUMBER = '40604'
|
||||
|
||||
|
||||
configs = {
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
#!/bin/bash
|
||||
export NOTIFY_ENVIRONMENT='test'
|
||||
export ADMIN_BASE_URL='http://localhost:6012'
|
||||
export ADMIN_CLIENT_USER_NAME='dev-notify-admin'
|
||||
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
|
||||
export AWS_REGION='eu-west-1'
|
||||
export DANGEROUS_SALT='dangerous-salt'
|
||||
export INVITATION_EMAIL_FROM='invites'
|
||||
export INVITATION_EXPIRATION_DAYS=2
|
||||
export NOTIFICATION_QUEUE_PREFIX='test-env-not-used'
|
||||
export SECRET_KEY='secret-key'
|
||||
export SQLALCHEMY_DATABASE_URI=${TEST_DATABASE:='postgresql://localhost/test_notification_api'}
|
||||
export FIRETEXT_API_KEY="Firetext"
|
||||
export NOTIFY_EMAIL_DOMAIN="test.notify.com"
|
||||
export MMG_API_KEY='mmg-secret-key'
|
||||
export LOADTESTING_API_KEY="loadtesting"
|
||||
export LOADTESTING_NUMBER="loadtesting"
|
||||
export STATSD_ENABLED=True
|
||||
export STATSD_HOST="localhost"
|
||||
export STATSD_PORT=1000
|
||||
export STATSD_PREFIX="stats-prefix"
|
||||
export API_HOST_NAME="http://localhost:6011"
|
||||
export SECRET_KEY='secret-key'
|
||||
export DANGEROUS_SALT='dangerous-salt'
|
||||
export NOTIFY_ENVIRONMENT='test'
|
||||
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
|
||||
export ADMIN_BASE_URL='http://localhost:6012'
|
||||
export FROM_NUMBER='from_number'
|
||||
export MMG_URL="https://api.mmg.co.uk/json/api.php"
|
||||
export MMG_API_KEY='mmg-secret-key'
|
||||
export LOADTESTING_API_KEY="loadtesting"
|
||||
export FIRETEXT_API_KEY="Firetext"
|
||||
export STATSD_PREFIX="stats-prefix"
|
||||
export NOTIFICATION_QUEUE_PREFIX='testing'
|
||||
|
||||
@@ -60,7 +60,7 @@ def test_send_sms_calls_mmg_correctly(notify_api, mocker):
|
||||
assert request_args['reqType'] == 'BULK'
|
||||
assert request_args['MSISDN'] == to
|
||||
assert request_args['msg'] == content
|
||||
assert request_args['sender'] == 'from_number'
|
||||
assert request_args['sender'] == 'testing'
|
||||
assert request_args['cid'] == reference
|
||||
assert request_args['multi'] is True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user