mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-06-05 22:10:44 -04:00
Check the uniqueness of the service name ignoring case.
When the service name changes the email_from changes to. Renamed find_all_service_names to find_all_service_names_lower.
This commit is contained in:
@@ -159,7 +159,7 @@ class AddServiceForm(Form):
|
||||
)
|
||||
|
||||
def validate_name(self, a):
|
||||
if a.data in self._names_func():
|
||||
if a.data.lower() in self._names_func():
|
||||
raise ValidationError('This service name is already in use')
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ def add_service():
|
||||
invite_api_client.accept_invite(service_id, invitation.id)
|
||||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||||
|
||||
form = AddServiceForm(service_api_client.find_all_service_names)
|
||||
form = AddServiceForm(service_api_client.find_all_service_names_lower)
|
||||
heading = 'Which service do you want to set up notifications for?'
|
||||
if form.validate_on_submit():
|
||||
session['service_name'] = form.name.data
|
||||
|
||||
@@ -39,7 +39,7 @@ def service_settings(service_id):
|
||||
def service_name_change(service_id):
|
||||
service = service_api_client.get_service(service_id)['data']
|
||||
|
||||
form = ServiceNameForm(service_api_client.find_all_service_names)
|
||||
form = ServiceNameForm(service_api_client.find_all_service_names_lower)
|
||||
|
||||
if form.validate_on_submit():
|
||||
session['service_name_change'] = form.name.data
|
||||
|
||||
@@ -142,7 +142,7 @@ class ServiceAPIClient(NotificationsAPIClient):
|
||||
endpoint = "/service/{0}/template/{1}".format(service_id, template_id)
|
||||
return self.delete(endpoint)
|
||||
|
||||
def find_all_service_names(self, user_id=None):
|
||||
def find_all_service_names_lower(self, user_id=None):
|
||||
resp = self.get_services(user_id)
|
||||
return [x['name'].lower() for x in resp['data']]
|
||||
|
||||
|
||||
@@ -10,8 +10,9 @@ class TestClient(FlaskClient):
|
||||
with self.session_transaction() as session:
|
||||
session['user_id'] = user.id
|
||||
session['_fresh'] = True
|
||||
if mocker and service:
|
||||
if mocker:
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
if mocker and service:
|
||||
mocker.patch('app.service_api_client.get_service', return_value={'data': service})
|
||||
login_user(user, remember=True)
|
||||
|
||||
|
||||
@@ -3,62 +3,57 @@ from flask import url_for
|
||||
|
||||
def test_get_should_render_add_service_template(app_,
|
||||
api_user_active,
|
||||
mock_login,
|
||||
mock_get_service,
|
||||
mock_get_services,
|
||||
mock_get_user_by_email):
|
||||
mocker):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
client.login(api_user_active, mocker)
|
||||
response = client.get(url_for('main.add_service'))
|
||||
assert response.status_code == 200
|
||||
assert 'Which service do you want to set up notifications for?' in response.get_data(as_text=True)
|
||||
|
||||
|
||||
def test_should_add_service_and_redirect_to_next_page(app_,
|
||||
mock_login,
|
||||
mocker,
|
||||
mock_create_service,
|
||||
mock_get_services,
|
||||
api_user_active):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
client.login(api_user_active, mocker)
|
||||
response = client.post(
|
||||
url_for('main.add_service'),
|
||||
data={'name': 'testing the post'})
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.service_dashboard', service_id=101, _external=True)
|
||||
assert mock_get_services.called
|
||||
mock_create_service.asset_called_once_with('testing the post', False,
|
||||
app_.config['DEFAULT_SERVICE_LIMIT'],
|
||||
True, api_user_active.id)
|
||||
|
||||
|
||||
def test_should_return_form_errors_when_service_name_is_empty(app_,
|
||||
api_user_active,
|
||||
mock_get_service,
|
||||
mock_get_services,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_login):
|
||||
mocker,
|
||||
api_user_active):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
client.login(api_user_active, mocker)
|
||||
response = client.post(url_for('main.add_service'), data={})
|
||||
assert response.status_code == 200
|
||||
assert 'Service name can’t be empty' in response.get_data(as_text=True)
|
||||
|
||||
|
||||
def test_should_return_form_errors_with_duplicate_service_name(app_,
|
||||
mock_login,
|
||||
mock_get_services,
|
||||
mock_get_user,
|
||||
api_user_active,
|
||||
mock_get_user_by_email):
|
||||
def test_should_return_form_errors_with_duplicate_service_name_regardless_of_case(app_,
|
||||
mocker,
|
||||
service_one,
|
||||
mock_get_services,
|
||||
api_user_active,
|
||||
mock_create_service):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.post(
|
||||
url_for('main.add_service'), data={'name': 'service_one'})
|
||||
client.login(api_user_active, mocker, service_one)
|
||||
response = client.post(url_for('main.add_service'), data={'name': 'SERVICE_TWO'})
|
||||
|
||||
assert response.status_code == 200
|
||||
assert 'This service name is already in use' in response.get_data(as_text=True)
|
||||
assert mock_get_services.called
|
||||
assert not mock_create_service.called
|
||||
|
||||
@@ -66,7 +66,7 @@ def test_should_not_allow_duplicate_names(app_,
|
||||
service_id = service_one['id']
|
||||
response = client.post(
|
||||
url_for('main.service_name_change', service_id=service_id),
|
||||
data={'name': "service_one"})
|
||||
data={'name': "SErvICE_TWO"})
|
||||
|
||||
assert response.status_code == 200
|
||||
resp_data = response.get_data(as_text=True)
|
||||
|
||||
Reference in New Issue
Block a user