make sure we convert strings to dates before we use them

fixes 500 on platform admin page
This commit is contained in:
Leo Hemsted
2017-01-31 16:12:46 +00:00
parent 3113f49271
commit cd47dbd36b
2 changed files with 40 additions and 3 deletions

View File

@@ -66,9 +66,12 @@ def get_services():
detailed = request.args.get('detailed') == 'True' detailed = request.args.get('detailed') == 'True'
user_id = request.args.get('user_id', None) user_id = request.args.get('user_id', None)
include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False' include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False'
# If start and end date are not set, we are expecting today's stats. # If start and end date are not set, we are expecting today's stats.
start_date = request.args.get('start_date', datetime.utcnow().date()) today = str(datetime.utcnow().date())
end_date = request.args.get('end_date', datetime.utcnow().date())
start_date = datetime.strptime(request.args.get('start_date', today), '%Y-%m-%d').date()
end_date = datetime.strptime(request.args.get('end_date', today), '%Y-%m-%d').date()
if user_id: if user_id:
services = dao_fetch_all_services_by_user(user_id, only_active) services = dao_fetch_all_services_by_user(user_id, only_active)

View File

@@ -1,6 +1,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta, date
import json import json
import uuid import uuid
from unittest.mock import ANY
import pytest import pytest
from flask import url_for from flask import url_for
@@ -1269,6 +1270,39 @@ def test_get_services_with_detailed_flag_excluding_from_test_key(notify_api, not
} }
def test_get_services_with_detailed_flag_accepts_date_range(client, mocker):
mock_get_detailed_services = mocker.patch('app.service.rest.get_detailed_services', return_value={})
resp = client.get(
url_for('service.get_services', detailed=True, start_date='2001-01-01', end_date='2002-02-02'),
headers=[create_authorization_header()]
)
mock_get_detailed_services.assert_called_once_with(
start_date=date(2001, 1, 1),
end_date=date(2002, 2, 2),
only_active=ANY,
include_from_test_key=ANY
)
assert resp.status_code == 200
@freeze_time('2002-02-02')
def test_get_services_with_detailed_flag_defaults_to_today(client, mocker):
mock_get_detailed_services = mocker.patch('app.service.rest.get_detailed_services', return_value={})
resp = client.get(
url_for('service.get_services', detailed=True),
headers=[create_authorization_header()]
)
mock_get_detailed_services.assert_called_once_with(
start_date=date(2002, 2, 2),
end_date=date(2002, 2, 2),
only_active=ANY,
include_from_test_key=ANY
)
assert resp.status_code == 200
def test_get_detailed_services_groups_by_service(notify_db, notify_db_session): def test_get_detailed_services_groups_by_service(notify_db, notify_db_session):
from app.service.rest import get_detailed_services from app.service.rest import get_detailed_services