mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 02:11:11 -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 "
|
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 SQLALCHEMY_DATABASE_URI='postgresql://localhost/notification_api'
|
||||||
export STATSD_ENABLED=True
|
export SECRET_KEY='secret-key'
|
||||||
export STATSD_HOST="localhost"
|
export DANGEROUS_SALT='dangerous-salt'
|
||||||
export STATSD_PORT=1000
|
export NOTIFY_ENVIRONMENT="development"
|
||||||
export STATSD_PREFIX="stats-prefix"
|
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
|
"> environment.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ def create_app(app_name=None):
|
|||||||
|
|
||||||
from config import configs
|
from config import configs
|
||||||
application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])
|
application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])
|
||||||
|
|
||||||
if app_name:
|
if app_name:
|
||||||
application.config['NOTIFY_APP_NAME'] = app_name
|
application.config['NOTIFY_APP_NAME'] = app_name
|
||||||
|
|
||||||
|
|||||||
93
config.py
93
config.py
@@ -5,27 +5,57 @@ import os
|
|||||||
|
|
||||||
|
|
||||||
class Config(object):
|
class Config(object):
|
||||||
DEBUG = False
|
########################################
|
||||||
|
# Secrets that are held in credstash ###
|
||||||
|
########################################
|
||||||
|
|
||||||
|
# URL of admin app
|
||||||
ADMIN_BASE_URL = os.environ['ADMIN_BASE_URL']
|
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']
|
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']
|
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_APP_NAME = 'api'
|
||||||
NOTIFY_LOG_PATH = '/var/log/notify/application.log'
|
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_COMMIT_ON_TEARDOWN = False
|
||||||
SQLALCHEMY_DATABASE_URI = os.environ['SQLALCHEMY_DATABASE_URI']
|
|
||||||
SQLALCHEMY_RECORD_QUERIES = True
|
SQLALCHEMY_RECORD_QUERIES = True
|
||||||
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
||||||
NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN']
|
|
||||||
PAGE_SIZE = 50
|
PAGE_SIZE = 50
|
||||||
SMS_CHAR_COUNT_LIMIT = 495
|
SMS_CHAR_COUNT_LIMIT = 495
|
||||||
MMG_URL = os.environ['MMG_URL']
|
|
||||||
BRANDING_PATH = '/static/images/email-template/crests/'
|
BRANDING_PATH = '/static/images/email-template/crests/'
|
||||||
|
|
||||||
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
||||||
@@ -37,10 +67,10 @@ class Config(object):
|
|||||||
|
|
||||||
BROKER_URL = 'sqs://'
|
BROKER_URL = 'sqs://'
|
||||||
BROKER_TRANSPORT_OPTIONS = {
|
BROKER_TRANSPORT_OPTIONS = {
|
||||||
'region': 'eu-west-1',
|
'region': AWS_REGION,
|
||||||
'polling_interval': 1, # 1 second
|
'polling_interval': 1, # 1 second
|
||||||
'visibility_timeout': 14410, # 4 hours 10 seconds. 10 seconds longer than max retry
|
'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_ENABLE_UTC = True,
|
||||||
CELERY_TIMEZONE = 'Europe/London'
|
CELERY_TIMEZONE = 'Europe/London'
|
||||||
@@ -96,26 +126,27 @@ class Config(object):
|
|||||||
Queue('retry', Exchange('default'), routing_key='retry'),
|
Queue('retry', Exchange('default'), routing_key='retry'),
|
||||||
Queue('email-already-registered', Exchange('default'), routing_key='email-already-registered')
|
Queue('email-already-registered', Exchange('default'), routing_key='email-already-registered')
|
||||||
]
|
]
|
||||||
API_HOST_NAME = os.environ['API_HOST_NAME']
|
API_HOST_NAME = "http://localhost:6011"
|
||||||
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")
|
|
||||||
NOTIFICATIONS_ALERT = 5 # five mins
|
NOTIFICATIONS_ALERT = 5 # five mins
|
||||||
FROM_NUMBER = os.getenv('FROM_NUMBER')
|
FROM_NUMBER = 'development'
|
||||||
|
|
||||||
STATSD_ENABLED = False
|
STATSD_ENABLED = False
|
||||||
STATSD_HOST = "statsd.hostedgraphite.com"
|
STATSD_HOST = "statsd.hostedgraphite.com"
|
||||||
STATSD_PORT = 8125
|
STATSD_PORT = 8125
|
||||||
STATSD_PREFIX = None
|
|
||||||
|
|
||||||
SENDING_NOTIFICATIONS_TIMEOUT_PERIOD = 259200
|
SENDING_NOTIFICATIONS_TIMEOUT_PERIOD = 259200
|
||||||
|
|
||||||
|
|
||||||
|
######################
|
||||||
|
# Config overrides ###
|
||||||
|
######################
|
||||||
|
|
||||||
class Development(Config):
|
class Development(Config):
|
||||||
NOTIFY_ENVIRONMENT = 'development'
|
NOTIFY_EMAIL_DOMAIN = 'notify.tools'
|
||||||
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
|
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
|
||||||
|
NOTIFY_ENVIRONMENT = 'development'
|
||||||
|
NOTIFICATION_QUEUE_PREFIX = 'development'
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
SQLALCHEMY_ECHO = False
|
SQLALCHEMY_ECHO = False
|
||||||
CELERY_QUEUES = Config.CELERY_QUEUES + [
|
CELERY_QUEUES = Config.CELERY_QUEUES + [
|
||||||
@@ -127,10 +158,14 @@ class Development(Config):
|
|||||||
|
|
||||||
|
|
||||||
class Test(Config):
|
class Test(Config):
|
||||||
|
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
||||||
|
FROM_NUMBER = 'testing'
|
||||||
NOTIFY_ENVIRONMENT = 'test'
|
NOTIFY_ENVIRONMENT = 'test'
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload'
|
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 + [
|
CELERY_QUEUES = Config.CELERY_QUEUES + [
|
||||||
Queue('db-sms', Exchange('default'), routing_key='db-sms'),
|
Queue('db-sms', Exchange('default'), routing_key='db-sms'),
|
||||||
Queue('send-sms', Exchange('default'), routing_key='send-sms'),
|
Queue('send-sms', Exchange('default'), routing_key='send-sms'),
|
||||||
@@ -140,23 +175,29 @@ class Test(Config):
|
|||||||
|
|
||||||
|
|
||||||
class Preview(Config):
|
class Preview(Config):
|
||||||
|
NOTIFY_EMAIL_DOMAIN = 'notify.works'
|
||||||
NOTIFY_ENVIRONMENT = 'preview'
|
NOTIFY_ENVIRONMENT = 'preview'
|
||||||
CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload'
|
CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload'
|
||||||
STATSD_PREFIX = "preview"
|
API_HOST_NAME = 'http://admin-api.internal'
|
||||||
|
FROM_NUMBER = 'preview'
|
||||||
|
|
||||||
|
|
||||||
class Staging(Config):
|
class Staging(Config):
|
||||||
|
NOTIFY_EMAIL_DOMAIN = 'staging-notify.works'
|
||||||
NOTIFY_ENVIRONMENT = 'staging'
|
NOTIFY_ENVIRONMENT = 'staging'
|
||||||
CSV_UPLOAD_BUCKET_NAME = 'staging-notify-csv-upload'
|
CSV_UPLOAD_BUCKET_NAME = 'staging-notify-csv-upload'
|
||||||
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
|
|
||||||
STATSD_ENABLED = True
|
STATSD_ENABLED = True
|
||||||
|
API_HOST_NAME = 'http://admin-api.internal'
|
||||||
|
FROM_NUMBER = 'stage'
|
||||||
|
|
||||||
|
|
||||||
class Live(Config):
|
class Live(Config):
|
||||||
|
NOTIFY_EMAIL_DOMAIN = 'notifications.service.gov.uk'
|
||||||
NOTIFY_ENVIRONMENT = 'live'
|
NOTIFY_ENVIRONMENT = 'live'
|
||||||
CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload'
|
CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload'
|
||||||
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
|
|
||||||
STATSD_ENABLED = True
|
STATSD_ENABLED = True
|
||||||
|
API_HOST_NAME = 'http://admin-api.internal'
|
||||||
|
FROM_NUMBER = '40604'
|
||||||
|
|
||||||
|
|
||||||
configs = {
|
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 SQLALCHEMY_DATABASE_URI=${TEST_DATABASE:='postgresql://localhost/test_notification_api'}
|
||||||
export FIRETEXT_API_KEY="Firetext"
|
export SECRET_KEY='secret-key'
|
||||||
export NOTIFY_EMAIL_DOMAIN="test.notify.com"
|
export DANGEROUS_SALT='dangerous-salt'
|
||||||
export MMG_API_KEY='mmg-secret-key'
|
export NOTIFY_ENVIRONMENT='test'
|
||||||
export LOADTESTING_API_KEY="loadtesting"
|
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
|
||||||
export LOADTESTING_NUMBER="loadtesting"
|
export ADMIN_BASE_URL='http://localhost:6012'
|
||||||
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 FROM_NUMBER='from_number'
|
export FROM_NUMBER='from_number'
|
||||||
export MMG_URL="https://api.mmg.co.uk/json/api.php"
|
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['reqType'] == 'BULK'
|
||||||
assert request_args['MSISDN'] == to
|
assert request_args['MSISDN'] == to
|
||||||
assert request_args['msg'] == content
|
assert request_args['msg'] == content
|
||||||
assert request_args['sender'] == 'from_number'
|
assert request_args['sender'] == 'testing'
|
||||||
assert request_args['cid'] == reference
|
assert request_args['cid'] == reference
|
||||||
assert request_args['multi'] is True
|
assert request_args['multi'] is True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user