mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-20 22:39:43 -04:00
@@ -188,7 +188,7 @@ class Service(db.Model, Versioned):
|
|||||||
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
|
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
|
||||||
reply_to_email_address = db.Column(db.Text, index=False, unique=False, nullable=True)
|
reply_to_email_address = db.Column(db.Text, index=False, unique=False, nullable=True)
|
||||||
letter_contact_block = db.Column(db.Text, index=False, unique=False, nullable=True)
|
letter_contact_block = db.Column(db.Text, index=False, unique=False, nullable=True)
|
||||||
sms_sender = db.Column(db.String(11), nullable=True, default=lambda: current_app.config['FROM_NUMBER'])
|
sms_sender = db.Column(db.String(11), nullable=False, default=lambda: current_app.config['FROM_NUMBER'])
|
||||||
organisation_id = db.Column(UUID(as_uuid=True), db.ForeignKey('organisation.id'), index=True, nullable=True)
|
organisation_id = db.Column(UUID(as_uuid=True), db.ForeignKey('organisation.id'), index=True, nullable=True)
|
||||||
organisation = db.relationship('Organisation')
|
organisation = db.relationship('Organisation')
|
||||||
dvla_organisation_id = db.Column(
|
dvla_organisation_id = db.Column(
|
||||||
|
|||||||
25
migrations/versions/0086_govuk_sms_sender.py
Normal file
25
migrations/versions/0086_govuk_sms_sender.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: 0086_govuk_sms_sender
|
||||||
|
Revises: 0085_update_incoming_to_inbound
|
||||||
|
Create Date: 2017-05-22 13:46:09.584801
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '0086_govuk_sms_sender'
|
||||||
|
down_revision = '0085_update_incoming_to_inbound'
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.execute("UPDATE services SET sms_sender = 'GOVUK' where sms_sender is null")
|
||||||
|
op.execute("UPDATE services_history SET sms_sender = 'GOVUK' where sms_sender is null")
|
||||||
|
op.alter_column('services', 'sms_sender', nullable=False)
|
||||||
|
op.alter_column('services_history', 'sms_sender', nullable=False)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.alter_column('services_history', 'sms_sender', nullable=True)
|
||||||
|
op.alter_column('services', 'sms_sender', nullable=True)
|
||||||
@@ -627,7 +627,6 @@ def test_should_set_international_phone_number_to_sent_status(
|
|||||||
# if 40604 is actually in DB then treat that as if entered manually
|
# if 40604 is actually in DB then treat that as if entered manually
|
||||||
('40604', '40604', 'bar'),
|
('40604', '40604', 'bar'),
|
||||||
# 'testing' is the FROM_NUMBER during unit tests
|
# 'testing' is the FROM_NUMBER during unit tests
|
||||||
(None, 'testing', 'Sample service: bar'),
|
|
||||||
('testing', 'testing', 'Sample service: bar'),
|
('testing', 'testing', 'Sample service: bar'),
|
||||||
])
|
])
|
||||||
def test_should_handle_sms_sender_and_prefix_message(
|
def test_should_handle_sms_sender_and_prefix_message(
|
||||||
|
|||||||
@@ -1130,61 +1130,57 @@ def test_get_only_api_created_notifications_for_service(
|
|||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
def test_set_sms_sender_for_service(notify_api, sample_service):
|
def test_set_sms_sender_for_service(client, sample_service):
|
||||||
with notify_api.test_request_context():
|
data = {
|
||||||
with notify_api.test_client() as client:
|
'sms_sender': 'elevenchars',
|
||||||
auth_header = create_authorization_header()
|
}
|
||||||
resp = client.get(
|
|
||||||
'/service/{}'.format(sample_service.id),
|
|
||||||
headers=[auth_header]
|
|
||||||
)
|
|
||||||
json_resp = json.loads(resp.get_data(as_text=True))
|
|
||||||
assert resp.status_code == 200
|
|
||||||
assert json_resp['data']['name'] == sample_service.name
|
|
||||||
|
|
||||||
data = {
|
auth_header = create_authorization_header()
|
||||||
'sms_sender': 'elevenchars',
|
|
||||||
}
|
|
||||||
|
|
||||||
auth_header = create_authorization_header()
|
resp = client.post(
|
||||||
|
'/service/{}'.format(sample_service.id),
|
||||||
resp = client.post(
|
data=json.dumps(data),
|
||||||
'/service/{}'.format(sample_service.id),
|
headers=[('Content-Type', 'application/json'), auth_header]
|
||||||
data=json.dumps(data),
|
)
|
||||||
headers=[('Content-Type', 'application/json'), auth_header]
|
result = json.loads(resp.get_data(as_text=True))
|
||||||
)
|
assert resp.status_code == 200
|
||||||
result = json.loads(resp.get_data(as_text=True))
|
assert result['data']['sms_sender'] == 'elevenchars'
|
||||||
assert resp.status_code == 200
|
|
||||||
assert result['data']['sms_sender'] == 'elevenchars'
|
|
||||||
|
|
||||||
|
|
||||||
def test_set_sms_sender_for_service_rejects_invalid_characters(notify_api, sample_service):
|
def test_set_sms_sender_for_service_rejects_invalid_characters(client, sample_service):
|
||||||
with notify_api.test_request_context():
|
data = {
|
||||||
with notify_api.test_client() as client:
|
'sms_sender': 'invalid####',
|
||||||
auth_header = create_authorization_header()
|
}
|
||||||
resp = client.get(
|
|
||||||
'/service/{}'.format(sample_service.id),
|
|
||||||
headers=[auth_header]
|
|
||||||
)
|
|
||||||
json_resp = json.loads(resp.get_data(as_text=True))
|
|
||||||
assert resp.status_code == 200
|
|
||||||
assert json_resp['data']['name'] == sample_service.name
|
|
||||||
|
|
||||||
data = {
|
auth_header = create_authorization_header()
|
||||||
'sms_sender': 'invalid####',
|
|
||||||
}
|
|
||||||
|
|
||||||
auth_header = create_authorization_header()
|
resp = client.post(
|
||||||
|
'/service/{}'.format(sample_service.id),
|
||||||
|
data=json.dumps(data),
|
||||||
|
headers=[('Content-Type', 'application/json'), auth_header]
|
||||||
|
)
|
||||||
|
result = json.loads(resp.get_data(as_text=True))
|
||||||
|
assert resp.status_code == 400
|
||||||
|
assert result['result'] == 'error'
|
||||||
|
assert result['message'] == {'sms_sender': ['Only alphanumeric characters allowed']}
|
||||||
|
|
||||||
resp = client.post(
|
|
||||||
'/service/{}'.format(sample_service.id),
|
def test_set_sms_sender_for_service_rejects_null(client, sample_service):
|
||||||
data=json.dumps(data),
|
data = {
|
||||||
headers=[('Content-Type', 'application/json'), auth_header]
|
'sms_sender': None,
|
||||||
)
|
}
|
||||||
result = json.loads(resp.get_data(as_text=True))
|
|
||||||
assert resp.status_code == 400
|
auth_header = create_authorization_header()
|
||||||
assert result['result'] == 'error'
|
|
||||||
assert result['message'] == {'sms_sender': ['Only alphanumeric characters allowed']}
|
resp = client.post(
|
||||||
|
'/service/{}'.format(sample_service.id),
|
||||||
|
data=json.dumps(data),
|
||||||
|
headers=[('Content-Type', 'application/json'), auth_header]
|
||||||
|
)
|
||||||
|
result = json.loads(resp.get_data(as_text=True))
|
||||||
|
assert resp.status_code == 400
|
||||||
|
assert result['result'] == 'error'
|
||||||
|
assert result['message'] == {'sms_sender': ['Field may not be null.']}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('today_only,stats', [
|
@pytest.mark.parametrize('today_only,stats', [
|
||||||
|
|||||||
Reference in New Issue
Block a user